xycentershow.ps
xycentershow.psは文字あるいは文字列を,X方向だけではなく,Y方向に対してもセンタリングして表示するものです.centershowおよび,その類似コードはいわばxcentershowでX座標のみ考慮したものです.ネットで,xycentershow,hvcentershowなどを捜してみましたが,ヒットしませんでした.たまたま見ていたら,xycentershowに該当するものがあったので,
ここに置いておきます.
←ここまでは,2011.1.6に書いたものです.この時は,説明とコードを読んで,
stringwidthの意味を文法書で確認して納得しました.
2012.4になって,実際に使う必要が出てきたので使ってみたら,
y方向のセンタリングがうまく行きません.
最初に必要になったときには,センタリングしようとした文字が小さく,
centershowでもそんなに違和感がなかったので,それでよしとした訳ですが,
今回は文字が大きかったので,明らかにおかしい状態になってしまいました.
そこで調べてみると,stringwidthは実際にはyの値として常に0を返すようなのです.
これでは使い物にならないので,更に調べると,描画域のチェックには,
「charpath flattenpath pathbbox」がイデオムの様です.
但し,これでは描画範囲の中心は得られても,
見た目の中心にはならないという指摘もありました.
ということで,
文法的に正しい例をここに置きました.
見た目では,中心線が大分上の方にあるように見えましたので,
「亜」の中心にセンタリングされるように補正してみたものも
作ってみました.
まあ,当然ながら,文字あるいは文字列ごとに補正量は異なるでしょうから,
きれいな結果が欲しいときには,補正量をケースごとに変更することになります.
大体でよければ,場合によっては,私の最初の経験のように,
centershowで十分なこともあるし,文法通りのものでも問題にならないと思います.
その他研究参考情報
正面玄関
現行版:2012年4月10日
初 版:2011年1月6日
メールアドレス:nmizunoアットマークaffrc.go.jp