なんでやねんDTP・新館

はてなダイアリーから移行しました…

「調整量を優先」かつ「ぶら下がり/あり」組版時にみるバグ

記事(及び画像)中で【行末約物】の扱いについて「全角/半角浮動」「全角/半角(浮動)」などと表記してあるものは「状況により全角/半角の二者択一」という意味であり、決して中間値を採るという意味ではありません。私の(用語的な)理解不足による不適切な表記に他なりません。ご寛恕くださいませ。
InDesignの文字組みアキ量設定の基本設定画面の「50%(0%〜50%)」などは「最適/50%、最小/0%、最大/50%」ということで中間値を許容します。しかし、行末設定に現れる「50%/0%」は「最適50%/最小0%」、「0%/50%」は「最適0%/最大50%」の二択で中間値は採りません。
※「〜」の有無で見分ければいいでしょう(もちろん、「固定」は固定)。


これは以前に「禁則処理のなんでやねん!」という記事で触れたことでもあるが、さらにその原因を探るとともに回避法までを考えてみた。


まず、不可解な状態を再現してみる。


前に使用した文章を適当に加工して、ぶら下がり対象文字が行末に(この場合20字詰の20字目)に位置するようにした。



基本的な設定は

  • コンポーザーは「日本語単数行コンポーザー」*1
  • 文字組みアキ量設定はデフォルトで用意されている「行末受け約物全角/半角」
  • 揃えは「均等揃え(最終行左/上揃え)」

とほぼ同じだが、

  • ぶら下がりは「標準」

としてある。


ご覧の通り現状では何の問題もないが、1行目の「は」を「読点」に変更して調整可能な箇所を設けてやると……



ぶら下がりなしの場合


「調整量を優先」だけ次行から1文字追い込まれてしまっている。
「この場合は調整の必要がないハズだ」と思うのは私だけ? いや、そんなことはなかろう。
以前の記事にも書いたが、Adobeのテクニカルサポートに電話で問い合わせたところ、「内部にも異論はあるものの、これは仕様として確認している」ということで、バグと認めることはなかった。


設定を変更しつつ挙動不審の原因を探ってみる。


  • (句点はもともと行末に位置していたので)「文字組みアキ量設定」をデフォルトで用意されている「約物全角」(=行末約物全角)にしてみたがダメ(図・左端)。
  • ならば……句点の後ろのアキを二分アキにしてみると正常になる(図・中左)。
  • で、「行末受け約物全角/半角」をアレンジして「行中句読点全角固定・行末受け約物全角/半角」*2の設定「test01」を作成し、適用してみると正常になる(図・中右)。
  • ぶら下がり対象文字である句点を、(句点と同様に)行頭禁則だがぶら下がり対象文字ではない後ろ丸括弧に変更してみると正常になる(図・右端)。


「test01」設定画像【その1〈読点〉その2〈句点〉その3〈その結果の基本設定〉



中の二つは正常になったが、それは調整可能箇所が不足しているためでもあるので、2文字ほどを調整可能な括弧類に変更してみると……



正常であることを期待したが、やっぱりダメ(調整をしない=あるべき姿は左端)。


この結果から、「禁則調整方式=調整量を優先」で「ぶら下がり=標準」の場合には、行末がぶら下がり対象文字の場合、「行末とのアキ」ではなく「後続文字とのアキ」の最小値(最適値ではなく!)を参照し、さらに行中の文字列に対しても最小値(最適値ではなく!)を参照して、追い込み可能なら追い込んでしまうようだとの推論が成り立つだろう。


中綴千頁さんの「もとより、これは基本的に『ジャスティファイ系』の組版で使用するのを前提としているのではないかと考えています。」「結局アレは追い込みで処理されるというわけです。まぁ、ヘルプの文面を見る限り、『追い出す*3必要がない』ということは考慮していないんでしょうね。」という鋭い指摘はあるものの、調整の必要のないところを調整してしまっているのだから、どう考えても「文字組み設定の手引き」でいうところの「調整量が最小となる調整方法の選択を行」っているとは考えられない


気を取り直して、「文字組みアキ量設定」を「行末受け約物全角/半角」に戻して、調整可能箇所を増設した上で、さらに「です」を削除してみると……



アリャリャ、「追い込み優先」もオカシクなって、ややこしくなってしまった。
この場合も、(私の考えでは)双方とも調整の必要がないのは当然のこと。

同様に設定を変更しつつ原因を探ってみたが、



結果的にはやはり同じ。行末がぶら下がり対象文字の場合、「最適値」ではなく「最小値」を参照して追い込み可能なら追い込んでしまうようだ。


ぶら下がり対象文字が挙動不審の原因であるのは明らか。
で、このような現象は「行末句読点全角固定」や「行中句読点全角固定」にしても回避不可能で、他の約物をも全角固定にしたところで「追い出し優先」的な挙動となるだけだろう。
結論としては、「調整量を優先」かつ「ぶら下がり/あり」設定時にぶら下がり対象文字が行末に位置する場合に現れる不可解な挙動は(「調整量を優先」を使用する限り)正常な状態へ戻しようがなく、「各種約物のアキをなるべく多く確保した上で、他の部分(仮名など)に調整可能箇所を設けて補ってやることで、やっとある程度の誤魔化しが可能となる」という消極的な回避策しか浮かんでこない。(行末は全角/半角浮動で大丈夫だろう)。


そこで、スクリプト!です。


いやいや違う、ウソです。よう書きません。
やはり「文字組みアキ量設定」の出番……続きは次回。

          • -

Adobeさんが「文字組みアキ量設定」のデフォルトを「句点全角固定」を基本とするJIS X 4051に適合させていないのは、意図的なものがあるのではなかろうか……と想像させる別の「調整量を優先」使用時の行末に関するのバグもあるのだが、ややこしくなるので、ここでは「ぶら下がり/あり」に関わる件だけを考えることにした。避けては通れないことでもあり、必然的に、後の記事で触れることになるだろう。(参考

*1:DTP Booster 005のアンケートに疑問が記載されていたが、この設定

*2:対行末以外の最適値と最小値を同一に

*3:追い込むの誤記か?