1

所以,这主要是为了好玩,我正在四处寻找并试图在几种字体中找到我的方式,我有几个问题如果有人做过这种事情,我真的很感激一些帮助。

映射表

我正在测试的字体包含几个不同格式的 cmap 子表。我可以阅读它们,但我不明白我应该使用哪个。IE。选择最合适的子表的策略是什么?这甚至有意义吗?

字形表

这真是让我头疼。我要看看这里有什么。查看该页面上的第二个表格,我有 'n' endPtsOfContours、'n' 指令和 'n' 标志,但我不清楚我是否有与轮廓相同数量的标志(我知道有多少轮廓我有)。然后,更糟糕的是......(有趣!)我有一个 xCoords 数组和一个 yCoords 数组。这些数组的长度似乎不确定,可能包含 BYTE 或 SHORT 数据,但我们不会告诉你是哪一个。

好的,我想这就是指令和标志的用途,但是您可能会说我真的不知道如何处理它们。我需要 TrueType 解释器来访问坐标数据吗?

4

2 回答 2

1

你是对的,当然。

flags 位 1:如果设置,则对应的 x 坐标为 1 个字节长。如果未设置,则为 2 个字节。

标志位 2:如果设置,则对应的 y 坐标为 1 个字节长。如果未设置,则为 2 个字节。

很久以前,我编写了遍历 TrueType 表的代码——当然是用 C 语言。我想您可以将您的结果与 TTFDump 的输出(仍可从 Microsoft获得)进行比较。

于 2010-06-02T15:53:03.393 回答
0

对于 cmap 编码,首先支持任何 Unicode 编码,平台 id = 0 或平台 id = 3,编码 id = 10 或 1(名称表上的平台 id 列表),并且支持 cmap 格式 12(完整的 Unicode 空间)而不是 4 (只有基本的多语言平面)。之后,编码的相对优先级变得更加模糊 {Wansung、BIG5、PRC、Shift-JIS...},但也不太重要,因为字体往往主要是日文、中文或韩文字体 - 并非所有一下子在上面。迄今为止,格式 4 和 12 是 0、2、6 中最常见的。格式 14 可以在 CJK 字体中找到,它带有变体选择器作为格式 4 或 12 的补充,而格式 13 可以找到一种特殊的“最后手段”字体(当没有好的选择支持给定文本时,在字体回退期间使用)。

于 2012-10-26T04:10:01.950 回答