磁盘上的 unicode 字符在哪里,映射过程是什么?



有几个与Unicode相关的问题已经让我困惑了一段时间。

由于以下这些原因,我认为 unicode 字符存在于磁盘上。

  1. 在终端中执行echo "u6211",它将打印对应于 unicode 代码点 U+6211 的字形。
  2. 有一个ucd(unicode字符数据库)的概念,我们可以下载它的最新版本。ucd最新
  3. 在我升级 macOS 版本之前,一些新版本的 unicode 字符(如最新的表情符号)无法显示在我的 mac 上。

因此,如果磁盘上确实存在 unicode 字符,则:

  1. 它在哪里?
  2. 如何升级?
  3. 将 unicode 代码点映射到字形的过程是什么?
  4. 如果我使用特定的字体,那么将 unicode 代码点映射到字形的过程是什么?

如果没有,那么将 unicode 代码点映射到字形的过程是什么?

如果有人能阐明这些问题,我们将不胜感激。

在终端中执行echo "u6211",它将打印对应于 unicode 代码点 U+6211 的字形。

echo -e是抨击。

› echo "u6211"
u6211
› echo -e "u6211"
我

它在哪里?

在字体文件中。

在我升级 macOS 版本之前,一些新版本的 unicode 字符(如最新的表情符号)无法显示在我的 mac 上。 如何升级?

使用表情符号安装/升级合适的字体就足够了。我没有macOS,所以我无法验证这一点。

我使用"Noto Color Emoji"版本 2.011/20180424,它工作正常。

将 unicode 代码点映射到字形的过程是什么?

应用程序(例如文本编辑器)为字体渲染子系统(macOS 上的 Quartz?)提供 Unicode 文本和字体名称。字体呈现器分析文本的代码点,并确定这是简单文本(例如拉丁文、中文、独立表情符号)还是复杂文本(例如带有许多标记的拉丁语、泰语、阿拉伯语、带有零宽度连接器的表情符号)。渲染器在字体文件中查找相应的轮廓。如果文件没有所需的字形,则呈现器可能会使用类似的字体,或者使用配置的回退字体来替换较差的替换(白框、黑色问号等)。然后对轮廓进行整形,以组成复杂的字形和换行符。最后,字体渲染器将结果传递给显示系统。

除了整形之外,这与Unicode或编码几乎没有关系。在Unicode出现之前,字体渲染就已经习惯了,当然字体文件和渲染在30年前要简单得多。仅当有人想要从应用程序加载或保存文本时,编码才重要。

摘要:调查

  • Truetype/Opentype字体编辑软件,因此您可以查看文件中包含的内容
  • 字体渲染器,在Linux上查看库pango和freetype。

一般来说,使用文本的操作系统组件使用 Unicode 字符集。特别是,字体文件使用 Unicode 字符集。但是,并非所有字体文件都支持所有 Unicode 代码点。

当一种字体不支持代码点时,系统可能会回退到另一种字体。对于网络浏览器尤其如此。但最终,如果代码点不受支持,则会呈现一个未填充的矩形。(没有字符,因为它不是字符。事实上,如果您能够将其复制并粘贴为文本,则它应该是无法渲染的原始字符。

在 Web 开发中,网页可以提供或提供适用于其使用的代码点的字体的位置。

其他程序通常使用操作系统的呈现工具,因此使用通过它提供的字体。如何在操作系统中安装字体不是编程问题(除非您在程序的安装程序中包含字体)。有关这方面的更多信息,您可以查看该问题是否适合Ask Different(Apple)Stack Exchange网站。

最新更新