为什么不是';有没有包含所有Unicode字形的字体?

为什么不是';有没有包含所有Unicode字形的字体?,unicode,fonts,Unicode,Fonts,正如标题所说。我理解,正确呈现所有unicode格式(使用复合字符和影响其他字符和连字的字符)非常困难。我们的字体似乎是为最大限度地支持Unicode符号而设计的(Symbola、Code2001等),以及为某些平面或字符范围设计的专用字体(BabelStone Han等) 我不太了解字体的基本技术细节。有最大尺寸的吗?这是版权问题吗?从本质上讲,重画所有~110000个现存雕文是否太难了?我理解样式方面的问题,但为什么不退回到一种“默认”字体,它包含所有符号?它们都在unicode.org上,

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

我不太了解字体的基本技术细节。有最大尺寸的吗?这是版权问题吗?从本质上讲,重画所有~110000个现存雕文是否太难了?我理解样式方面的问题,但为什么不退回到一种“默认”字体,它包含所有符号?它们都在unicode.org上,重新绘制它们将是一项相当艰巨的工作,但这样你就可以保证所有内容都有一个备用字体。如果你有权使用一些预先存在的字体,你可以将它们合成,这应该会有很大帮助。这样一种字体对人类会有很大的帮助,我看不出它不存在的技术原因,或者至少是开源的努力,所以我假设它不存在的原因是我看不见的

这是什么原因?

“你为什么要这样做?”撇开问题不谈,从编程的角度来看,有一个非常简单的原因:只能提供一个USHORT的可寻址字形索引空间,因此一种字体只能支持16位字形标识符,或最多65536个字形。(请注意术语:作为“字符”的“字形”)或“信”)

当前版本的Unicode(截至本答案的第8版)包含的字符数几乎是现代字体的两倍(2021年编辑:v13将该数字增加到143859)。事实上,自从2001年Unicode 3.1发布以来,Unicode一直无法适应现代OpenType字体,代码点数从49259增加到94205

“那么字体集合呢?”我听到你问。为什么不使用多种字体并以这种方式支持所有unicode?现在,您已经描述了Adobe的源代码Sans Pro和Google的(字体相同)

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

现代字体相当于游戏ROM的排版:当然,没有运行ROM的硬件或软件没有多大用处,但所有真正重要的东西都在ROM中。同样,现代字体包含所有排版信息。不仅仅是图片,它们还包含元数据、度量、任意序列的定位和替换规则,以及OpenType支持的每个书面脚本的单独规则集,以及用于小点渲染的可能位图回退,提示如何正确光栅化本质上不与任何特定像素网格对齐的矢量图形,等等。现代字体是一个极其复杂的应用程序,字体引擎会向它咨询如何排版代码点序列,而制作一套包含Unicode的字体是一项巨大的团队工作

所以:“为什么没有包含所有Unicode字形的字体?”因为从2001年起,这在技术上是不可能的。我们可以而且确实制作出涵盖所有Unicode的字体系列,但是有129种不同的脚本,它们都有自己的排版规则,这是一项巨大的团队工作

关于这一点:

这样一种字体对人类会有很大的帮助,我看不出它不存在的技术原因,或者至少是开源的努力,所以我假设它不存在的原因是我看不见的

仅仅因为你不知道它们,并不意味着它们不存在,有数百万熟悉它们的人。它们存在=)


,走出去感谢那些创造它们的人

有。它旨在包含除苹果表情符号外的所有Unicode。

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

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

问:Unicode有多少个字符? 答:简而言之,从13.0版开始,Unicode标准包含143859个字符。长答案相当复杂,因为人们可能对各种不同的字符感兴趣

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

支持多种Unicode脚本和Unicode符号的字体有时被称为“泛Unicode字体”,尽管TrueType字体中可定义的最大字形数限制为65535,但单个字体不可能为所有已定义的Unicode字符提供单个字形(143859个字符,带Unicode 13.0)

没有一种“Unicode字体”包含当前版本的ISO10646(Unicode)标准中定义的所有字符,因为越来越多的语言和字符不断添加到该字体中,并且通用字体格式包含的字形不能超过65535个(约为Unicode编码字符数的一半)

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


享受吧!

如果你不想让你的字体看起来像业余爱好者的作品,那么你需要一个特别的