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

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

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

在此处输入图片描述

正如您所见,这似乎与交叉字符(tf)的相互连接方式以及像这样的字母有关i

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

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

答案1

另一种适用于所有应用程序(包括 Libre Office)的解决方案是阿尔德比

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

<match target="font" >
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>

确保保留 XML 结构。

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

答案2

禁用连字(看Calimo 的fonts.conf回答是错误的方向!它可能会删除字体中那些过度锯齿的“粗体”连字符,例如卡利布里,但它也消除了一些字体的美感。这很像将字体缩小到无法分辨的程度。

我通过删除 Calibri 字体并安装解决了这个问题卡利托,即“度量兼容使用 Calibri”并且打包了“到 fontconfig (local.conf) 的映射条目”,并刷新了我的字体缓存:

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

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

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

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

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

Calibri 测试

上面的文字是 13pt Calibri 的两张屏幕截图,其中 Microsoft 的 Calibri 位于 Carlito 上方,与 fontconfig 匹配。没有粗体,没有格式,启用了“成对字距调整”,由 LibreOffice 5.0.5.1 呈现。

Carlito 与 Calibri 非常接近,连字符呈现正确,并且整体上更加漂亮。

你也可以使用卡拉迪亚为了坎布里亚fonts-crosextra-caladea你可以使用谷歌的Croscore 字体Arimo、Tinos 和 Cousine宋体英语字体格式一种, 和快递新品fonts-croscore了解更多 Debian的替换 Calibri 和 Cambria 字体维基百科。

但是 Helvetica 怎么样?

这个问题询问的是海尔维提卡字体,这是苹果的首选无衬线字体字体。Microsoft 首选宋体在更改为 Calibri 之前。默认的 Linux 映射因发行版而异,但通常是Nimbus Sans L要不然解放无例如

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

如果您运行该程序并得到 Arial,那么这就是出现上述连字问题的一个很好的理由——Arial 不是一种很好的字体。

Helvetica 具有相当的文化背景,我找不到与 Helvetica 完全兼容的字体。Arial(以及与 Arial 兼容的字体,包括 Liberation Sans 及其分支,有茂,具有相同的字符宽度(这意味着它们“大部分”兼容公制;文本将以与 Helvetica 相同的方式换行)。在免费字体中,Liberation Sans 和 Nimbus Sans似乎拥有最相似的审美。

还有IBM Plex,一款背后有大笔资金支持的新字体[1][2]。Plex 旨在取代 IBM 所有材料中的 Helvetica(它也有压缩无衬线字体以及等宽字体),尽管它与 Helvetica 或其他字体完全不兼容。Font Squirrel 有一个很好的视图Plex 字体样本

Fontconfig 别名

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

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>

  <alias>
    <family>Helvetica</family>
    <prefer><family>Arimo</family></prefer>
  </alias>

</fontconfig>

答案3

lgarzo 的回答将工作仅有的在文本中有“noligs”类别的网站上(大多数网站没有)。

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

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

最简单的方法是使用时髦的扩大。

答案4

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

有人建议在 中创建一个本地配置文件~/.config/fontconfig/conf.d/20-no-embedded.conf,但我选择了系统范围的选项,将配置放入 中/etc/fonts/conf.d/20-no-embedded.conf

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit name="embeddedbitmap" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>

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

相关内容