为什么没有包含所有Unicode字形的字体? [英] Why isn't there a font that contains all Unicode glyphs?

查看:45
本文介绍了为什么没有包含所有Unicode字形的字体?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

与标题所说的差不多.我理解正确地使用复合字符以及影响其他字符和连字的字符正确地渲染所有unicode格式非常困难.我们提供的字体似乎旨在最大程度地支持Unicode符号(Symbola,Code2001等),以及用于某些平面或字符范围的专用字体(BabelStone Han等).

Pretty much as the title says. Rendering all of the unicode format correctly what with composite characters and characters that affect other characters and ligatures is really hard, I understand that. We have fonts that seem to be designed for maximum Unicode symbol support(Symbola, Code2001, others) and specialized fonts for certain planes or character ranges(BabelStone Han, others).

我对字体的基本技术细节了解不多.有最大尺寸吗?这是版权问题吗?从本质上来说,重绘所有大约110,000个现有字形是否太难了?我了解样式方面的问题,但为什么不退回到带有 everything 字形的默认"字体呢?它们在unicode.org上,要全部重绘它们将是非常艰巨的工作,但随后您将拥有可以保证的所有内容的后备字体.如果您有权使用某些预先存在的字体,则可以将它们合成,这将大有帮助.这样的字体将对人类有很大的帮助,我看不出它不存在的良好技术原因,或者至少没有开源努力来创建它,所以我推测它是一个不为人知的原因无法完成.

I don't know much about the underlying technical details for fonts. Is there a maximum size? Is it a copyright problem? Is essentially redrawing all ~110,000 extant glyphs too hard? I understand style concerns, but why not fall back to a 'default' font that had glyphs for everything? They're on unicode.org, redrawing them all would be pretty hard work but then you'd have a guaranteed fallback font for everything. If you got rights to some pre-existing fonts you could just composite them and that should help a lot. 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.

那是什么原因?

推荐答案

"你为什么还要那个?"除了编程问题之外,还有一个非常简单的原因: OpenType规范仅提供一个USHORT的可寻址字形索引空间,因此一种字体只能支持16位的字形标识符,即最多65,536个字形.(请注意术语:"不是 与字符"或字母"相同)

"Why would you even want that?" questions aside, from a programming perspective there's a very simple reason: the OpenType spec only affords an addressable glyph index space of one USHORT, so one font can only support 16 bits worth of glyphs identifiers, or 65,536 glyphs max. (And note the terminology: a "glyph" is not the same as a "character" or "letter")

当前版本的Unicode v8版本包含分配了120,737个代码点或几乎是现代字体的两倍( 2021v13将这个数字提高到143,859 ).实际上,自2001年Unicode 3.1发行以来,Unicode一直无法适应现代的OpenType字体,该版本将代码点的数量从49,259增加到了94,205.

The current version of Unicode, v8 as of this answer, contains 120,737 assigned code points, or almost twice as many as fit in a modern font (2021 edit: v13 upped this number to 143,859). In fact, Unicode hasn't been able to fit in a modern OpenType font since 2001, with the release of Unicode 3.1, which upped the number of code points from 49,259 to 94,205.

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

"So what about font collections?" I hear you ask. Why not use multiple fonts and support all unicode that way? Well now, you've just described Adobe's Source Sans Pro, and Google's Noto (which are the same font).

至于它有多难":在这个星球上跨越129个已建立的书面脚本的统一样式,适用于Unicode中的所有字形,每个都有自己的排版规则?难以置信.您可能会认为字体只是带有字母图片的文件,有人输入字母会显示图片:这不是字体的工作方式,也不是自1980年代末以来字体的工作方式.

As for the "how hard can it be": a uniform style for all glyphs in Unicode, across 129 established written scripts on this planet, each with their own typesetting rules? Incredibly hard. You may think fonts are just files with pictures for letters, and someone types a letter, that picture shows up: that is not how fonts work, and isn't how fonts have worked since the late 1980's.

现代字体是游戏ROM的印刷等价字体:当然,没有硬件或软件来运行该ROM并没有太多用处,但是所有真正重要的东西都在ROM中.同样,现代字体包含 all 排版信息.它们不仅包含图片,还包含元数据,度量,任意序列的定位和替换规则,以及OpenType支持的每个书面脚本的单独规则集,小点渲染的可能位图后备,提示如何正确光栅化矢量的指令本质上未与任何特定像素网格对齐的图形等等.现代字体是一种非常荒谬的复杂应用程序,字体引擎会参考它来弄清楚如何对代码点序列进行排版,而制作(一组)包含Unicode的字体是一项巨大的团队工作.

Modern fonts are the typographic equivalent of a game ROM: sure, it's not much use without the hardware or software to run that ROM on, but all the things that actually matter are in the ROM. Similarly, modern fonts contain all the information for typesetting. Not just pictures, they contain the metadata, the metrics, the positioning and substitutions rules for arbitrary sequences, with separate rule sets for each written script that OpenType supports, possible bitmap fallbacks for small-point rendering, hinting instructions on how to properly rasterize vector graphics that are inherently not aligned to any particular pixel grid, and more. A modern font is a ridiculously complex application that a font engine consults to figure out how to typeset sequences of code points, and making a (set of) Unicode-encompassing font(s) is a vast team effort.

所以:为什么没有包含所有Unicode字形的字体?",因为从2001年开始,从技术上讲这是不可能的.我们可以并且确实做到使字体系列覆盖所有字体.Unicode,但是有129种不同的脚本都有各自的排版规则,这是一个庞大的团队工作.

So: "Why isn't there a font that contains all Unicode glyphs?", because that's been technically impossible since 2001. We can, and do, make font families that cover all of Unicode, but with 129 different scripts all with their own typesetting rules, it's a large team effort.

至此:

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

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.

仅仅因为您对它们不了解,并不意味着它们不存在,成千上万的人对它们很熟悉.它们存在=)

Just because you didn't know about them, doesn't mean they don't exist, with millions of people who are familiar with them. They exist =)

它们甚至是开源的,感谢那些创造它们的人!

They're even open source, go out and thank the people who made them!

这篇关于为什么没有包含所有Unicode字形的字体?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆