1

Illustrator や InDesign などの Adob​​e 製品によって生成された .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 ファイルを多かれ少なかれゼロから実際に作成すると、上記のサンプルよりもはるかに読みやすくなり、この場合は編集可能になります。

Postscript 自体は難しくありません。EPS を生成しているので、上記のように自動生成されたコードに頼るのではなく、すべてのテキスト生成部分を人間が生成したコードとして実行する方が簡単かもしれません。各文字ペア間の距離は (postscript の外部で) 計算され、上記でハードコーディングされているように見えるため、いくつかの組版機能が失われます。EPS ファイルの残りを保持し、「テキスト コア」部分を置き換えたいと思うかもしれません。そうすると、任意の言語の通常のプログラムで行うように、人間が読める部分に調整されます。

サンプル レンダリングは次のようになります。

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

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

そこからテキストの区切りをマークする方がはるかに簡単です。より洗練されたものが必要で、ジェネレーターコードから推定する代わりに、postscrit が改行自体を処理するようにすることは可能ですが、そのロジックを postscript 自体にコーディングする必要があります。

于 2011-02-04T13:50:28.300 に答える