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

Oli*_*Oli 26 firefox fonts

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

在此处输入图片说明

正如你所看到的,这似乎是关于交叉字符(tf)相互连接的方式以及像i.

我已经有这个问题很长时间了(在多个系统上),想知道是否有人见过类似的问题出现并找到了解决它们的方法。

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

Cal*_*imo 30

aldeby提供了另一种适用于所有应用程序(包括 Libre Office)的解决方案:

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

<match target="font" >
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>
Run Code Online (Sandbox Code Playgroud)

确保保留 XML 结构。

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

  • 这是一个比之前更好的解决方案,因为它是一个全局修复,消除连字是一个障碍。连字是为了使文本更易于阅读,而关闭它们以解决配置问题并不理想。 (3认同)
  • 任何有点强迫症或肛门保持力足以关心正确格式化这个 XML 文件的内容的人(当然,你们 Linux 人_永远_不会关心这些事情;-)):`&lt;?xml version="1.0"?&gt;&lt;! DOCTYPE fontconfig SYSTEM "fonts.dtd"&gt;&lt;fontconfig&gt;&lt;match target="font"&gt;&lt;edit name="embeddedbitmap" mode="assign"&gt;&lt;bool&gt;false&lt;/bool&gt;&lt;/edit&gt;&lt;/match&gt;&lt; /字体配置&gt;` (3认同)

Ada*_*atz 11

禁用连字(参见Calimo 的fonts.conf回答是错误的方向!它可能会删除Calibri 等字体中那些过度锯齿的“粗体”连字,但它也会删除一些排版的美感。这与缩小字体非常相似,直到您无法分辨出差异为止。

我通过删除 Calibri 字体、安装“与 Calibri公制兼容”的Carlito来为我的系统解决了这个问题,并且打包了“一个到 fontconfig (local.conf) 的映射条目”,并刷新了我的字体缓存:

$ rm ~/.fonts/microsoft/CALIBRI*
$ sudo apt install fonts-crosextra-carlito
$ fc-cache
Run Code Online (Sandbox Code Playgroud)

然后,您可以验证 Carlito 是否代表 Calibri:

$ fc-match Calibri
Carlito-Regular.ttf: "Carlito" "Regular"
Run Code Online (Sandbox Code Playgroud)

(如果这不起作用,您可能需要类似的东西,sudo rm /usr/share/fonts/truetype/msttcorefonts/calibri*尽管案例和确切位置可能有所不同。)

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

校准测试

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

Carlito 与 Calibri 非常接近,连字渲染正确,而且整体更漂亮。

您可以使用Caladea for Cambria with做同样的事情fonts-crosextra-caladea,您可以使用 Google 的Croscore 字体Arimo、Tinos 和 Cousine for ArialTimes New RomanCourier New with fonts-croscore。在 Debian 的替代 Calibri 和 Cambria 字体维基了解更多信息。

但是 Helvetica 呢?

此问题询问Helvetica字体,这是 Apple 首选的sans-serif字体。在改为 Calibri 之前,微软更喜欢Arial。默认的 Linux 映射因发行版而异,但通常是Nimbus Sans LLiberation Sans,例如

$ fc-match Helvetica
n019003l.pfb: "Nimbus Sans L" "Regular"
Run Code Online (Sandbox Code Playgroud)

如果你运行它并得到 Arial,这就是上述连字问题的一个很好的理由——Arial 不是一个很好的字体。

Helvetica 有很多围绕它的文化,我找不到一种与 Helvetica 完全兼容的字体。Arial(以及与 Arial公制兼容的字体,包括 Liberation Sans 及其分支Arimo,具有相同的字符宽度(这意味着它们“主要”与公制兼容;文本的换行方式与 Helvetica 相同)。在免费字体中, Liberation Sans 和 Nimbus Sans似乎有着最相似的审美。

还有IBM Plex,这是一种背后有大笔资金的新字体[ 1 ][ 2 ]。Plex 旨在替换 IBM 的所有材料中的 Helvetica(它还具有压缩的 sans 以及 serif 和 monospace 字体),尽管它与 Helvetica 或其他字体完全不兼容。Font Squirrel 有一个很好的 Plex 字体示例视图。

Fontconfig 别名

要将 Helvetica 手动别名为另一种字体(因此不需要删除 Calibri 和/或 Arial,但在这种情况下,您也应该手动为它们设置别名),请编辑您的~/.config/fontconfig/fonts.conf文件(对于较旧的系统,即~/.fonts.conf. 为避免混淆,我将后者进行符号链接到前者),如本答案中所述<alias>为 Helvetica添加一个新部分(此部分使用 Arimo。确保您已安装它):

$ rm ~/.fonts/microsoft/CALIBRI*
$ sudo apt install fonts-crosextra-carlito
$ fc-cache
Run Code Online (Sandbox Code Playgroud)


Cal*_*imo 6

lgarzo的答案将工作只能在具有上的文字是“noligs”类网站(大部分网站都没有)。

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

* { -moz-font-feature-settings: "liga" 0; }
Run Code Online (Sandbox Code Playgroud)

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