自定义文本编辑器和终端以使用非等宽字体而不会产生可怕的结果?

自定义文本编辑器和终端以使用非等宽字体而不会产生可怕的结果?

我想尝试所有字体,包括非等宽字体。我理解使用等宽字体的原因,但坦率地说,它们对我来说似乎不合理。

例如,使用等宽字体的一个原因是为了让代码块在编辑器中完美排列。但为什么不能简单地从给定字体中最小的字符或实现这一点的某个单位构建网格呢?这似乎是 ASCII 时代的遗留。我在 Google 上搜索过,但找不到太多关于此的信息。

有人尝试过这个吗?或者知道任何试图实现这个功能的项目吗?特别是我想在 OS X 上使用 VIM 和 iTerm2 中的字体。

答案1

我读过很多很久以前的博客文章,这些文章的作者实际上更喜欢在代码中使用比例字体。通常,他们喜欢这种字体是因为它的表现力,但他们总是需要一些非常丰富的语法突出显示和/或自定义外部工具,使其工作,并实际上能够读取和理解他们自己的代码。

阅读代码的方式和阅读文本的方式不一样。前者主要是垂直的,后者主要是水平的。

你知道,等宽字体是根据网格设计的,因此每个字符都占用与其他字符相同的水平空间。因此,我们可以对齐内容,并以离散块的形式阅读和理解代码,而无需太多脑力劳动:一切都是规则的和可预测的,这是我们手艺的必需品。

因为我们倾向于写短行,并且源文件的逻辑部分是垂直分布的,所以我们的视线大部分都是垂直移动的,这是编程的自然流程。等宽字体有利于这种移动,因为东西可以整齐地排列,我们不必移动太多视线。

比例字体的每个字形都设计有不同的宽度和不同的默认空白设置。此外,这种字体大量使用字距调整(字形之间的空白调整),这就是实际上使文本看起来不错。删除字距调整,任何比例字体(即使是最好的字体,如 Frutiger 或任何其他字体)看起来都会像 ish。单个字形仍会绘制得很好,但它们不再相互契合,也无法创造出使它们有用且令人愉悦的独特节奏。

将网格应用于 Helvetica Neue 中的文本会导致黑白分布不均匀和难以阅读的混乱,因为我们实际上会删除比例字体的最重要特性。

比例字体根本不适合垂直流。为了实现最佳的水平节奏,人们在字距调整方面投入了大量精力,但在编程环境中,这种功能完全没有必要。

最后,您实际上可以将 Vim 的字体设置为某种比例字体,以下是 Helvetica Neue 在 12 px 下的样子:

截屏
    (点击图片放大)

同一文件,Inconsolata-dz 尺寸为 12 px:

在此处输入图片描述

我想这些截图已经说明了一切。

答案2

我使用的是经过修改的 SciTE(Windows),它利用了 Scintilla(可从源代码移植),并且多年来一直是等宽字体的粉丝,现在已改用比例字体。文本更紧凑(并且更赏心悦目,尤其是对于较长的类名),因此很少需要换行。垂直排列通过制表符来保持,我将其定义为像素数。添加“制表符”例程并使用较小的制表符宽度(大约 3 个空格),您可以整齐地排列任何块代码:不仅在行首,而且在多列结构或多行 #define 中也是如此。问题是您的代码在其他编辑器中看起来很糟糕,您必须重新格式化其他人的代码。

答案3

使用可变间距字体可以做很多事情,但是历史表明,而且普遍的观点认为这不是一个好主意。因此,大多数针对程序员的编辑器不允许您使用它们,这是正确的。

假设您要用给定字体中的最小字符“画一个框”。并以某种方式设法使其排列整齐。

在一行前面留一个空格……因为空格比较宽,会毁了整个行。现在你要么把它留出几个空格……直到宽度再次匹配,要么……这是个坏主意。甚至没有对此进行讨论。

答案4

不知道 OSX 如何渲染字体,但必须旧事物博客文章,介绍计算机领域中所有奇特和历史性的事情。

这篇博文讨论了 TrueType 字体的字母不是以漂亮的小网格绘制的。有些字母故意悬在网格之外,而有些则不然。要以编程方式使字体适合漂亮的整齐网格,您需要不使用 TrueType 字体.至此,我们又回到了原点。

但这是 Windows 方面的问题。不知道 OSX 如何呈现 TrueType 字体,但我敢打赌,除了“它支持所有字符吗?”这个问题之外,这也是所有字体不可用的原因。

相关内容