支持 Unicode 的类似 Courier New 的字体?

平面设计 字体
2022-01-01 12:07:57

我是一名程序员,我真的习惯了 Courier New 字体。我对此很挑剔——相比之下,我发现其他字体(包括其他等宽字体)很难看。

但是,现在我必须处理一些包含 Unicode 字符串的代码,而 Courier New 并没有完全支持 Unicode。

有人可以推荐一种与 Courier New 非常相似但支持 Unicode 的(等宽)字体吗?

4个回答

很少有字体具有“对 Unicode 的完全支持”。Unicode 6.0 有 109,449 个代码点。从设计的角度来看,手动创建这些字形中的每一个是相当昂贵的,而大多数人只会使用其中的一小部分,更不用说从文件大小的角度来看了。

Courier New 实际上是在 3248 个字形中对 Unicode 支持相对较好的字体之一(相比之下,Lucida Sans Unicode 只有 1776 个)。

MingLiU/PMingLiU 字体也支持非常广泛的码位,但这是因为这些是 CKJ(中文、韩文、日文)字体,并且大多数受支持的码位来自 CKJ 块。因此,除非您需要 CKJ 字体,否则它们并没有多大用处。即便如此,它们也被分解成约 6 种不同的字体,覆盖不同的代码块,每个代码点有 30~40k 个代码点。

对于通用语言支持,Arial Unicode MS 是我所知道的最好的。它几乎完全支持 64 个不同的代码块,涵盖 50,377 个代码点。

除此之外,只有Unicode BMP Fallback SIL字体,它是一种调试字体。它涵盖了所有 Unicode 5.1 代码点,但每个字形只是一个矩形框,其中包含该代码点的十六进制代码。大多数操作系统都带有这种字体,并且当 Unicode 字体缺少特定字符的字形时会显示它。

我的意思是,可能有一个疯狂的印刷商或铸造厂为所有 Unicode 5.1 或 6.0 代码点创建了一种带有字形的字体,但它可能真的非常非常昂贵。

大多数人宁愿只使用涵盖特定语言块的字体并使用多种字体来提供完整的多语言支持。特别是由于不同的语言家族具有本质上不同的印刷风格,所以字形最终看起来会非常不同。

编辑:正如 Lister 先生所指出的,目前没有字体可以支持完整的 Unicode 字符集,因为每种字体最多只能包含 65536 个字形。您可以使用 TruTypeCollections 超出此限制,但它们仍然是单独的字体,只是在一个文件中。

试试GNU Free Font 的Free Mono。事实上,它是迄今为止我发现的唯一一种在 unicode 覆盖方面既清晰又相对完整的等宽字体。

更适合您的特定情况,它实际上最终基于 Courier。

您始终可以使用 Courier New 作为您的主要字体,并使用更广泛的字符调色板(例如 DejaVu Sans Mono 或 Everson Mono)来查找缺少的符号。

如果您将 Courier New 设置为首选等宽字体,然后要求它显示类似∀x: ∃y: x ∊ y. (嗯,除了这个网站已经指定了自己的首选等宽字体列表,Courier New 排在列表的后面很远,所以你可能不会在 Courier New 中看到xy以上,除非你也禁用或覆盖 SE 样式床单。)

当然,这看起来并不总是太好,但是在您的情况下,您说您需要的额外字符主要是数学符号。无论如何,这些看起来与普通的拉丁字母完全不同,因此不同字体之间的不匹配可能不会像其他情况那样明显,特别是如果您仔细选择后备字体。

我知道这是一个老问题,但我认为作为一名程序员,我可能能够提供一些建议。我在所有文本编辑器和 IDE 上都使用FreeMono 。它看起来与 Courier New 非常相似,并且对 Unicode 有更好的支持。根据我从字体文件本身获得的信息,Courier New 支持 3,248 个不同的字符,而 FreeMono 支持 4,177 个字符。我不确定FreeMono对数学和逻辑 Unicode 符号有多少支持,但我知道它比 Courier New 好很多。