复合(Type0)字体的PDF字形宽度

复合(Type0)字体的PDF字形宽度,pdf,fonts,Pdf,Fonts,在什么单位/空间中定义字体宽度? 我正在尝试获取文档中glyph的设备空间坐标(或者,在我的例子中,是默认用户空间),但是我在复合字体的glyph置换方面遇到了问题 ISO规范(CIDFonts上的8.7.1)规定DW是以用户单位定义的。 这似乎是一个奇怪的选择,因为其他字体类型(Type3除外)的宽度是在glyph空间中定义的,但是W中的宽度也是在用户单位中定义的 但情况似乎并非如此。当计算字形位移(如9.4.4文本空间详细信息中所述)时,将宽度乘以反向文本矩阵以将其转换为文本空间,似乎无法给

在什么单位/空间中定义字体宽度? 我正在尝试获取文档中glyph的设备空间坐标(或者,在我的例子中,是默认用户空间),但是我在复合字体的glyph置换方面遇到了问题

ISO规范(CIDFonts上的8.7.1)规定DW是以用户单位定义的。 这似乎是一个奇怪的选择,因为其他字体类型(Type3除外)的宽度是在glyph空间中定义的,但是W中的宽度也是在用户单位中定义的

但情况似乎并非如此。当计算字形位移(如9.4.4文本空间详细信息中所述)时,将宽度乘以反向文本矩阵以将其转换为文本空间,似乎无法给出正确的结果。我正在处理的文档使用默认用户空间(不定义CTM或设置UserUnit),因此据我所知,这应该是可行的

我错在哪里

ISO规范(CIDFonts上的8.7.1)规定DW是以用户单位定义的

我假设您发现ISO 32000-1第9.7.4.1节中提到的“用户单位”(第“CIDFonts”节的“概述”小节):

DW 整数 (可选)CIDFont中字形的默认宽度(请参阅9.7.4.3,“CIDFonts中的字形度量”)。默认值:1000(以用户单位定义)

(ISO 32000-1,表117–CIDFont字典中的条目)

事实上,这里的“(以用户单位定义)”是相当误导的,因此在ISO 32000-2中删除了它,其中相应的条目仅表示

DW 数 (可选)CIDFont中字形的默认宽度(请参阅9.7.4.3,“CIDFonts中的字形度量”)。默认值:1000

(ISO 32000-2,表115——CIDFont字典中的条目)

假定字体置换数字以用户空间单位给出也没有任何意义,因为置换必须考虑当前状态,如文本矩阵、水平缩放和字体大小,因此不能是用户空间中的固定尺寸

实际上,我们使用CID字体的情况与使用其他字体的情况相同,位移在字形空间中给出,并转换为ISO 32000-1和ISO 32000-2第8.3.2.4节(“其他坐标空间”)中定义的文本空间:

字体中的字符字形应在字形空间中定义(见9.2.4,“字形定位和度量”)。从字形空间到文本空间的转换应由字体矩阵定义。对于大多数类型的字体,该矩阵应预定义为将1000单位的字形空间映射为1单位的文本空间;对于3类字体,字体矩阵应在字体字典中明确给出(见9.6.5,“3类字体”)


因此,默认CIDFont glyph widthDW的默认值1000允许一个1×1的正方形文本空间区域,而正方形区域确实是许多CJK glyph可以正确绘制的区域,使此默认值合理。

正是如此。我和32000-1坐在这里。我觉得在这里使用用户单位很奇怪。