我有一种等宽字体 ( 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
)。仍然需要对加粗进行微调(通过配置文件或freetype2
补丁)。
答案1
姆拜托夫,我发布此内容作为您更新的补充,而不是答案
如果用户创建名为的文件~/.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>
然后,应用程序可以使用粗体等宽字体(如果可用),并且如果使用的字体没有粗体字体,则禁用“合成粗体”。
这只是替代方案,方法略有不同,结果也不同