Objective c PDF:字符代码->;字形名称->;NSString

Objective c PDF:字符代码->;字形名称->;NSString,objective-c,pdf,character,Objective C,Pdf,Character,继我之前的问题之后,尝试使用CGPDF*函数从PDF文件中提取文本,具有: CGPDFStringRef pdfString 我发现它可以转换为一组字符代码,如下所示: const unsigned char *characterCodes = CGPDFStringGetBytePtr(pdfString); 现在,我试图提取的文本是用14种Type1基本字体中的一种编写的,而PDF本身并没有编码。因此,我分析了该字体的相关AFM文件,给出了从字符代码到字形名称的映射,其尺寸如下: C 6

继我之前的问题之后,尝试使用CGPDF*函数从PDF文件中提取文本,具有:

CGPDFStringRef pdfString
我发现它可以转换为一组字符代码,如下所示:

const unsigned char *characterCodes = CGPDFStringGetBytePtr(pdfString);
现在,我试图提取的文本是用14种Type1基本字体中的一种编写的,而PDF本身并没有编码。因此,我分析了该字体的相关AFM文件,给出了从字符代码到字形名称的映射,其尺寸如下:

C 61 ; WX 600 ; N equal ; B 80 138 520 376 ;
C 63 ; WX 600 ; N question ; B 129 -15 492 572 ;
C 64 ; WX 600 ; N at ; B 77 -15 533 622 ;
C 65 ; WX 600 ; N A ; B 3 0 597 562 ;
C 66 ; WX 600 ; N B ; B 43 0 559 562 ;
我的问题是,知道字符代码后,说:“61”如何从它的标志符号名称“equal”转换为NSString@“=”。 尤其是当该字符代码被重新映射到另一个字形名称时,比如说,PDF的字体编码选项“question”

以前的问题: 和

我还没有对此进行测试,但在我看来,您需要使用:

Adobe Glyph命名约定的目的是支持 从字形序列计算Unicode字符串。 这是通过指定从字形名称到字符的映射来实现的 字符串

该页面上的链接似乎与您的问题相关。
样本片段:


ε;03B5
epsilontonos;03AD
相等;003D
等单调空间;FF1D
相等小;FE66
等高;207C

那么你所需要做的就是

编辑:
确认上述信息后,我发现第5.9节-文本内容提取的以下解释:

如果字体是使用预定义编码之一的简单字体 MacRomanEncoding、MacExpertEncoding或WinAnsienceODing,或 一种编码,其差异数组仅包括字符名 取自Adobe标准拉丁字符集和命名字符集 符号字体中的字符(见附录D):

  • 根据上的表D.1将字符代码映射到字符名称 第996页和字体的差异数组
  • 在Adobe Glyph列表中查找字符名(请参见 参考书目)以获取相应的Unicode值

  • 非常感谢,我现在正忙着另一个项目。一旦我有时间核实你的答案,我会接受它。谢谢你,yms,我实际上也读过PDF参考文件的大纲,它当时对我来说没有意义。谢谢!