…様
ありがとうございます
>行末は「優先度なし」で良いのでは無いでしょうか。
そもそも全角/半角とは何のための処理か、と考えると、この処理は「行末全角」を基本として考えて「日本語組版においては行長の過不足は原則として二分刻みで起こるはずなので、二分の半端が生じた場合は行末の約物をベタにしても良い」とし、延ばし処理を減らしながら、行頭に句読点等が追い出されてしまう事を防ぐためのものと考えられます(実際今回はそれを期待します)。
ところが、本来日本語組版には存在しないはずの「欧文」が登場したために、行長の過不足が二分に限らず様々な数値を取るようになりました。
和欧混植の場合の全角/半角処理に望むべき挙動は「全角取りとベタ、どちらがより調整が多くなるか」を比較し、より調整が少ない方を取る、とするべきだと思います。
例えば「調整量を優先」で「50%/0%」の場合では、行長に過不足が無い場合は当然全角取り。行長に二分の半端が出た場合はベタ。
行長に「+12.5%」の余分が出た場合は、延ばし処理で「ベタ」(調整量は37.5%)、ただし行中に調整可能な約物、例えばパーレンが有る場合はパーレンを12.5%詰め「全角取り」(調整量は12.5%)とするなど、調整量が少なくなるように工夫されています。
実際の和欧混植に当てはめると、「行末を全角取りにするかベタにするかで、和欧文間の調整量が少なくなる方を選ぶ」という処理になります(行末約物の方が立場=優先度が低いので、和欧文間の調整量に遠慮して先に動くというわけです)。
つまり、行末約物は「全角または半角という決まりの中でまず二択を取り、その後その結果による半端を追い込みまたは延ばし処理で対応する」という事ですね。
そこで、今回は「0%/50%」の設定を利用し、その上で上記の挙動に期待したわけですが、実際には「0%/50%」とあるにも関わらず、「0%〜50%」と同じ動作が起きてしまったわけです。
0%/50%で優先度をなし(すなわち、この部分の処理を最後)にした上で、ひらがななどの優先度を9以上に上げた場合は、延ばし処理の後に全角か半角かを選ぶ事になるので、行末約物の最適値(ベタ)を守るために延ばし処理が起きます。つまり実質「行末約物半角」と大差が無い挙動になるでしょう(半端な位置に行末約物が浮いてしまう可能性を残して)。その場合は「行末約物半角」を選んだ方が良いと考えています。
ありがとうございました。
[16948] hiko (2014/06/09 Mon 02:35)