如何在 Gnome 终端或需要等宽字体的任何地方使用 Fixedsys

如何在 Gnome 终端或需要等宽字体的任何地方使用 Fixedsys

我认为固定系统字体是编程中最易读的等宽字体之一。它没有抗锯齿,垂直线大多为 2 像素宽。在我看来(字面意思),它接近当前显示器点距的理想值。以下是示例:

Fixedsys 示例

多年来,我一直在家里使用 Windows(出于家庭原因),在工作时通过 Windows 上的 Cygwin 访问 Linux 服务器(出于公司政策原因),使用 Fixedsys 作为 shell 和 IDE 字体,最终我决定在家里切换到 Ubuntu。

Eclipse 和 gedit 没有问题,它们接受更正后的版本固定系统 Excelsior您可以找到的 TTF 字体这里是评论#16(文件名:FSEX301-L2.ttf)。但是 Gnome 终端只接受等宽字体。

尽管 Fixedsys Excelsior 本质上是等宽字体,但它包含较大的字形(主要用于东方语言)以及一些连字。由于所有字符的宽度必须相同,字体才能被识别为等宽字体,因此在需要等宽字体的所有环境中(包括 gnome-terminal),Fixedsys Excelsior 都无法被选择。

那么,在仅接受等宽字体的上下文中使用 Fixedsys 克隆的最简单/最干净的方法是什么?

答案1

这是我找到的解决方案。我已经彻底测试了好几次,而且我已经在很多地方使用这个字体超过 2 年了,但请注意:该过程的某些部分可能不是最理想的,甚至完全错误。

在你问“为什么不提供最终的字体”之前,答案是:“因为我不确定我能不能这样做”。字体版权是一个复杂的问题。


下载修正 Fixedsys Excelsior 字体(文件FSEX301-L2.ttf,评论#16)

安装FontForge(例如来自 Ubuntu 软件中心)

右击文件FSEX301-L2.ttf并用 FontForge 打开。在加载位图字体出现的窗口中,点击

点击文件 → 执行脚本...,然后将以下内容复制粘贴到出现的窗口中:

SelectAll()
foreach
   if (GlyphInfo("Width") != 80)
      DetachAndRemoveGlyphs()
   else
      b = GlyphInfo("BBox")
      if (b[0] < 0 || b[1] < -30 || b[2] > 80 || b[3] > 130)
         DetachAndRemoveGlyphs()
      endif
   endif
endloop
SelectNone()

然后选择FF并点击好的(这需要一段时间,你必须等到执行脚本窗口消失)

点击元素 → 字体信息...PS 名称改变字体名称, 和人类的名字,例如通过附加Mono(仅在第二和第三个字符串中允许使用空格)。

在相同的字体信息窗口,选择操作系统/2
在里面杂项标签更改PFM 系列等宽字体
在 Metrics 选项卡中,将 Win Descent Offset 和 HHead Descent Offset 都设置为 0 (*)
帕诺塞标签,更改部分等宽字体

在相同的字体信息窗口,选择查找
在里面谷氨酸转氨酶选项卡中,销售点管理系统选项卡,依次选择每一行并单击删除

在相同的字体信息窗口,单击好的,并且在更改 UniqueID?出现的窗口点击改变

如果需要,您可以调整 Fixedsys 的一个或多个可疑功能。例如,零字符向右移动一个像素。要将其移回中心,请双击它,然后单击指标 → 设置 LBearing…,设置L轴承10点击好的。您还可以更改字符的形状,但始终保持控制点为 10 的倍数,宽度为 80。

点击元素 → 位图打击可用...,然后在出现的窗口中设置像素大小16点击好的

点击文件 → 生成字体...,如果需要,请选择不同的目录和/或不同的文件名,确保输出格式为TrueType,然后点击节省。 在里面非标准 Em 尺寸出现的窗口点击是的。 在里面检测到错误下次点击时出现的窗口节省(不用担心)。

退出 FontForge (文件 → 退出)。 在里面字体已改变出现的窗口点击不要保存


将生成的文件移动到.fonts主目录的子目录中(如果不存在则创建)。

打开 Gnome 终端。点击编辑 → 个人资料...在配置文件中(我建议您创建一个新的配置文件),将字体更改为Fixedsys Excelsior 3.01-L2 Mono(或您称之为 Fixedsys Excelsior 的单色版本),大小为12(这是唯一“真正的”Fixedsys 大小)。如果您愿意,您还可以禁用粗体文本。我建议在白色背景上使用黑色文本,但这取决于个人喜好。

此字体的粗体变体相当于重复向右移动一个像素的字符(这与 不同FSEX301-L2.ttf,在 中它看起来更平滑)。它不太清晰 - 但你真的需要粗体吗?我不需要。问题只出现在那些无法禁用粗体的情况下(例如,甚至不能通过编辑语法突出显示来禁用),特别是在字符间距也增加一个像素的情况下,破坏对齐(gnome-terminal 中不存在这种情况)。我还没有找到解决这个最后一个麻烦的方法。欢迎提出建议。


(*):自 2012-07-31 的 FontForge 发布以来不再需要(在 14.04 LTS - Trusty Tahr 中)

答案2

Walter Tross 提供了很好的解决方案,但如果您不想完成所有工作,这里是下载链接:

已修复sysExcelsiorIIIb-L2_Mono.ttf

相关内容