Affinity Publisherで日本語処理(4)和欧文字間

2019年07月30日

本題の前に。7月27日20:30頃、Affinity Publisherで日本語処理(1)禁則処理に追記を行いました。もしそれ以前にしか見に行っていないという人は末尾の追記部分を見てください。


さて今回は和欧文字間をします。主に横組みの場合、特に私の文章なんかは、アルファベットやアラビア数字がたくさん入ってきます。日本語っていうのはほんとにもう。

その処理はさほど難しくはないんですが、対象文字をどうするかというのが非常に悩ましいところです。

まず、仕上げたい結果なんですが、次の図の真ん中になります。

これIllustratorの段落パネルの「文字組み」の設定を変えたものです。初期値は「行末約物半角」(下のもの)で、和欧文字間25%(4分アキ)になっています。しかし、多くの場合、ここを「なし」(ベタ)にしているのではないでしょうか。その場合は上の体裁になります。

行末約物半角」では和欧文字間があきすぎているように感じます(特に「年6月20日」のところ)し、「なし」だと文字が詰まっているように感じます(「rが2」のところとか「9年」のところとか)。

これInDesignの初期値でも同様です(これは「JIS X 4051(日本語文書の組版方法)」に従っているのですが、こJIS規格自体「主に書籍に適用」であり、各所で「処理系定義とする」として実装に任せているところが多いため、強制力はありません)。私はどちらも嫌なので中間12.5%(8分)に設定しています。自分はこれが一番読みやすいと思っています。

なので、ここでも設定値12.5%で行きます。これで問題ない人はこのまま実施していけばよいし、問題がある(違うと思ったり、ハウスルールがある場合など)人は数値を変えてください。


さて例題ですが、赤い下線で示したところが該当箇所です。ここでは「ひらがな・カタカナ・漢字」と「英大文字・英小文字・アラビア数字」の間が詰まって見えるので、あけたいところです。

さて、悩ましいと言っているのは、どの文字を対象にするのかということです。

ひらがな・カタカナ・漢字」と「英大文字・英小文字・アラビア数字」の間だけでよいのか、それとも記号や図形なども含めなければならないのか。

また「ひらがな」といっても色々あります。シフJISの時代は「[ぁ-ん]」でもよかったんですが、Unicodeには「ゔ」「」「ゟ」など、さらに変体仮名も追加されています。Unicodeには正規表現で「ひらがな」を表す「\p{Hiragana}」という記述方法(Unicodeスクリプト)が定められているのですが、Affinity Suiteはこれをサポートしていません。(なお、カタカナは「\p{Katakana}」、漢字は「\p{Han}」)

また、文字は生き物なので、どんどん増えていきます。直近ではUnicode 12.1で追加された令和の合字日本語の解説があります)です。この文字の次に数字がくる場合は、やはり和欧間のアキを適用した方がよい気がします。同様のものに「㍼」「㍻」などがあります(これらは

\p{Han}」には含まれていません)。なお、Unicodeで漢字の範囲についてはものかのさんの記事「Unicodeで『漢字』の正規表現」も参考になります。

などと考えて進みません。

ですのでここは割り切って、「和欧文字間が発生する」→「ほぼ現代文で、欧文の前後に通常使う文字以外は来ない」という仮説を立てます。前後に来そうな漢字は、

  • 万」「億」など数で使用するもの
  • 冊」「枚」など単位の呼称
  • 元号

ぐらいかな。他にもあるかもしれないけれど、Unicode基本多言語面内だけでいいでしょう。

従って和文の方は

  • ひらがなの通常範囲([ぁ-ゖ])
  • カタカナの通常範囲([ァ-ー])
  • 漢字の基本多言語面内([\x{3400}-\x{4DBF}\x{4E00}-\x{9FFF}\x{F900}-\x{FAFF}])
  • 元号の合字([\x{32FF}㍻-㍾])

にします。記号類は「〒」「☎」「㍍」「㎡」など思いつくのですが、今回はやめます。

欧文の方も「英大文字・英小文字・アラビア数字」([0-9A-Za-z])だけにして、記号類や他言語用の文字はやめます。


では実践です。あけたい箇所の前の文字にトラッキン125‰を設定します。

検索の設定で「正規表現」にしてください。「ロケール対応正規表現」だと、指定以外の文字も対象になってしまいます。

まず和文と欧文の間です。

検索文字列は

[ぁ-ゖァ-ー\x{32FF}㍻-㍾\x{3400}-\x{4DBF}\x{4E00}-\x{9FFF}\x{F900}-\x{FAFF}](?=[0-9A-Za-z])

置換文字列は空欄でフォーマットは

です。

続いて欧文と和文の間です。

検索文字列は

[0-9A-Za-z](?=[ぁ-ゖァ-ー\x{3400}-\x{4DBF}\x{4E00}-\x{9FFF}\x{F900}-\x{FAFF}])

で(欧文の後に元号の合字が来ることはありませんので削除しました)、置換の方は同じです。

結果はこうなりました。

微妙な差に見えるかもしれませんが、詰まった感じがなくなったと思いませんか?


上4回で基本的な調整は終了です。後は、段落を「左揃え」から「均等割付(最終行左寄せ)」に変更し、必要に応じて1行目のインデントを設定します。

例題は文字数を数えやすくするた10字詰にしていましたが、実際の組版ではもう少し長いので、18字詰にしてみました。これで前後を比較していただけたらと思います。

作業前
作業後

次はモノルビに挑戦! ちょっと時間がかかるかも。


8月1日 訂正

例題の中で「文字の囲み罫機能」とありますが、段落背景色機能でした。