1

我正在尝试专门更改由 Adob​​e 产品(如 Illustrator 或 InDesign)生成的 .EPS 文件中的文本。无论出于何种原因,一些字体被分成不同的行并移动了一点点。这不是 TrueType 与 OpenType 的区别。

这是一个示例,文本是“$$tag1$$”:

%ADOEndSubsetFont
/ZDCMCB+NiagaraSolid-Reg /NiagaraSolid-Reg findfont ct_VMDictPut
/ZDCMCB+NiagaraSolid-Reg*1 
[36{/.notdef}rp /dollar 12{/.notdef}rp /one 47{/.notdef}rp /a 5{/.notdef}rp /g 
12{/.notdef}rp /t 139{/.notdef}rp]
ZDCMCB+NiagaraSolid-Reg nf
ZDCMCB+NiagaraSolid-Reg*1 [9 0 0 -9 0 0 ]msf
264.206 109.1 mo
($$t)sh
270.916 109.1 mo
(ag1$$)
[2.42188 2.51758 1.45117 2.53906 0 ]xsh

这是一个不会中断的示例,文本是“$$tag1$$”:

%ADOEndSubsetFont
/ZDCMCC+Utsaah-BoldItalic /Utsaah-BoldItalic findfont ct_VMDictPut
/ZDCMCC+Utsaah-BoldItalic*1 
[36{/.notdef}rp /dollar 13{/.notdef}rp /two 46{/.notdef}rp /a 5{/.notdef}rp /g 
12{/.notdef}rp /t 139{/.notdef}rp]
ZDCMCC+Utsaah-BoldItalic nf
ZDCMCC+Utsaah-BoldItalic*1 [9 0 0 -9 0 0 ]msf
264.206 118.1 mo
($$tag2$$)sh
%ADOBeginSubsetFont: Garamond-Bold Initial
%ADOt1write: (1.0.24)

我们使用 PHP 来交换变量并用新值重新保存文件。问题是我们无法可靠地确定文本会在哪里中断,如果是,我们无法替换它,或者在尝试将其转换为 PDF 之类的文件时文件会出错。

非常感谢任何帮助!

4

1 回答 1

3

由产品生成的后记通常(在这种情况下)是不可读或不可编辑的。

作为一种功能齐全的语言,如果确实或多或少地从头开始创建 postscript 文件,它最终会比上面的示例更具可读性,并且在这种情况下是可编辑的。

Postscript 本身并不难 - 因为您正在生成 EPS,也许您将所有文本生成部分作为人工生成的代码来完成,而不是像上面那样依赖自动生成的代码。您将失去一些排版细节,因为每个字母对之间的距离似乎是计算出来的(在附言之外)并在上面进行了硬编码。您可能只想保留 EPS 文件的其余部分并替换“文本核心”部分 - 然后,就像在任何语言的常规程序中所做的那样,maiking 会调整为人类可读的部分。

示例渲染可能类似于:

%!PS-Adobe EPSF-3.0
%%BoundingBox: 0 0 800 200

(VeraSeeBd.ttf) findfont 70 scalefont setfont
10 10 moveto
(Hello World!) show

从那里标记文本中断要容易得多。如果您想要更复杂的东西并且让 postscript 自己处理换行符,而不是从生成器代码中进行估计,这是可能的 - 但您必须将该逻辑编码到 postscript 本身中。

于 2011-02-04T13:50:28.300 回答