![Evince 和 fc-match 认为 Windows 8.1 courbd.ttf 的匹配度比 DejaVu Sans Book 字体更差](https://linux22.com/image/1014024/Evince%20%E5%92%8C%20fc-match%20%E8%AE%A4%E4%B8%BA%20Windows%208.1%20courbd.ttf%20%E7%9A%84%E5%8C%B9%E9%85%8D%E5%BA%A6%E6%AF%94%20DejaVu%20Sans%20Book%20%E5%AD%97%E4%BD%93%E6%9B%B4%E5%B7%AE.png)
我有发票 PDF,其中商店的软件使用 Courier New 和 Courier New Bold 字体。但是,Evince 和都fc-match
决定(假设通过 Fontconfig)我的 Windows 8.1 原始 Courier New Boldcourbd.ttf
不是最佳匹配,因此决定改用 DejaVu Sans Book。这完全破坏了 Evince 中的 PDF 渲染。
最好的证明是使用fc-match "Courier New Bold"
:
/usr/share/fonts> fc-match "Courier New Bold"
DejaVuSans.ttf: "DejaVu Sans" "Book"
如果我使用环境变量提高 Fontconfig 的调试输出,FC_DEBUG=2
我可以看到它正在查看我,courbd.ttf
但不知何故它拒绝它而支持 DejaVu Sans。
这一切都在 Ubuntu/Xubuntu 19.04 上。
更新
我已设法使用如下所示的本地 Fontconfig 设置来破解此问题。但这似乎是一次破解,问题出在其他地方:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match>
<test name="family">
<string>Courier New Bold</string>
</test>
<edit mode="assign" name="file">
<string>/usr/share/fonts/truetype/win81-fonts/courbd.ttf</string>
</edit>
</match>
</fontconfig>
更新2
/usr/share/fonts/truetype/win81-fonts> fc-query /usr/share/fonts/truetype/win81-fonts/courbd.ttf | grep -E 'name:|family:|style:'
family: "Courier New"(s)
style: "Negreta"(s) "tučné"(s) "fed"(s) "Fett"(s) "Έντονα"(s) "Bold"(s) "Negrita"(s) "Lihavoitu"(s) "Gras"(s) "Félkövér"(s) "Grassetto"(s) "Vet"(s) "Halvfet"(s) "Pogrubiony"(s) "Negrito"(s) "Полужирный"(s) "Fet"(s) "Kalın"(s) "Krepko"(s) "đậm"(s) "Lodia"(s)
fullname: "Courier New Negreta"(s) "Courier New tučné"(s) "Courier New fed"(s) "Courier New Fett"(s) "Courier New Έντονα"(s) "Courier New Bold"(s) "Courier New Negrita"(s) "Courier New Lihavoitu"(s) "Courier New Gras"(s) "Courier New Félkövér"(s) "Courier New Grassetto"(s) "Courier New Vet"(s) "Courier New Halvfet"(s) "Courier New Pogrubiony"(s) "Courier New Negrito"(s) "Courier New Полужирный"(s) "Courier New Fet"(s) "Courier New Kalın"(s) "Courier New Krepko"(s) "Courier New đậm"(s) "Courier New Lodia"(s)
postscriptname: "CourierNewPS-BoldMT"(s)
更新 3
有趣的是,Evince 现在表示它已被 Courier New 取代内格雷塔好像它没有看到字体中存储的其他名称。