当前位置: 首页 > 知识库问答 >
问题:

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

满自明
2023-03-14

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

国际标准化组织规范(CIDFonts上的8.7.1)说DW是以用户单位定义的。这似乎是一个奇怪的选择,因为其他字体类型(除了Type3)的宽度都是以字形空间定义的,但是W中的宽度也是以用户单位定义的是有意义的。

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

我错在哪里?

共有1个答案

唐阳飇
2023-03-14

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

我假设您发现ISO 32000-1第9.7.4.1节(CIDFonts节的General小节)中提到的用户单元:

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

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

事实上,这里的“(以用户单位定义)”是相当误导的,所以它在国际标准化组织32000-2中被删除了,相应的条目只说

DW号(可选)CIDFont中字形的默认宽度(请参见9.7.4.3CIDFonts中的字形度量)。默认值: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 width DW的默认值1000允许一个1×1的正方形文本空间区域,而正方形区域确实是许多CJK glyph可以正确绘制的区域,这使得该默认值是合理的。

 类似资料:
  • 是否有一种方法可以从C#访问私有(即未安装)字体的字形宽度而不求助于以下内容:如何通过解析TTF字体文件获得字形宽度?

  • 您可以将日文字体和西文字体中的字符混合起来,用做一种复合字体。复合字体显示在字体列表的起始处。 重要说明:复合字体必须基于日文字体,例如,无法创建包含中文或韩文字体的字体,也无法使用从其他应用程序复制的基于中文或韩文的复合字体。 1 选择 “文字 ”>“复合字体 ”。如果看不到此命令,则可以在 “文字 ”首选项中选择 “显示亚洲语言选项 ”。 2 单击 “新建 ”,输入复合字体的名称,然后单击 “

  • 问题内容: 我正在使用Java绘制一些文本,但是对我来说很难计算字符串的宽度。例如:zheng中国…这个字符串要占用多长时间? 问题答案: 对于单个字符串,您可以获取给定图形字体的度量,然后使用该度量来计算字符串大小。例如: 如果您有更复杂的文本布局要求,例如在给定宽度内流动一段文本,则可以创建一个对象,例如此示例(来自docs):

  • 假设我有一个包含一个或多个嵌入式字体的PDF文件。以下是我对文本单个字符呈现方式的理解: 首先,确定角色使用的字体 使用嵌入在PDF中的字体的“cmap”来确定给定字符的字体字形名称。例如,角色的 我的问题是:PDF cmap通常是一致的吗?换句话说,如果我遇到这个角色“ 当然,我意识到cmap有可能使用非直观的映射——我想我是在问,这在现实世界中真的会发生吗? 我的具体用例是音乐字体。我正在分析

  • 有时候,希望一篇文章中的英文单词或英文字母,无论是小写还是大写,统一变成大写,就可以使用 font-variant属性实现。 font-variant属性用来使英文字母变为小型大写字母,可选值有 normal | small-caps,默认值为 normal。normal 为正常的字体;small-caps 让字母变成小型大写字母,这意味着所有的小写字母均会被转换为大写,但字体更小。如: .nor

  • 问题内容: 我很难理解字体缩放。 目前,我有这个网站与身体的100%。不过是100%这似乎可以计算出16个像素。 我给人的印象是100%会以某种方式引用浏览器窗口的大小,但是显然不是因为将窗口缩小到移动宽度还是全屏宽屏桌面总是16像素。 如何使网站上的文本相对于其容器而言?我尝试使用,但这也无法扩展。 我的理由是,当你调整,这东西像我的菜单中就被压扁,所以我需要降低 的相对其它元素的容器的宽度之中