|
回答ではありませんが、少し調べてみました。
現在の\SEL命令による選択肢描画命令を実行した際に表示される文字列の位置はどうなっているのかを調べてみました。(\CSELは調べてません)
es_select.yst:539行目〜559行目の箇所で描画開始位置を決定しています。
具体的には以下の箇所で描画開始位置のX座標を決定しています。
544:@SEL.TX.X(@_LC) = (@sel_sx / 2) - (@_RINT(1) * @SEL.TX.SX / 2)
549:@SEL.TX.X(@_LC) = (@sel_sx / 2) - (@_RINT(1) * @SEL.TX.AL.SX / 2)
556:@SEL.TX.X(@_LC) = (@sel_sx / 2) - (@_RINT(1) * @SEL.TX.NA.SX / 2)
数式を日本語にすると
「描画開始位置 = 選択肢のX座標 / 2 - 文字数 * 文字サイズX座標 / 2 」
つまり、全角文字での選択肢内の中央揃え用の開始位置を算出しています。
半角文字を中央揃えしたい場合は、半角は全角の半分ですので、/2ではなく、/4にします。
以下に変更すると半角文字での中央揃えができるようになります。
544:@SEL.TX.X(@_LC) = (@sel_sx / 2) - (@_RINT(1) * @SEL.TX.SX / 4)
549:@SEL.TX.X(@_LC) = (@sel_sx / 2) - (@_RINT(1) * @SEL.TX.AL.SX / 4)
556:@SEL.TX.X(@_LC) = (@sel_sx / 2) - (@_RINT(1) * @SEL.TX.NA.SX / 4)
これだと、半角と全角のどちらかにしか対応できていない状態です。
全角、半角が混在した場合の中央揃えは
「合計文字X座標 = 文字数 * 文字サイズX座標」
合計文字X座標を、個別文字X座標の合計にすればよいハズです。
「合計文字X座標 = 文字サイズX座標(1) + ... 文字サイズX座標(N)」
※Yu-risは配列が0始まりのため、-1をする必要がある可能性があります
全角と半角の混在は検証も何もしていませんので、推測の域からでてはおりません。
ですが、ERIS側を弄る事になりますのであまりお勧めはしません。
分かったこととして、ERIS側を弄らないと、\SELでの半角文字を含む選択肢の中央揃えはできないみたいです。
なので、原始的ではありますが、「中央揃えにする」ということを「表示位置を調整する」という意味に置き換えてよいのならば、選択肢文字列の前に半角スペースや全角スペースを入れることで表示位置を調整することできると思います。
伝わりにくい文章で申し訳ありませんが、お役にたてればと思います。
|
|
|