gpt4 book ai didi

unicode - Unicode 字符如何映射到字体中的字形?

转载 作者:行者123 更新时间:2023-12-03 07:51:17 44 4
gpt4 key购买 nike

我想知道,Unicode 中的每个字符都有一个代码点;字体中字符的类似术语是什么?

当解码文件需要映射到字体(或字体,通过一些现代字体替换技术)时,我从来没有理解过程的一部分。

例如,当文本编辑器从其字符编码解码文件时,假设有希腊字母 α (U+03B1)。此应用程序在字体中选择特定字形的确切过程是什么?大多数应用程序都有首选字体。假设它是 express 公司。 (如果像心 ♥ (U+2665) 这样的罕见 Unicode 字符不是默认字体,会发生什么?应用程序如何知道字体不包含该字符?)

字体是否包含有关它具有哪些符号的元信息?

如果 2 种字体都具有符号 alpha,它们是否一定共享相同的“代码点”?还是依赖于Type1、Type3、TrueType、OpenType等字体类型? ...

感谢您的任何指示或引用。

最佳答案

TrueType 字体由许多部分组成,对于这个问题最重要的是一个“字形”表和一个用于将字符映射到这些字形的表(“cmap”)。

长话短说,操作系统使用“cmap”表将字符转换为字形索引,用默认字形替换任何没有匹配条目的字形。不幸的是,有多个版本的字体文件规范(更不用说不同类型的字体)和这些表中相同映射的不同字符编码,因此进行映射的实际过程,并有效地进行,以便文本绘制速度快,最终变得极其复杂。

“代码点”完全独立于字符、编码和字体。一个特定的代码点是通用的,但它有很多编码(UTF-8、UTF-16 等),它会映射到不同字体的不同字形索引。

Apple 的开发人员文档中有一个很好的部分介绍了 TrueType 字体的详细信息:

http://developer.apple.com/fonts/ttrefman/

具体来说:

字形表:https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6glyf.html

人物图:https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6cmap.html

我还推荐一个名为 BabelMap 的应用程序,它为您提供了许多有关字体的有趣信息。具体看Tools/Unicode Summary、Fonts/Font Analysis Utility和Fonts/Font Information,可以把整个字形映射表提取到剪贴板。

关于unicode - Unicode 字符如何映射到字体中的字形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3582944/

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