おがさわらなるひこのオープンソースとかプログラミングとか印刷技術とか

おがさわらなるひこ @naru0ga が技術系で興味を持ったりなんだりしたことをたまーに書くブログです。最近はてなダイアリー放置しすぎて記事書くたびにはてな記法忘れるのではてなブログに移行しました。

クリエイティブ・コモンズ・ライセンス
特に断りがない場合は、本ブログの筆者によるコンテンツは クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。

日本語組版あれこれ

今朝方 Wassr でつぶやいたんだけど、ちょっと流しちゃうのもったいないからブログにペタンコ張って残しておきます。

なお私はプリンタ屋さんだからこういうことを知っているわけではなく、プリンタは上位層(アプリケーションから OS を経由して)から「こう印刷しろ」と言われるだけなので、むしろプリンタ屋は組版のことをさほど知りません。特に超高速機は完全に市場が違うので、我々オフィスプリンタメインの人間は、どういうワークフローで印刷物が出来上がっているのすら知らない人間がほとんどです。
ということで、私の和文組版についての知識は素人知識です。10年以上前の学生時代、TeX: The Program を読んで感動し、日本での事情をしらべたり、研究室の先生がたまたまそういうことに造詣があったおかげでいろいろ教えていただいたのが主で、あとは業務上、周辺知識を少しかじったぐらいです。
ので、デタラメな記述などあるかもしれませんが、ぜひぜひご遠慮なくご指摘いただければ幸いです。

和文組版と字間 (glue)、行間

そもそも活版印刷では同じ幅の活字をつめていくので字間に glue (糊、伸び縮みを許す空白。ただし空白はサイズ0でもありうる) は入りません。その伝統を踏まえ、電算写植の時代になっても、文字は綺麗に縦(横書きの場合。むろん縦書きの場合は横)に揃うのが美しいとされています。ただしここは異論もあるようで、川(縦の文字の流れが見えてしまうこと)が生じるので行頭インデントを1.5文字程度にすべきというデザイナさんもいらっしゃるようです。
PC のプロポーショナルフォントのように、和文なのに仮名文字がプロポーショニングするのはこの伝統からすると非常な違和感があり、なぜあのようなフォント設計になったのか理解に苦しみます*1
なお、文字枠にぎっしり字がつまるケースが多いのと、川が生じても見にくくならないように、和文の組版においては行間は文字間の 1.25〜1.5倍にするのが常識です。CSS を書くときでも行間指定するだけで大きく見やすくなりますしね。

行末均等処理

和文の場合行末も揃うのが普通なのですが、すべて仮名漢字であればよいのですが、そうでもない場合がある。これを glue がないのでどうやって合わせるかというと役物で合わせるのが普通。役物とは「、。!?」などの記号のこと。ちゃんとした出版物を見てみると分かるのですが、役物の前後のスペースというのは常に等幅とは限らないのです。ここに微妙な空白のツメをすることで行末を合わせるのがテクニック。
同じような話に、行頭の "「" の問題があります。PC の普通のフォントの引用符 "「" は、括弧を構成する矩形のほぼ中央に縦のストロークがありますが、これを「行頭一字下げ」のルールとどうすり合わせるかということです。
まあ、ごくごく一般的には、

 何々は、次のように言った。
「ボクチン、ぽんぽんすいたー」
 それにより一同は、思ったより時間が経過していることに気づいた。

のように、単純に引用符文字をそのまま行頭一字下げなしで入れる組み方をする場合が多いようです。
まれに、縦のストロークを行頭一字下げの線に合わせるという組み方もあるようです。ただこの組み方だと縦に文字が揃わないので、新旧合わせていくつか参照しましたが、このケースは見つけられませんでした。

英文まじりの和文

一つ難しいのは英単語 (ドイツ語だともっと難しいね) の扱いで、基本戦略は単語間に glue を入れ、多少伸びをよくすること。ただし行末にきた場合はさすがにつらいので、まずはハイフネーションで逃げる。これでもだめなら行末に英単語が来た場合は行末揃えはあきらめ、切れるところでブレークする。
昔の日経BPの出版物(日経BYTEとか)は三段組みなのにこれをやってなくて、英文が入ると文字間がにょろーんと伸びてすごいみっともなかったですね。デザイン担当の美意識を疑ってしまったことを告白しておきます。
なおどうしても英文の比率が多い、例えば専門書や論文の場合、なおかつ段組みにする場合は、行末を揃えない組にするという選択肢もよくとられるようです。

ルビについて

あと和文組版といえばルビの扱いについてなのですが、これはちょと奥が深すぎるのでさわりだけ。非常にヒューリスティックの塊です。これを自動化しているシステムとか存在するのかしら?
基本的には 1/2 幅の活字を載せる(そして小字、ゃゅょっなどは存在しない)関係上二文字ずつ載せることになるのですが、例えば「小学校」にどうルビを振るか考えてみると面白い。
手抜きなシステムだと「小学校」という箱の上に半分の大きさの字で書いた「しよ|うが|つこ|う」をセンタリングで載せるんですが、これだと「小学校」の前後に空きが出て美しくない。やむを得ず「う」だけ次の文字にはみ出させる手もありますが、改行と重なると困ったりもします。逆に前にはみ出させ「し|よう|がつ|こう」とする手もあります。
なおはみ出る場合に難しいのはさておくとしてスペースが余る場合。といっても一文字に二文字しかルビは乗らないので、漢字一文字の読みが一文字、という場合ですね。これは右寄せ、左寄せ、センタリングしかないわけですが、基本は右寄せが多いと思います。
なお Wassr で面白い課題提起をされました。「百舌鳥」はどうルビを振るか。いろんな流儀があると思いますが、私なら

と組むと思います。
大雑把なアルゴリズムを言うと、

  • 各文字のルビ割付が一文字または二文字以内なら各文字のルビを左詰めで振る。
  • 三文字以上の読みがある文字がある場合は、
    • 前後どちらかの二文字で処理できる場合はそこで処理する。
    • できない場合は、各文字に対する読みの割付を無視し、とにかく全部詰めて載せてしまう。
      • これでもはみ出る場合は単語の前後にはみ出させる。はみ出させ方は「一番美しい見え方」なのでここはルール化が難しい。簡単な例としては先の「小学校」であれば「しよ|うが|つこ|う」を上に載せるのが基本ですが、「小学校」の直後に改行が来ているのであれば、「し|よう|がつ|こう」で組むでしょう。

この雑文の意味

もちろんこれ以外にもいっぱい考えるべきことはあって、和文の組版というのは実に奥が深いのですが、こういう文化は DTP で壊滅的な打撃を受け*2*3、Web 時代になって滅びさろうとしている *4
僕は滅びて欲しくないので、KnuthTeX: The Program で欧文のハイフネーションアルゴリズムを一生懸命考察したように、いま書いたようなことを自動で解決できるレンダリングエンジンの開発を切に望むものなのであります。


2009.10.16 追記

id:wanderingdj 様より「活版からの流れが無視されててわらう」とのぶくマコメントをいただきました。

ご指摘のとおりで、少なくとも DTP でない電算写植までの組版ルールは活版印刷によるところ大なのは知識として知っていますが、なぜ文字の組み(基本的に伸び縮みしない)以外で活版との流れを無視しているかというと、非常に単純に私がよく知らないからです。

そんなことも知らないで書くな、というご意見もあろうかと思いますが、私レベルの知識でもお酒の席とかで話すと「知らなかった」「そういう話もっとしてほしい」という声が度々聞かれたので、今回まとめてみた次第です。まとめたと言っても、もとはミニブログの書き込みですので、お気楽な読み物以上のものにはなっていませんが。

私ネットの健全性を信じておりますので、もし私の記述がデタラメだとすれば(そうではないと信じたいですが)、どこかできちんとした記述がなされ、訂正されるでしょう。その呼び水になれば幸いです。

あと一個(むしろこっちが本題)参考文献を提示し忘れたので。

W3C:日本語組版処理の要件(日本語版)

日本語組版のルールは JIS X4051 で規定されていますが、このドキュメントはその抜粋と考えていいと思います。
非常に参考になりますので、このエントリを読まれて日本語組版にいささかでも興味を持たれた方は読まれることをおすすめいたします。

なおこのドキュメントの存在を知っていてなお「日本語版 TeX: The Program 的なものが欲しい」と書いたかと言うと、このドキュメントは規則は書いてあっても、実装指針は触れていないからです。そこを解き明かすことが望まれる、というのが発言の趣旨になります。

長々と補足失礼しました。

2009.10.17 追記

上で「活版については知らないし僕はプロじゃないので間違ったこと書いてたら誰かちゃんとしたこと書いてくれるよね?」と能天気に甘えたことを書いていたら、id:wanderingdj さんが Twitter の発言をまとめたエントリの中で私のエントリに欠けた視点を指摘してくださいました。d:id:wanderingdj:20091017:1255716495 9:22 から 9:30 までのポストが該当します。

私のエントリですら「奥が深い」といったコメントを寄せてくださる方がいらっしゃるのに、さらに現場は奥が深いというお話ですので、ぜひご一読を。

id:wanderingdj さん、ありがとうございました。

*1:なお MS UI ゴシックについては「1 バイト仮名を追放する」という大方針があったので仮名のプロポーショナルはやむを得ないと認識しております。

*2:というと DTP を仕事で真面目にやっている人に申し訳ないのですが、初期の DTP 組版はめちゃくちゃなものがおおかったこと、それによって読者の目もならされてしまったことは事実だと思っています。むろん PageMaker や Quark Express、InDesign などのソフトに日本の事情をどれほどフィードバックしたのかということもあります。

*3:2009.10.15 追記:Wassr でコメントいただきました。ツール面においては今は DTP でも遜色ない組みができるようになってきていて、「壊滅的な打撃」という状況は歴史的事実であるということです。関係各位の努力に敬意を表したいと思います。ただし、それを運用する側で、昔の低機能な DTP ツール群しかなかったころにノウハウの断絶があったことは否定できないようです。

*4:Web はコンテンツありきで組みの結果は読み手の環境に依存するので、結果を見て組みを制御することができません。そこが問題を難しくしています。