gpt4 book ai didi

unicode - 为什么没有一种字体包含所有 Unicode 字形?

转载 作者:行者123 更新时间:2023-12-02 11:35:56 28 4
gpt4 key购买 nike

正如标题所说。我理解,使用复合字符和影响其他字符和连字的字符正确呈现所有 unicode 格式确实很困难。我们的字体似乎是为最大程度的 Unicode 符号支持而设计的(Symbola、Code2001 等)以及针对某些平面或字符范围的专用字体(BabelStone Han 等)。

我对字体的底层技术细节了解不多。有最大尺寸吗?是版权问题吗?重新绘制所有约 110,000 个现存字形是否太难了?我理解样式问题,但为什么不使用包含所有内容字形的“默认”字体呢?它们位于 unicode.org 上,重新绘制它们将是一项非常艰巨的工作,但这样您就可以保证所有内容都有后备字体。如果您拥有某些现有字体的权利,您可以将它们组合起来,这应该会有很大帮助。这样的字体将对人类有很大的帮助,我看不出它不存在的良好技术原因,或者至少没有创建它的开源努力,所以我推测它存在一个对我来说不可见的原因做不到。

这是什么原因?

最佳答案

“你为什么想要那个?”除了问题之外,从编程的角度来看,有一个非常简单的原因:OpenType spec只提供 1 个 USHORT 的可寻址字形索引空间,因此一种字体只能支持 16 位的字形标识符,即最多 65,536 个字形。 (并注意术语:“字形” is not the same 作为“字符”或“字母”)

当前版本的 Unicode,即本答案的 v8,包含 120,737 assigned code points ,或者几乎是现代字体的两倍(2021 年编辑:v13 将此数字提高到 143,859)。事实上,自 2001 年发布 Unicode 3.1 以来,Unicode 就无法适应现代 OpenType 字体,该版本将代码点的数量从 49,259 增加到 94,205。

“那么字体集合呢?”我听到你问。为什么不使用多种字体并以这种方式支持所有 unicode?现在,您刚刚描述了 Adob​​e 的 Sans Pro 和 Google 的 Noto (它们是相同的字体)。

至于“这能有多难”:在这个星球上 129 个已建立的书面文字中,统一 Unicode 中所有字形的样式,每个文字都有自己的排版规则?难以置信的艰难。您可能认为字体只是带有字母图片的文件,有人输入字母,图片就会显示出来:这不是字体的工作方式,也不是自 20 世纪 80 年代末以来字体的工作方式。

现代字体相当于游戏 ROM 的排版:当然,如果没有运行该 ROM 的硬件或软件,它就没有多大用处,但所有真正重要的东西都在 ROM 中。同样,现代字体包含所有用于排版的信息。不仅仅是图片,它们还包含元数据、度量、任意序列的定位和替换规则,为 OpenType 支持的每个书面脚本提供单独的规则集、强制和可选的连字、开头/中间字母的语言特定字符替换/单词中的最终位置,或孤立地,相对于其之前或之后的其他字符的任意复杂序列的字符重新定位,用其他任意复杂序列替换任意复杂序列,小点渲染的可能位图后备,关于如何进行的提示说明正确地光栅化本质上不与任何特定像素网格对齐的矢量图形等等。现代字体是一个极其复杂的应用程序,字体引擎咨询来找出如何排版代码点序列。

制作一套适合所有上下文的包含 Unicode 的字体需要付出巨大的团队努力。

所以:“为什么没有一种包含所有 Unicode 字形的字体?”,因为自 2001 年以来这在技术上是不可能的。我们可以并且确实制作了涵盖所有 Unicode 的字体系列 ,但是由于 129 种不同的脚本都有自己的排版规则,所以工作量很大,并且与仅覆盖所有语言的子集相比,几乎(几乎)不值得付出努力。

至于这个:

Such a font would be a great help to humanity and I can't see a good technical reason why it doesn't exist or at least an open-source effort to create it, so I presume an invisible-to-me reason why it can't be done.

仅仅因为您不了解它们,并不意味着它们不存在,有数百万人熟悉它们。它们存在 =)

They're even open source ,出去感谢创造它们的人!

关于unicode - 为什么没有一种字体包含所有 Unicode 字形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34732718/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com