我正试图计算矢量PDF中每个文本字形的确切边界框。精确的PDF中字形的边界框?
这包括跟踪CTM,绘制/定位PDF指令等,还计算“字形空间”(使用来自嵌入字体中GLYF表的信息)中每个特定字形的边界。
我意识到PDF FontDescriptor包含每个嵌入字体的粗略边界框,但这是字体中所有字形的组合 - 即适合字体中所有字形的最小边界框。为了我的目的,我需要更精确的定位。
我的具体应用提取乐谱的矢量PDF音乐语义。因此,一个很好的约束是我可以假设字形不是在同一个Tj/TJ运算符中绘制在一起的。每个字形都是独立绘制的。
而且,请注意,我定义边框为“可以包含字形的全部取材部位最小的盒子。”没有必要忽略上行/下行/等。这可能被认为是在其他应用程序的边界框“外部”。
有很多移动部件在这里,我发现它很难调试。所以这里是我最喜欢的帮助:
- This example PDF I've created有10个字形。设备空间中这10个字形的“基本事实”边界框定位是什么?我目前的代码产生以下内容,但这是不正确的。我知道这是不正确,因为它说的第一个字形(” &‘)水平相交的第二(’\ u02d9" ),你可以看到当您查看PDF阅读器PDF格式是不正确的。
'&' (57.2799755477664, 600.7092061684704, 86.7452642315424, 677.1570718099680)
'\u02d9' (82.0030393188000, 633.6851606704608, 96.3090818379936, 644.6969866323168)
'\u0153' (144.7841941848000, 623.9630080194528, 158.6735558539200, 634.5581702962656)
'\u0153' (181.6778111184000, 619.0027260546528, 195.5671727875200, 629.5978883314656)
'w' (226.1671727148000, 611.3638918288608, 245.0765465300448, 622.3161944071392)
'w' (320.1063822180000, 631.2050196880608, 339.0157560332448, 642.1573222663392)
'\u0153' (414.0455917212000, 641.3239948962528, 427.9349533903200, 651.9191571730656)
'\u0153' (450.9392086548000, 636.3637129314528, 464.8285703239200, 646.9588752082656)
'\u0153' (487.9878407856000, 631.4034309666528, 501.8772024547200, 641.9985932434656)
'\u0153' (524.8814577192000, 628.9232899842528, 538.7708193883200, 639.5184522610656)
你是如何计算的位置? (由于PDF的复杂性,我意识到这是一个很重要的问题)。这将对演练有巨大的帮助,我相信这对将来的其他人会有帮助。
是否有一个工具,这是否下架?
恐怕** A ** PDF说明书中的描述已经相当不错了。您可能想要提出具体问题或分享您的(整理)代码进行分析,而不是等待某人重新制定规范。而** B **你的起始位置看起来不太远(差异可能是由于目标坐标系或选定的起始点不同),但是你从这些坐标系跨出的矩形看起来很奇怪。 – mkl