是否可以减少 konsole 中的垂直行距?
在“设置/高级”下,有一个“行距”选项,但它只能调到 0,而且即使在 0 时,行与行之间也有相当大的空间(即,排版中通常所说的“太多”)。领导即文本行之间的垂直空白间距)。我使用的是垂直方向非常保守的 Inconsolata 字体,与 Monospace 字体相比,它的垂直间距非常小,但即使使用这种字体,在我使用的磅值 (13) 下,行与行之间的间距仍然太大。
有没有办法进一步减少垂直行距,而不必修改字体本身来补偿?许多编辑器都允许这样做,但我找不到在 Konsole(低于零)中或在整个 KDE 中以某种系统设置来实现这一点的方法。
答案1
对于任何感兴趣的人,我已经找到了一种方法来做到这一点,但它确实涉及字体编辑。这应该可以为您节省数小时甚至数天的谷歌搜索和挫折,因为我知道我花了大量时间来弄清楚这一切。请不要因步骤的文字而气馁。整个过程确实需要不到五分钟。我费了九牛二虎之力才把它完整地讲出来,这样就花了五分钟时间:)尽可能减少歧义关于要做什么、按照什么顺序做。
您可以通过以下方式在所有 Linux GUI 应用程序中随意调整垂直行距:
- 下载并安装 FontForge(包名应为
fontforge
、yum
、apt-get
或dnf
您使用的包管理器的名称)。如果您喜欢手动操作,也可以在 github 上找到它:github 安装详细信息 - 打开您想要更改的字体(我的情况是 Inconsolata)。注意:在更改字体或创建新字体之前(我强烈建议这样做),将旧字体从复制到
/usr/share/fonts/...
并~/.local/share/fonts
在本地目录中进行所有更改(或添加新字体)fonts
,作为奖励,您将拥有写入权限,而无需 root 访问权限(到/usr/share/fonts
)。 - 好的,回到 FontForge,
fontforge
安装后您可以用以下命令运行它:。首先从.local/share/fonts
复制原始字体的目录中打开字体。.local/share/fonts
假设您从主目录启动了 fontforge,只需键入,它就会带您到该目录。请注意,fontforge 不喜欢将字符~
放在主目录中,因此请使用相对或绝对路径,但~
在打开字体文件时不要使用。如果那里有字体的子目录,只需单击该子目录即可打开它,最后选择并打开字体本身。在更改其他任何内容之前,我们应该重命名字体。从菜单中,选择 Element/Font Info... 以打开对话框Font Information
。转到左侧的 General 类别,让我们通过在字体名称后添加后缀来更改字体名称(例如,我将 Inconsolata 更改为 InconsolataDense80,以表示我将把垂直行距(即行距)减小到其当前值的 80%)。确保分别对 Fontname、Family Name 和 Name For Humans 字段进行三次此更改。 - 接下来,选择左侧的 OS/2 类别(谁会想到呢???)并选择顶部的“Metrics”选项卡。
- 我们将修改 HHead Ascent 和 Descent 值,这两个值是 Linux 上唯一影响垂直间距的值。祝您好运,自己解决这个问题。我花了很长时间才找到这些大海捞针、未经雕琢的钻石,您所选的类比 :)!
- 在进行任何更改之前,请务必记录(例如,写下)当前值。
- 现在要更改垂直间距,我们需要将两个值乘以一个因子,该因子取决于您想要减少垂直间距的量(对我来说,我使用了当前值的 80%)。您可能希望在 99% 的情况下对两者使用相同的因子。如果这不起作用或导致显示伪影,您可以稍后使用不同的因子来微调各个值,作为绝对的最后手段。伪影也可能意味着您过度减少了值,而我所说的减少是指向零移动(即,减少它们的幅度,它们的绝对值,因为 HHead Descent 可能是负数,因此如果您将其乘以正百分比缩放因子,您实际上会在数值上增加它)。
- 将每个 HHead Ascent 和 Descent 设置为您在步骤 7 中计算的值(例如,其先前值的 80% 是一个好的开始)
- 我们已经完成了“字体信息”对话框,因此我们单击“确定”按钮
- 此时,让我们将字体保存为 .SDF 文件,因此执行文件/另存为...它应该记住您之前设置的字体的新名称。
- 现在要应用我们的更改,我们需要(重新)生成字体。从 FontForge 菜单中选择 Font/Generate Fonts...。如果您正在处理 TrueType 字体,请确保在字体文件名下选择了 TrueType。然后单击 Generate 按钮。您可能会收到各种检测到的错误,您可以放心地忽略这些错误 - 如果出现继续生成字体的情况,请单击该对话框上的 Generate 按钮。
- 此时,您已一切就绪,但需要重置字体缓存。输入 即可完成此操作
fc-cache -v -r
。 - 打开一个新的 konsole 窗口(新字体或者甚至对现有字体的更改都不会显示在您已经打开的任何窗口中)。
- 转到“设置/编辑当前配置文件”并选择“外观”选项卡,选择新字体。字体选择选项位于设置页面。单击“选择字体...”,您应该会看到列出的新字体,并且能够选择它。单击“确定”后,更改将立即生效。
- 恭喜,您完成了!如果线条仍然相距太远或太近,请返回步骤 7 并将 HHead Ascent/Descent 值调整为原始值的其他倍数。不要忘记更改(所有三个)字体名称值以描述您乘以的百分比,以供将来参考,然后确保以新文件名保存字体(并以新名称将其生成为新字体)。最后,不要忘记更新字体缓存并打开新窗口查看效果。
我通常在 Konsole 中更改字体之前先执行ls -l
或,ls -lR
以便查看列出的文件名之间的行距效果。文件名使用l
彼此上下的升部(例如 )和降部(例如 'y')是个好主意,这样您就可以确保线条不会太近并且升部和降部不会相交。您可以通过创建三个文件轻松做到这一点:“agjpqy”、“mbdfijlt”和“zgjpqy”。文件名的首字母只是为了按预期的字母顺序排列文件。其余字母包含升部、降部或两者。您可以查看它们是否相交,并根据您主观的喜好调整字体的垂直间距(让我想起了金发姑娘和三只熊的故事)。
我希望这能帮到你,为你节省大量时间和挫折感。患有强迫症的用户会最感激这一点!