为什么没有包含所有Unicode字形的字体?

时间:2016-01-11 22:59:27

标签: unicode fonts

就像标题所说的那样。正确渲染所有unicode格式,复合字符和影响其他字符和连字的字符真的很难,我明白了。我们的字体似乎是为最大的Unicode符号支持(Symbola,Code2001,其他)而设计的,以及某些平面或字符范围的专用字体(BabelStone Han,其他)。

我对字体的基础技术细节了解不多。有最大尺寸吗?这是版权问题吗?基本上是重绘所有~110,000现存的雕文太难了?我理解风格问题,但为什么不回到默认情况下呢?有所有字形的字体?他们在unicode.org上,重新绘制它们将是非常艰苦的工作,但是你可以保证所有内容的后备字体。如果你拥有一些预先存在的字体的权利,你可以只复合它们,这应该有很多帮助。这样的字体对人类来说是一个很大的帮助,我看不出它为什么不存在或者至少是一个开源的努力创造它的一个很好的技术原因,所以我假设一个看不见的 - 我之所以无法完成它。

这是什么原因?

3 个答案:

答案 0 :(得分:63)

"你为什么要这样?"除了问题之外,从编程的角度来看,有一个非常简单的原因:OpenType spec只提供一个USHORT的可寻址字形索引空间,因此一种字体只能支持16位的字形标识符,或者最多65536个字形

此答案的当前版本的Unicode,v8包含120737个指定的代码点,或几乎是现代字体的两倍。实际上,自2001年以来,Unicode并不适合现代OpenType字体,随着Unicode 3.1的发布,它将代码点的数量从49259增加到94205.

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

至于&#34;它有多难?&#34;:Unicode中所有字形的统一样式,在这个星球上的129个已建立的书面脚本中,每个都有自己的排版规则?难以置信。您可能认为字体只是包含字母图片的文件,而有人键入字母,图片显示:不是字体的工作方式,也不是自1980年代后期以来字体的工作方式。< / p>

现代字体是游戏ROM的印刷等价物:当然,如果没有硬件或软件来运行该ROM,它就没什么用处,但实际上重要的事情都在ROM中。同样,现代字体包含 all 排版信息。不仅仅是图片,它们包含任意序列的元数据,度量标准,定位和替换规则,OpenType支持的每个编写脚本都有单独的规则集,小点渲染的可能位图回退,关于如何正确栅格化矢量的提示指令本质上未与任何特定像素网格对齐的图形等等。现代字体是一个非常复杂的应用程序,字体引擎可以查询如何排版代码点序列,并制作一组(包含Unicode)字体是一项庞大的团队工作。

所以:&#34;为什么没有包含所有Unicode字形的字体?&#34;,因为从2001年开始技术上就不可能。我们可以而且确实做到了字体系列涵盖了所有Unicode,但有129种不同的脚本都有自己的排版规则,这是一项庞大的团队工作。

至于:

  

这样的字体对人类有很大的帮助,我看不出它为什么不存在的好技术原因,或者至少是一个开源的努力创造它,所以我假设一个看不见的对我来说,为什么它无法完成。

仅仅因为你不了解他们,并不代表他们不存在,有数百万人熟悉他们。它们存在,they're even open source,出去并感谢制作它们的人=)

答案 1 :(得分:0)

GNU Unifont。它旨在包含除Apple Emoji之外的所有Unicode。

答案 2 :(得分:-1)

您可能会在以下链接中找到您要查找的内容。

Unicode Character Table

HTML Character Entity References

Huge List of Unicode Symbols

List of Unicode Characters of Category “Other Symbol

另一个对于特定角色很有趣,因为您可以绘制您搜索的内容:

Unicode Character Recognition

Can't enter unicode character with Alt+ even with EnableHexNumpad

Basic Questions

问:Unicode 中有多少个字符? 答:简而言之,从 13.0 版开始,Unicode 标准包含 143,859 个字符。长答案相当复杂,因为人们可能有兴趣计算所有不同类型的字符。

Unicode font Unicode 字体是一种计算机字体,可将字形映射到 Unicode 标准中定义的代码点。绝大多数现代计算机字体都使用 Unicode 映射,即使是那些只包含单一书写系统字形的字体,甚至只支持基本的拉丁字母。

支持范围广泛的 Unicode 脚本和 Unicode 符号的字体有时被称为“泛 Unicode 字体”,尽管 TrueType 字体中可以定义的最大字形数限制为 65,535,但并非如此。单个字体可以为所有定义的 Unicode 字符(143,859 个字符,Unicode 13.0)提供单独的字形。

...

没有单一的“Unicode 字体”包含 ISO 10646 (Unicode) 标准当前修订版中定义的所有字符,因为越来越多的语言和字符不断添加到其中,并且常见字体格式不能包含超过 65,535 个字形(大约是 Unicode 编码字符数的一半)。

因此,字体开发商和代工厂将新字符合并到字体的较新版本或修订版中,或专门用于特定语言的单独辅助字体中。

享受吧!