手軽屋
ツール一覧

日本語の禁則処理とは|行頭・行末に置けない文字とぶら下げ処理の基本

JIS X 4051・W3C「日本語組版処理の要件(jlreq)」・MDN「line-break」プロパティ準拠

日本語の文章をテキスト画像にしたとき、「、」「。」が行頭に来てしまったり、「(」が行末に取り残されたりすると、視覚的に読みにくくなります。これを防ぐのが禁則処理です。本記事では、JIS X 4051(日本語文書の組版方法)とW3C「日本語組版処理の要件(jlreq)」をベースに、禁則の基本と、Web・CSS・本ツール「文章を画像に変換」がどう実装しているかを解説します。

1. 行頭禁則文字(行の先頭に来てはいけない文字)

次の文字は、改行されて新しい行の先頭に来るのが好ましくないとされています。

  • 句読点:、 。 , .
  • 疑問符・感嘆符:! ? ! ?
  • 閉じ括弧:) 」 』 】 〉 》 ] }
  • 長音・繰り返し記号:ー 〜 ゝ ゞ 々 ヽ ヾ
  • 小書きのかな:ぁ ぃ ぅ ぇ ぉ っ ゃ ゅ ょ ゎ(厳密適用)
  • その他:℃ ° ′ ″ ヶ ヵ

2. 行末禁則文字(行の末尾に来てはいけない文字)

次の文字は、行の最後に取り残されると不自然になります。

  • 開き括弧:( 「 『 【 〈 《 [ {
  • 始め引用符:“ ‘
  • 連数字や単位の前(厳密適用時)

これらが行末に来た場合、その文字ごと次の行に送る(追い出し)のが標準的な対処です。

3. 3つの対処方法(ぶら下げ・追い出し・追い込み)

  1. ぶら下げ:行頭禁則の句読点を、前の行の末尾に「はみ出させて」配置する。文字数の組版が崩れにくい
  2. 追い出し:禁則対象の文字ごと、その前後の塊(語)を次の行に送る。確実だが行間に余白ができる
  3. 追い込み:前の行に1文字分の隙間を作って詰める。プロの組版ソフトで使う高度な処理

DTP(InDesignなど)では追い出しと追い込みを組合せた厳密な処理が可能ですが、Webブラウザではぶら下げが最も実装しやすく、見た目も自然なため、多くのツールがぶら下げを採用します。

4. CSSのline-breakプロパティ

CSSでは line-break プロパティで日本語の改行ルールを切り替えられます。

  • line-break: auto(既定):ブラウザが標準的な禁則を適用
  • line-break: loose:禁則を緩める(雑誌・新聞風)
  • line-break: normal:標準的な禁則
  • line-break: strict:厳密な禁則(出版物風・小書きかなまで対象)
  • line-break: anywhere:禁則を無視してどこでも折り返す

ただし、HTMLテキストは禁則対応していてもCanvas API(テキストを画像化する場合)は禁則を自動適用しないため、文字単位で前計算する必要があります。

5. 手軽屋の禁則処理の実装

文章を画像に変換」では、行頭禁則の代表的な文字「、 。 , . ! ? ! ? ) 」 』 】 〉 》 ” ’ ゝ ゞ 々 ー」を内部リストに持ち、自動折り返しのたびに次の文字がこのリストに該当する場合は前の行の末尾にぶら下げる簡易禁則を実装しています。

JIS X 4051の厳密な小書きかな禁則・行末禁則・追い込みまでは実装していないため、本格的な出版物の組版用途には不向きです。ただしSNSへの文章画像化やスクショ風のお知らせ作成では、ぶら下げだけで日常的な違和感のほとんどを吸収できます。

関連ガイド