如何在Firefox中修复TTF字体的连字(tt,ti,fi,ff等)?

对于某些Windows字体,存在显示问题,其中连字字距似乎翻转并使两个字母变为粗体。 以下是在Firefox中使用Helvetica的电子邮件的屏幕截图:

在此处输入图像描述

正如你所看到的,它似乎是关于交叉字符( tf )相互连接的方式和像i这样的字母。

我已经有很长一段时间(在多个系统上)遇到这个问题,并想知道是否有人曾经看到类似的问题突然出现并找到了修复它们的方法。

注意:我认为这只会影响Firefox。 Chrome和LibreOffice都很好。

另一个适用于所有应用程序的解决方案,包括Libre Office,由aldeby提供 :

编辑或创建文件~/.fonts.conf并将此代码粘贴到其中:

   false   

确保保持XML结构。

再次注销,Calibri(可能还有一些其他字体)看起来会好得多(实际上甚至比这里给出的其他答案更好,因为丑陋的位图替换被完全禁用)。

禁用连字 (参见Calimo的fonts.conf答案 ) 是错误的方向! 它可以删除像Calibri这样的字体中那些过于混淆的“粗体”连字,但它也消除了一些排版的美感。 这与收缩字体非常相似,直到你无法分辨出来。

我通过删除Calibri字体解决了这个问题,安装了Carlito ,这是“与Calibri 兼容的度量标准 ”,并打包了“fontconfig(local.conf)的映射条目”,并刷新了我的字体缓存:

 $ rm ~/.fonts/microsoft/CALIBRI* $ sudo apt install fonts-crosextra-carlito $ fc-cache 

然后,您可以validationCarlito代表Calibri:

 $ fc-match Calibri Carlito-Regular.ttf: "Carlito" "Regular" 

在删除Microsoft的Calibri之前,我在LibreOffice中保存了一个测试文档,该文档使用了Calibri并进行了屏幕截图。 在这之后,我退出LibreOffice,再次打开它,然后加载我的测试文档。 “Calibri”字体名称用斜体表示它已被替换。 我拍下了这个替代版本的屏幕截图并将其粘贴在原始版本下方:

Calibri测试

上面的文字是13pt Calibri的一对屏幕截图,微软的Calibri高于Carlito,与fontconfig匹配。 LibreOffice 5.0.5.1所呈现的没有粗体,没有格式化,“对字距调整”已启用。

Carlito非常接近Calibri,连线正确渲染,整体更漂亮。

您可以使用fonts-crosextra-caladea对Caladea for Cambria进行fonts-crosextra-caladea ,您可以使用Google的Croscore字体 Arimo,Tinos和Cousine为Arial , Times New Roman和Courier New使用fonts-croscore 。 在Debian 代替Calibri和Cambria Fonts wiki了解更多信息。

但是Helvetica呢?

这个问题询问了Helvetica字体,这是Apple首选的sans-serif字体。 在更改为Calibri之前,Microsoft首选Arial 。 默认的Linux映射因分布而异,但通常是Nimbus Sans L或者Liberation Sans ,例如

 $ fc-match Helvetica n019003l.pfb: "Nimbus Sans L" "Regular" 

如果你运行它并获得Arial,这是上面描述的连字问题的一个很好的理由 – Arial不是一个很棒的字体。

Helvetica有着相当的文化,我找不到与Helvetica完全度量兼容的字体。 Arial(以及与Arial完全兼容的字体,包括Liberation Sans及其fork, Arimo ,具有相同的字符宽度(这意味着它们“主要”与度量兼容;文本将以与Helvetica相同的方式包装)。在免费字体中,解放Sans和Nimbus Sans 似乎拥有最相似的美学。

还有IBM Plex ,一种背后有大笔资金的新字体[ 1 ] [ 2 ] 。 Plex旨在取代所有IBM材料中的Helvetica(它还具有压缩sans以及serif和monospace字体),尽管它与Helvetica或其他字体完全不兼容。 Font Squirrel可以很好地查看Plex字体的样本 。

lgarzo的答案 仅适用于在文本上有“noligs”类的网站(大多数网站没有)。

要全局禁用所有网站上的连字,请将以下行添加到userChrome.css

 * { -moz-font-feature-settings: "liga" 0; } 

最简单的方法是使用Stylish扩展创建一个新样式。

在查看图像时,我脑海中浮现出一些评论:

  • 连字似乎是消除锯齿的 ,而其他文本则没有。 因此它看起来比普通文本更胖(虽然我不能否认它看起来也很大胆)。
  • AFAIK Helvetica字体是非标准字体 ,即没有默认的Windows安装。 你安装了它,还是不同的字体?

我认为问题是基于字体不正确支持连字/字距调整。

您可以使用以下CSS规则禁用FF中的连字:

 /* disable common ligatures, usually on by default */ .noligs { -moz-font-feature-settings: "liga" 0; } 

来源: CSS参考:Mozilla扩展

除了Calimo的答案,Archlinux用户还可以找到帮助https://wiki.archlinux.org/index.php/font_configuration – 禁用位图字体

它建议创建一个本地配置文件〜/ .config / fontconfig / conf.d / 20-no-embedded.conf,但我选择了系统范围的选项

 sudo touch /etc/fonts/conf.d/20-no-embedded.conf sudo chmod 777 /etc/fonts/conf.d/20-no-embedded.conf nano 777 /etc/fonts/conf.d/20-no-embedded.conf      false    

然后只需重新启动应用程序(在我的情况下雷鸟)