假设我有一个PDF文件,其中包含一个或多个嵌入字体。以下是我对单个文本字符如何呈现的理解:
- 首先,确定字符使用的字体。
- 使用嵌入在PDF中的字体"cmap"来确定给定字符的字体字形名称。例如,PDF文本中的字符'&'可能映射到字体内部称为'& '的字形。
- 使用字体的"glyf"表来确定字形名称的边界框/绘图指令。
我的问题是:PDF cmap通常是一致的吗?换句话说,如果我在PDF中遇到字符"&",我能保证cmap总是将"&"映射到与符号吗?或者一些pdf生成软件在字符代码和字形名称之间创建自己的任意映射(这将是相当邪恶的,可能会破坏pdf中的搜索和文本选择)?
当然,我意识到cmap 有可能使用不直观的映射——我想我在问,这在现实世界中真的会发生吗?我的具体用例是在音乐字体的世界。我正在分析PDF中的字符,以确定每个字符代表哪种音乐符号(例如,高音谱号,音符头等)。我想知道我对字体名称和字符代码的组合将始终产生相同的字形有多大的信心。例如,如果我知道字体名称是"Opus",字形是"#",那么我可以假设总是映射到高音谱号字形吗?或者我是否需要分析符号的参数以确保它实际上是一个高音谱号?
每个PDF创建者都不一样。
一个相当常见的方法(唉!)是"顺序遇到",其中文本流中的第一个字符被映射到