font-size会影响连字的渲染吗?

时间:2012-09-01 22:25:54

标签: css webkit gecko text-rendering ligature

Gecko和Webkit浏览器支持通过text-rendering: optimizeLegibility渲染连线ff fi fl ffl(字体必须有连字,例如Calibri)。

MDN page说,只有大小为20px及更高的文本才能获得连字。根据{{​​3}},这不是真的:

  • Firefox默认会渲染连字;
  • 如果您指定text-rendering: optimizeLegibility;
  • ,则Chrome(& Safari)将呈现连字
  • 两个引擎似乎都不介意字体大小

我在这里遗漏了什么吗?或者这只是MDN页面上的一个错误(过时?),我们应该修复它吗?

[edit]补充阅读:Smashing Magazine的my own research

3 个答案:

答案 0 :(得分:4)

Firefox支持首选项browser.display.auto_quality_min_font_size,它允许您调整用于决定是否选择其字体呈现路径的值。然而,在当前版本的Firefox中仍然很受欢迎的代码的唯一部分是在Windows XP上,其中小字体或显式text-rendering: optimizeSpeed将使用GDI而不是Uniscribe呈现。

请注意,Thunderbird出于某种原因将该首选项的值设置为零。

答案 1 :(得分:2)

实际上,MDN页面说20px或更高版本的文本将以任一方式获得连字,并且optimizeLegibility会覆盖它。

更一般地说,使用连字是否值得(以及影响易读性的其他因素,例如任何两个特定字形之间的特定字距),不仅因大小而且因字体而异。通过版本发现这种变化非常快,我不会感到惊讶。当然,潜在的技术并没有停滞不前。

答案 2 :(得分:2)

您的分析是正确的。一些额外的观察:

显然CSS3 Fonts中描述的font-variant-ligatures属性尚未实现。相反,Firefox实现了低级font-feature-settings属性,前缀为-moz-,因此您可以通过设置

来实际阻止Firefox应用连字
-moz-font-feature-settings: 'liga' 0

在元素上。

如果您希望在特定事件中防止连字,您可以在字符之间插入ZERO-WIDTH NON-JOINER(ZWNJ),否则可能会被绑定,例如f‌i代替fi