如何防止具有相同pt大小的“自动”粗体字体比常规字体宽?


10

我有一个等宽字体(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补丁。

在此处输入图片说明


您无法控制。字体设计将被破坏。即使您精确地减小了大小(您不能减小大小)以匹配常规字体间距,粗体字体看起来也会变小。如果您要使用等间距的字体,请不要使用粗体...或尝试使用终端
zetah 2012年

这不是真的。在单独的文件中同时具有常规和粗体字体的字体,其常规和粗体字符宽度相同。例如,LetterGothic。
mbaitoff

我站得住了。当我的字体是Droid Sans Mono时,我使用SciTE注意到了相同的情况(也许您也使用基于Scintilla的编辑器-也许是Geany?),但我认为这是理所当然的,而且我不知道加权字体可以具有不同的间距即使是等宽字体,粗体字体也使用与常规字体相同的间距。更重要的是,似乎比例字体也具有您注意到的这种“功能”,您不是全部。抱歉,我的大胆第
一句话

@zetah:我浏览了不同的字体文件,看起来确实只有在没有专用的粗体字体时才会发生宽度变化。我将使用更多屏幕截图更新问题。
mbaitoff 2012年

Answers:


8

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>

然后,应用程序可以使用粗体等宽字体(如果可用),并且如果使用的字体没有粗体字体,则禁用“合成粗体化”。

这只是替代方法,结果略有不同


如果将符号链接/etc/conf.d/50-user.conf重命名为之后执行90-synthetic.conf,则不必完全删除粗体。99-user.conf工作良好。否则,请90-synthetic.conf再次启用它。
musiKk'Mar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.