我将各种样式的字体对象分组到数组中。每个字体对象都有一个属性 sub_family,它可以是 Regular、Italic、Bold、Bold Italic(或某些变体,例如 Italic 有时称为 Oblique)。当它们从数据库中出来时,它们是随机顺序的,需要按上述排序;常规总是第一个,斜体第二个,等等。
这是我正在使用的排序功能,它有效,但我想看看你们是否能想出更好/替代的解决方案:
// input: ["Bold Italic", "Regular", "Bold", "Italic"]
sortFont = function(a, b) {
// regular
if (/^([Rr]egular|[Nn]ormal)$/.test(a.sub_family)) { return -1; }
if (/^([Rr]egular|[Nn]ormal)$/.test(b.sub_family)) { return 1; }
// italic
if (/^([Ii]talic|[Ii]nclined|[Ii]t|[Oo]blique|[Oo]bl)$/.test(a.sub_family)) { return -1; }
if (/^([Ii]talic|[Ii]nclined|[Ii]t|[Oo]blique|[Oo]bl)$/.test(b.sub_family)) { return 1; }
// bold
if (/^([Bb]old|[Bb]d)$/.test(a.sub_family)) { return -1; }
if (/^([Bb]old|[Bb]d)$/.test(b.sub_family)) { return 1; }
}
// output: ["Regular", "Italic", "Bold", "Bold Italic"]
谢谢!:)