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

PDF文件通常对字体字形使用“正确”的字符代码吗?

周飞
2023-03-14

假设我有一个包含一个或多个嵌入式字体的PDF文件。以下是我对文本单个字符呈现方式的理解:

  • 首先,确定角色使用的字体
  • 使用嵌入在PDF中的字体的“cmap”来确定给定字符的字体字形名称。例如,角色的

我的问题是:PDF cmap通常是一致的吗?换句话说,如果我遇到这个角色“

当然,我意识到cmap有可能使用非直观的映射——我想我是在问,这在现实世界中真的会发生吗?

我的具体用例是音乐字体。我正在分析PDF中的字符,以确定每个字符代表的音乐符号(例如,高音谱号、记事本等)。我想知道我有多自信,字体名称和字符代码的组合总是会产生相同的字形。例如,如果我知道字体名是“Opus”,字形是“#”,我能假设它总是映射到高音谱号字形吗?或者我必须分析字形的度量,以确保它实际上是一个高音谱号?

共有1个答案

欧阳飞章
2023-03-14

它不同于一个PDF创建者到另一个。

一种相当常见的方法(唉!)是“遇到的顺序”,其中文本流中的第一个字符被映射到\001,然后映射到\002,依此类推。因此,文本“Hello”将被编码为\001\002\003\003\004

我想知道我有多自信,字体名称和字符代码的组合总是会产生相同的字形。

在单个PDF文档中,如果在不同的上下文中使用相同的字体对象,这将是真的——映射在字体对象内部定义。如果您遇到另一个字体对象使用相同的字体,但它指向另一个字体流(即,字体子集嵌入了两次),那么它可能不是真的。每个子集可能有自己的编码。

只有当字体对象包含/ToUnicode映射时,您才能确信值映射到正确的字符。

 类似资料:
  • CIDfont宽度是在什么单位/空间中定义的?我试图为文档中的glyph获取设备空间坐标(或者,在我的例子中,相当于默认用户空间),但我在复合字体的glyph置换方面遇到了问题。 国际标准化组织规范(CIDFonts上的8.7.1)说DW是以用户单位定义的。这似乎是一个奇怪的选择,因为其他字体类型(除了Type3)的宽度都是以字形空间定义的,但是W中的宽度也是以用户单位定义的是有意义的。 但情况似

  • 问题内容: 我正在寻找一个正则表达式来匹配Java源代码中的字符串文字。 可能吗? 我的意图是用其他东西替换另一个字符串中的所有字符串。使用: 这样的事情。 问题答案: 好。那么,您想要在字符串中搜索以双引号开头和结尾的一系列字符吗? 注意非贪婪模式。

  • 在我的CentOS7工作站上,我有elasticsearch(ver.5.5.1)服务,按映像:docker.elastic.co/elasticsearch/elasticsearch:5.5.1。 我的工作站上的文件系统类型是XFS。 我有.tar存档文件/usr/share/elasticsearch/data/nodes/0/包含索引结构:(来自kibana的JSON) 开始记录我的JVM

  • 我正在尝试使用iText7阅读PDF中使用的所有字体。为此,我创建了一个,它将中的字体读取为: 这似乎很好,让我可以阅读所有1型字体。但是调用

  • 我现在试图修改一个只有文本内容的PDF文件。当我使用 谢谢

  • 我试图计算矢量PDF中每个文本图示符的精确边界框。 这包括跟踪CTM,绘制/定位PDF指令等。,但也计算字形空间中每个特定字形的边界(使用嵌入式字体中GLYF表中的信息)。 我意识到PDF字体描述符包括每个嵌入式字体的粗略边界框,但这是字体中所有字形的组合——即适合字体中所有字形的最小边界框。为了我的目的,我需要更精确的定位。 我的具体应用是从乐谱的矢量PDF中提取音乐语义。因此,一个很好的约束是