next up previous contents
Next: 描画範囲の制御 Up: PostScriptを使う Previous: 図形を書く

文字を書く

文字を書くためにまずフォントを選びます。フォントはスケーラブルフォン トとして扱われます。まずフォントの種類を選び、次にその大きさを設定し、 それをコンテキストに設定します。その上で文字列を表示させます。例を見て ください。

        /Times-Roman findfont   % Times-Romanを選ぶ

        15 scalefont            % 15ポイントのスケール

        setfont                 % 描画フォントに設定

        120 220 moveto          % 文字を書く位置に移動

        (Hello! world) show             % Hello! worldと書く

/は文字列定数であることを表しています。Times-Romanというのがデータであ るということです。それをfindfontします。最後の行は()に囲まれた部分が空 白も含めて一括して扱われることを意味しています。

通常のPostScriptプリンターにはおよそ次のようなフォントがあります。

        Times-Roman

        Times-Bold

        Times-Italic

        Times-BoldItalic

        Helvetica

        Helvetica-Bold

        Helvetica-Oblique

        Helvetica-BoldOblique

        Courier

        Courier-Bold

        Courier-Oblique

        Courier-BoldOblique

        Symbol

これらは標準フォントですがこれら以外にも色々あります。日本語に関しては

        Ryumin-Ligh             リュウミン(竜明朝書体)ライト

        GothicBBB-Medium        ゴシックBBBミディアム

が標準です。

文字の外枠(アウトライン)だけを書かすにはどうしたらよいでしょう。文字 のアウトラインもパスとして扱えます。showのかわりにcharpathを使うことに よって図形のパスと同じように扱えます。

        100 300 moveto (Outline) true charpath stroke

この例ではOutlineという文字のアウトラインをstrokeしています。もちろん fillもできます。後から出てくるclipにも使えます。

紙の上に文字を表示する位置は通常左下端にmovetoすることで決めています。 ですが文字列の右下の座標を合わせたいときもあります。そのためには文字列 の実際の長さを知らなければなりません。これは次のようにやります。まず右 下にmovetoで移動したあと

        (Right-Justify) dup stringwidth pop 0 exch sub 0 rmoveto show

すこし難しいですね。まず文字列Right-Justifyを、showするためと幅を測る ためdupします。スタックに二つ文字列が入っています。つぎのstringwidthで 文字列の寸法を測ります。この結果スタックに幅と高さが入りますが、高さは 必要ないので吐き出してしまいます。popです。次にその幅だけ左から文字を 書きたいので、0をスタックに入れた後スタックの一番上の2つをexchで交換し ます。一番上に幅、次に0が入っています。ここでsubすることにより一番上の 数(幅)で二番目(0)を引きます。結果は-幅です。これをX座標とし、0をプッシュ してY座標としてrmovetoします。文字列の幅だけ左に移動しました。スタック には文字列が残っています。showで表示されました。

同じようにして真ん中で合わせたり高さを合わせることも出来ます。ちょっ と難しい練習問題ですね。



next up previous contents
Next: 描画範囲の制御 Up: PostScriptを使う Previous: 図形を書く



Kinya Hibino
Sun Jan 14 21:50:32 JST 1996