OldSlav-0.1g bug fixed.

もうやることがなくなったと書いたばかりの OldSlav。ところが,pTeX 縦組の処理結果を子細にチェックしてみたら,アクセント位置がおかしい。文字のおなかのあたりに打たれているのである。横組だとまったく正常なのに。

原因はほどなく判明した。文字のメトリック情報,つまり幅,高さ,深さを \the\wd0 などで表示させて,縦組と横組とで数値を比較すると,なんと高さと深さが変わるのである。その和は同じ。深さの数値が増えている。このためアクセント位置を高さに応じて \raise で持ち上げる方式において,高さが小さくなった分,低い位置にアクセントが付加されてしまったのだった。

fonts_ty.png

対策は,組版方向をチェックして,縦組の場合持ち上げるサイズに深さを加えるという基本方針で OK そうであった。縦組の時には高さの量が深さに奪われているからである。ただし,アクセントと対象文字の深さについて後者が前者よりも大の時という条件が付く。これら双方の深さの関係を無視して一律対象文字の深さを加えると,英語の g のような深い文字では逆にアクセント位置が高すぎてしまうことも判明したからである。

pTeX の組版方向は \iftdir 命令でチェックできる。その前に \pfmtname マクロ (pTeX のフォーマット名称) が定義されているかをチェックしておかなければ,\iftdir 命令は欧文用 LaTeX ではエラーとなってしまう。 これが対策のもうひとつの注意事項であった。

アクセントが付くと考えられる文字について,すべてのアクセント・パターンを確認したが問題なさそうである。もともとオリジナルの大文字ヤッチのアクセント位置が気に入らなかったので,バグ対策ついでに少し右下方にずらすなどの微調整を入れておいた。oldslav-0.1g.{tar.gz,zip} を更新した。

(p)LaTeX2e ではエンコーディングに応じたアクセント命令を \DeclareTextAccent 命令で簡単に定義できる。しかし文字によってアクセント位置を微調整したい教会スラヴ語フォントなどでは,やはりマクロを自分で書く必要がある。欧文フォントの独自パッケージを作成しようとする方は pTeX のこうした仕様に注意されたい。

しかしながら pTeX は縦組でこういう仕様になっているなんて想像もしなかった。どこかに文書化されているのだろうか。手元にある pTeX 本には見当たらなかった。縦組の場合はベースラインを上げる,という意味はこういうことだったわけだ。EUC,SJIS とともに組版方向の確認もパッケージのテストにおいて必須なのだと認識した次第である。