PDF 到 Unicode CMap 字形映射
有没有办法获取 PDF toUnicode 表中未提供的字符 unicode? 或者我在映射角色时错过了什么?
我找不到代码点 <02DD>它将映射到 T(大写)字符 <0054>。 我想会有办法获取字符,因为预览(Mac APP)可以搜索文本?我想知道我哪里错过了????
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<< /Registry (Adobe)
/Ordering (UCS) /Supplement 0 >> def
/CMapName /Adobe-Identity-UCS def
/CMapType 2 def
1 begincodespacerange
<0000> <FFFF>
endcodespacerange
57 beginbfchar
<0001> <0020>
<0002> <0021>
<0003> <0026>
<0004> <2019>
<0005> <002C>
<0006> <002D>
<0007> <002E>
<0008> <003A>
<0009> <003F>
<000A> <0040>
<000B> <0041>
<000C> <0042>
<000D> <0043>
<000E> <0044>
<000F> <0045>
<0010> <0046>
<0011> <0047>
<0012> <0048>
<0013> <0049>
<0014> <004A>
<0015> <004B>
<0016> <004C>
<0017> <004D>
<0018> <004F>
<0019> <0050>
<001A> <0052>
<001B> <0053>
<001C> <0054>
<001D> <0055>
<001E> <0057>
<001F> <0059>
<0020> <2018>
<0021> <0061>
<0022> <0062>
<0023> <0063>
<0024> <0064>
<0025> <0065>
<0026> <0066>
<0027> <0067>
<0028> <0068>
<0029> <0069>
<002A> <006A>
<002B> <006B>
<002C> <006C>
<002D> <006D>
<002E> <006E>
<002F> <006F>
<0030> <0070>
<0031> <0072>
<0032> <0073>
<0033> <0074>
<0034> <0075>
<0035> <0077>
<0036> <0079>
<0037> <007A>
<0038> <FB01>
<0039> <00FC>
endbfchar
endcmap CMapName currentdict /CMap defineresource pop end end
Is there anyway to get a character unicode that didn't provided in PDF toUnicode table?
or did I miss something when mapping the character?
I can't find code point <02DD> which will map to a T (uppercase)character <0054>.
I think there will be a way to get the character, cause Preview (Mac APP) can search the text? I wonder where did I miss??????
/CIDInit /ProcSet findresource begin
12 dict begin
begincmap
/CIDSystemInfo
<< /Registry (Adobe)
/Ordering (UCS) /Supplement 0 >> def
/CMapName /Adobe-Identity-UCS def
/CMapType 2 def
1 begincodespacerange
<0000> <FFFF>
endcodespacerange
57 beginbfchar
<0001> <0020>
<0002> <0021>
<0003> <0026>
<0004> <2019>
<0005> <002C>
<0006> <002D>
<0007> <002E>
<0008> <003A>
<0009> <003F>
<000A> <0040>
<000B> <0041>
<000C> <0042>
<000D> <0043>
<000E> <0044>
<000F> <0045>
<0010> <0046>
<0011> <0047>
<0012> <0048>
<0013> <0049>
<0014> <004A>
<0015> <004B>
<0016> <004C>
<0017> <004D>
<0018> <004F>
<0019> <0050>
<001A> <0052>
<001B> <0053>
<001C> <0054>
<001D> <0055>
<001E> <0057>
<001F> <0059>
<0020> <2018>
<0021> <0061>
<0022> <0062>
<0023> <0063>
<0024> <0064>
<0025> <0065>
<0026> <0066>
<0027> <0067>
<0028> <0068>
<0029> <0069>
<002A> <006A>
<002B> <006B>
<002C> <006C>
<002D> <006D>
<002E> <006E>
<002F> <006F>
<0030> <0070>
<0031> <0072>
<0032> <0073>
<0033> <0074>
<0034> <0075>
<0035> <0077>
<0036> <0079>
<0037> <007A>
<0038> <FB01>
<0039> <00FC>
endbfchar
endcmap CMapName currentdict /CMap defineresource pop end end
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在未提供 ToUnicode CMap 的情况下,有多种查找值的策略,但没有一个是理想的。
您可以检查字体的编码,看看它是否是标准的,如果是,那么您“可能”很幸运,假设该字体没有说谎。
您可以对 CIDFonts 的排序和注册表执行相同的操作。
如果失败,您可以尝试将字符代码视为 Unicode 代码点。这些都不能保证有效。
您还没有说出为什么您希望找到字符代码 0x02DD 的映射。
请注意,ToUnicode CMap 不映射到字符,而是映射到 Unicode (UTF-16 IIRC) 代码点。
也许您可以将整个 PDF 文件放在某个地方?查看位很难弄清楚发生了什么。
There are numerous strategies for finding a value when no ToUnicode CMap is provided, none of them are ideal.
You can examine the Encoding of the font to see if its standard, if it is then you 'might' be in luck, assuming that the font isn't lying.
You can do the same with the Ordering and Registry of CIDFonts.
Failing that, you can try treating the character code as a Unicode code point. None of these are guaranteed to work.
You haven't said why you expect to find a mapping for the character code 0x02DD.
Note that ToUnicode CMaps don't map to characters, they map to Unicode (UTF-16 IIRC) code points.
Maybe you could put the entire PDF file somewhere ? Looking at bits makes it hard to figure out what's going on.