对于某些字体,如 Gill Sans 或 Linux Libertine G,显示的文本可能完全错误。字符以正确的样式显示,但却是错误的字符。
此问题不仅限于 CSCAD,其他程序也可能出现。
这些字体使用了许多字体文件(这样的一组文件称为字体系列),程序会隐式查找字体系列中最匹配的字体文件来绘制字符。即使仅使用单个字体文件,字体的显示也可能是正常的,但使用更多文件会有轻微的改进。使用常规字体文件并要求绘制粗体是可以的,但使用专用的粗体字体文件会更好。
较大的字体系列可能存在小缺陷,导致在使用家族中的哪个文件时产生歧义。结果是在绘制字符时,在计算的早期阶段使用了一个字体文件,而在后期阶段使用了同一家族的另一个字体文件。
解决方案是精简用于单个字体的字体系列,以避免在使用文件时产生歧义。对于 Gill Sans 字体,可以通过删除以下文件来实现:
使用较少字体文件的视觉效果极小。
注意:
随许多文件分发的字体并不一定会出现此问题。
例如,Noto Sans 字体有两个具有以下样式的字体文件:Italic、Light Italic。但是,当使用 Windows 字体查看器打开这两个字体时,可以看到这两个字体在技术上属于两个不同的字体系列:
由于字体系列不同,该字体不受此问题影响。
同样,大多数字体通过为“扩展”字体样式使用不同的字体系列来避免此问题。我们已知只有少数字体存在此问题。
所谓扩展样式,是指除以下 4 种样式之外的字体样式:
更多信息,请参阅 https://docs.microsoft.com/en-us/typography/opentype/spec/name#name-ids 中的“字体系列名称”和“字体子系列名称”部分。