我有一个等宽字体 ( PT Mono),我更喜欢在 IDE 编程中使用它。字体只有Regular,所有其他Bold,Italic都是通过斜体和“加粗”的Regular. 问题是“加粗”字符比常规字符更宽,因此 IDE 窗口中的源代码字符串现在由非等宽字符组成。
如何控制字体的“加粗”,使其不会变得比常规更宽?
下面的屏幕截图说明了这个问题(PT Mono,没有专门的粗体)。看看“unsigned char”和“sizeof”字是如何从它们的正确位置移出的。

这是另一个例子,Droid Sans Mono(没有专门的粗体)。

这是字体具有专用粗体版本 ( Liberation Mono)的示例。粗体和规则完美地对齐。

因此,在未提供粗体的情况下,问题肯定是轻率的粗体渲染。字体引擎是罪魁祸首。
UPD:有一个文件/etc/fonts/conf.avail/90-synthetic.conf,如果被引用,它会/etc/fonts/conf.d/调整字体引擎以对没有粗体版本的字体进行合成加粗。如果从 中删除指向此文件的符号链接/etc/fonts/conf.d/,则加粗消失。这并不是我们真正想要的,但至少这可以解决等宽字体不是等宽字体的情况(见下文PT Mono)。仍然需要对 emboldening 进行微调(通过配置文件或freetype2补丁。

mbaitoff,我将此发布为您更新的补充,而不是作为答案
如果用户创建名为 的文件~/.fonts.conf:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="font">
<test name="spacing" compare="eq">
<const>mono</const>
</test>
<edit name="embolden" mode="assign">
<bool>false</bool>
</edit>
</match>
</fontconfig>
Run Code Online (Sandbox Code Playgroud)
然后,如果可用,应用程序可以使用粗体等宽字体,如果使用的字体没有粗体,则禁用“合成粗体”。
这只是另一种选择,方法略有不同,结果不同
| 归档时间: |
|
| 查看次数: |
3796 次 |
| 最近记录: |