Let's PostScript(1) Hello World!!
教材と環境
いまさらながら、PostScript(一部PDF)について、ざっくりと勉強していこうと思います。
使用する教材は、いわゆる赤本です。
環境はGhostScriptのVersion9.52を用います。
対話モードで遊ぶ
引数なしでGhostScriptを起動すると、対話モードで起動するので、これを使って描画してみます。
GPL Ghostscript 9.52 (2020-03-19) Copyright (C) 2020 Artifex Software, Inc. All rights reserved. This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY: see the file COPYING for details. GS>
Hello world
PostScriptは文字列の表現方法として3つの種類があります。
- テキスト(Hello World!!)
- 16進データ<48656C6C6F20576F726C642121>
- ASCII85データ※今は扱わない。
ASCII85は対話モードで使うには無理があるので、まずは上記二つのHallo world!!を表示します。
文字を表示するには、"どの書体で、どのサイズで、どこに、何を書くかを示す必要があります。
フォントの選択
findfontオペレータで選択します
書式設定
scalefontオペレータで指定します。
座標指定
movetoオペレータで指定します。
文字指定
テキスト(Hello World!!)
16進データ<48656C6C6F20576F726C642121>
で今回はHello Worldします。
初めてのshowpage
これをGhostScriptの対話モードで入力していくとこのような感じになります。
GS>/Helvetica findfont 20 scalefont setfont GS>0 0 moveto GS>(Hello world!!) show GS>100 100 moveto GS><48656C6C6F20576F726C642121> show GS>showpage >>showpage, press <return> to continue<<
最後のshowpageで画像を出力します。出てくる画像は以下のようなものです。ほとんどが空白なのですが、少し下にスクロールすると、Hello Worldが見えてきます。
リテラルテキストのHello World(座標0,0)が下で、16進データで指定したHellow World(座標100,100)が上です。 違和感を感じますが、この辺りはグラフィックのあたりで勉強していこうと思います。
最後に、先ほどのHello Worldですが、複数のオペレータをまとめて実行しているので、できるだけ細かく指示しなおしてみます。出力される画像は同じです。
GS>/Helvetica GS<1>findfont GS<1>20 GS<2>scalefont GS<1>setfont GS>0 0 GS<2>moveto GS>(Hello World!!) GS<1>show GS>0 0 GS<2>moveto GS><48656C6C6F20576F726C642121> GS<1>show GS>showpage >>showpage, press <return> to continue<<
増減するGS<...>は何なんのかってあたりを次回勉強していこうかと思います。