Ghostscript 9.06 で奇妙な動作が見られます。これは私の PS 構造に関係しているのか、それとも他の何かに関係しているのか疑問に思っています。
埋め込みフォントを定義してから、フォームをセットアップして以下のように使用しようとします。その下には、フォームを使用せずにテキストをページに直接配置するための行もいくつかあります。
globaldict
begin
true setglobal
/frm_test <<
/FormType 1 /BBox [-842 -842 596 596] /Matrix [1 0 0 1 0 0] /PaintProc { pop
/ArialMT 7.0 selectfont
0 0 moveto
(Test text form) show
} %endPaintProc
>> /Form defineresource pop
/form_test {/frm_test /Form findresource true setglobal execform false setglobal} bind def
%/form_test {/frm_test /Form findresource execform} bind def
false setglobal
end
gsave
10 820 translate
form_test
grestore
/ArialMT 7.0 selectfont
10 800 moveto
(Test text normal) show
showpage
ここでの問題は、form_test を呼び出すと、どちらの場合もフォント定義が破棄されることです。Ghostscript は指定されたフォントを見つけることができません。form_test を呼び出さない場合は、2 番目のケースが機能します。
/form_test 行をその下のコメントアウトされた行と交換すると、正常に動作します。しかし、この行は何をしているのですか?フォームがグローバル VM リージョン内で動作するように強制しているように見えますが、これが問題になる理由と、エラーが発生した場合に次の「selectfont」にエラーが伝播する理由がわかりません。
Acrobat Distiller がこれに対処できるのはなぜですか? Postscript は正しいですか? ありがとう。
編集:周囲のコマンドを gsave/grestore の代わりに保存/復元に変更すると、問題が 2 番目のテキストに影響を与えるのを防ぐことができますが、これはフォーム内でフォントが不明な理由を説明していません。また、フォームにはグラフィックス状態以外の副作用がないため、gsave/grestore で十分であると考えています。