【问题标题】:Does font-size affect the rendering of ligatures?字体大小会影响连字的呈现吗?
【发布时间】:2012-08-27 05:58:38
【问题描述】:
Gecko 和 Webkit 浏览器支持通过 text-rendering: optimizeLegibility 呈现连字 ff fi fl ffl(字体必须有连字,例如 Calibri)。
MDN page 说,只有大小为 20 像素或更大的文本才会得到连字。根据my own research,这不是真的:
- Firefox 将默认呈现连字;
- 如果您指定
text-rendering: optimizeLegibility,Chrome(和 Safari)将呈现连字;
-
两个引擎似乎都不介意字体大小。
我在这里遗漏了什么吗?或者它只是 MDN 页面上的一个错误(过时?),我们应该修复它?
[编辑] 附加阅读:Smashing Magazine's “A Closer Look At Font Rendering”.
【问题讨论】:
标签:
css
webkit
gecko
text-rendering
ligature
【解决方案1】:
您的分析是正确的。一些额外的观察:
显然CSS3 Fonts中描述的font-variant-ligatures属性还没有实现。相反,Firefox 实现了低级 font-feature-settings 属性,前缀为 -moz-,因此您实际上可以通过设置阻止 Firefox 应用连字
-moz-font-feature-settings: 'liga' 0
在一个元素上。
如果您希望防止在特定情况下出现连字,您可以在可能会连字的字符之间插入零宽度非连接符 (ZWNJ),例如f‌i 而不是 fi。
【解决方案2】:
Firefox 支持首选项browser.display.auto_quality_min_font_size,允许您调整它用来决定是否选择其字体呈现路径的值。然而,在当前版本的 Firefox 中,唯一仍然支持这一点的代码部分是在 Windows XP 上,其中小字体或显式 text-rendering: optimizeSpeed 将使用 GDI 而不是 Uniscribe 呈现。
请注意,Thunderbird 出于某种原因将该首选项的值设置为零。
【解决方案3】:
实际上,MDN 页面说 20 像素或更高的文本会以任何一种方式获得连字,而 optimizeLegibility 会覆盖它。
更一般地说,使用连字是否值得(以及影响易读性的其他因素,例如任何两个特定字形之间的特定字距调整)不仅因大小而异,而且因字体而异。我不会惊讶地发现这种变化随着版本的变化很快。当然,底层技术并没有停滞不前。