ロシア語とかの文章は、ワープロソフトで綺麗な出力が得られます。が、今回はポストスクリプトにこだわって・・・・。
筆者の環境にはプロポーショナルフォントのキリル文字がないようです。ネットを見れば、ロシア方面のサイトで入手できるようですが、私の技量ではちょっと無理。
手元にあるフォントには等幅、つまり全角データしかなくて、いざ文章を出してみると、
どうも文字と文字の間があいていて、見栄えが悪い気がします。読みづらいし。
そこで、少し工夫してみました。MS明朝(MS-Mincho-90ms-RKSJ-H)でやってます。
上の図の説明ですが、1行目、2行目が
(Good morning!) show
(Доброе утро!) show
と普通に出したものです。英字は i などの細い字が幅をとってません。2行目はすかすかですね。等幅フォントなので、律儀に1文字ずつ進んでます。カーニング、リガチャとか以前の問題。
3行目がX方向(文字の進行方向)を1文字書いたら、ちょっと戻ってというふうにしたもの。フォントスケールとの兼ね合いもあるのですが、今回は -40 にしてます。
-40 0 (Доброе утро!) ashow
としたもの。X方向の増分をマイナス値にすることで戻してくっつけてます。
4行目は均等配置を施したもの
400 (Доброе утро!) str_even
400ポイント枠に均等分割したものです。文字幅まで縮小されてしまいますから、細長い文字になってしまいます。
こうしてみると ashow を使うのが、よさそうですね。好みの数値で増やすようにすれば。
あと、文字によってくっつきすぎたりするようなので、気になるところだけカレントポインタ増分をいじればよいでしょう。
(課題点・・・かな)
もうひとつ考えてるのは文字ひとつずつの増値を個別に配列で持たせて、処理する方法。
これも気が向いたらトライしてみます。
4行目の均等配置ですが、下記のようなコードでやってます。これを工夫してみてもいいのかな・・・。
/str_even {
1 dict begin
/str exch def
/boxWidth exch def
/strWidth str stringwidth pop def
/lengthRatio strWidth boxWidth div def
gsave
1 lengthRatio div 1 scale
str show
grestore
end
} def