字体功能的设置:什么是正确的语法?(font-feature-settings: What is t

2019-07-20 18:53发布

我购买了支持一些开放型特征的web字体,当然我想使用它们。
不幸的是,我没能找到一个源网络,说明使用的语法最好的办法-这在我看来, font-feature-settings是前缀地狱的另一个例子。

目前,我把它写成这样的,但我不知道它是否真的涉及支持这些功能的所有浏览器。

.element {
    -webkit-font-feature-settings: "kern" 1, "liga" 1, "case" 1;
       -moz-font-feature-settings: "kern=1", "liga=1", "case=1";
       -moz-font-feature-settings: "kern" on, "liga" on, "case" on;
        -ms-font-feature-settings: "kern" 1, "liga" 1, "case";
         -o-font-feature-settings: "kern", "liga", "case";
            font-feature-settings: "kern", "liga", "case";
}

更具体地说, -moz语法似乎很奇怪。 有些来源要求,这是所使用的语法:

-moz-font-feature-settings: "liga=1";  /* Firefox 14 and before */
-moz-font-feature-settings: "liga" on; /* Firefox 15 */

其他人这样做只是这样的:

-moz-font-feature-settings: "cswh=1";
-moz-font-feature-settings: "cswh";

这同样适用于-webkit ; 一些写这样的:

-webkit-font-feature-settings: "liga" on, "dlig" on;

而另一些人不喜欢这样写道:

-webkit-font-feature-settings: "liga", "dlig";

或者是这样的:

-webkit-font-feature-settings: "liga" 1, "dlig" 1;  

和顶部,也有text-rendering: optimizelegibility; 这似乎是一样的"kern""liga" ,在WebKit浏览器,至少。

那么,什么是在2013年在Web上使用开放式字体功能的正确,防弹呢?

Answer 1:

那么,最好的地方去寻找2013的网络功能应该工作怎么会是W3 CSS3规格 :

如果存在的话,一个值指示用于图形选择的索引。 的值必须是0或更大。 值为0指示该特征被禁用。 布尔特征,1的值使功能。 对于非布尔特征的1或更大的值启用所述特征和指示特征选择索引。 的“开”的值是1和“断开”同义是0。如果省略了值,则假定值1同义。

这意味着, "liga" 1"liga" onliga都做同样的事情。

作为BoltClock在他对这个问题发表评论时提及, "feature=value"是无效的语法,似乎是专门针对Firefox的东西。

歌剧和IE(<10) 不支持font-feature-settings在所有的,所以-o-*-ms-*属性是可能没用。

总体而言,当前所有支持的浏览器工作的语法似乎是:

.element {
    -webkit-font-feature-settings: "kern", "liga", "case"; /* No variation */
       -moz-font-feature-settings: "kern=1", "liga=1", "case=1"; /* Firefox 4.0 to 14.0 */
       -moz-font-feature-settings: "kern", "liga" , "case"; /* Firefox 15.0 onwards */
       -moz-font-feature-settings: "kern" 1, "liga" 1, "case" 1; /* Firefox 15.0 onwards explicitly set feature values */
            font-feature-settings: "kern", "liga", "case"; /* No variation */
}


Answer 2:

http://hacks.mozilla.org/2010/11/firefox-4-font-feature-support/很可能是开始,还有一个好地方规范本身 。

还应当指出的是,你不会得到使用在这个意义上字体的功能,它会在所有浏览器中运行的完全防弹的方式。 据caniuse ,字体功能有一种粗略的支持(什么都在Opera,没有之前IE10,没有在大部分的移动浏览器,部分在什么是左前缀的),部分原因是它仍然是“工作草稿”状态,这意味着仍然有机会,它会改变。 因此,这将是一个好主意,不依赖于这个功能相当,但,并期望它只是不会工作在所有浏览器。

在另一方面,既然你提到“前缀地狱”(这实际上是不坏-前缀是指随着时间的推移被丢弃;你可知道,你不再需要前缀在所有的border-radius ,除非你坚持真正支持古老的浏览器) - 你可能要考虑的CSS预处理器,如小于或萨斯之一。 这些工具可以通过将在前缀和你正确的语法帮助你的新锐CSS,而你保持清洁水源与遵循W3C标准的声明。



文章来源: font-feature-settings: What is the correct syntax?