EPUB 3に見る日本語組版機能
電子書籍の新しい標準「EPUB 3」
電子書籍で無視できないのが書籍データをどのようなフォーマットで作り、配信するのかという点です。これまで電子書籍フォーマットは国内外で数多く登場してきましたが、現在、電子書籍で国際的に重要性の高いフォーマットとしては、アマゾンKindleが採用するAZW(mobi、AZW3、AZW6)と、GoogleブックスやNook、iBooksなどでサポートされているEPUBの2つが挙げられるでしょう。
なお、日本の総務省などでは、日本独自のフォーマットであるXMDFとドットブックを元にした中間フォーマットを策定し国際標準を目指すとしています(電子書籍中間フォーマット。2012年仕様書公開)。その意図はイマイチよく分かりませんが、アマゾンでもEPUBが入稿用フォーマットに利用されAZWに変換しているなど、英語書籍ではEPUBが中間フォーマットとしても広く使われているという実情を考えると、仮に日本で最終電子書籍フォーマットとしてEPUBが普及すれば日本独自の中間フォーマットは存在する意味がなくなるように思えます。
電子書籍における事実上の標準フォーマットになりつつあるEPUBを策定したのは、電子出版に関わる規格の標準化を目的とする国際団体IDPF(International Digital Publishing Forum)です。EPUBの現在のバージョンは2.0.1ですが、以前にも解説したように日本語への対応はほとんど考えられておらず、そのままでは日本語書籍を扱うフォーマットとして十分とは言えませんでした。
そこで、日本電子出版協会(JEPA)はEPUBの次のバージョンに日本語対応を盛り込むよう日本語要求仕様を提案、次期EPUBの策定にも日本から専門家が参加して作業が進められていました。
2011年2月15日には新バージョンEPUB 3のパブリックドラフト(公開草案)が公表されました。スケジュールによると規格が正式に完成となるのは5月であり、まだある程度の変更はあるかもしれませんが、パブリックドラフトの内容を詳しく見ていくことで、日本語電子書籍の近い将来の姿を予想することもできるでしょう(その後10月に正式に規格として成立)。
EPUB 3.0の概要
パブリックドラフトによると、EPUB 3の仕様は「Publications」「Content Documents」「Open Container Format」「Media Overlays」の4つで構成されています。バージョン2.0.1は「Open Packaging format」「Open Publication Structure」「Open Container Format」の3つでしたから、1つ増えたことになります。
「Publications」は出版としての仕様、「Content Documents」はコンテンツ(組版、レイアウトなど)の仕様およびナビゲーションの仕様、「Open Container Format」は入れ物としてのフォーマット仕様であり、新たに加わった「Media Overlays」はテキストと音声の同期を行うための仕様です。アメリカではオーディオブックが普及していますが、EPUBの仕様としても音声付き書籍をサポートしているわけです。
なお、バージョン2.0.1の仕様ではDAISYのDTBook(障碍者などのために作られる音声書籍)もサポートされていますが、HTML5がDTBookの機能を取り込んだことで、新しい仕様からはDTBookの記述がなくなっているようです。
EPUB 3の最大の特徴は、HTML5をベースとするXHTMLドキュメントを中心にした規格であるということです。HTML5は、W3Cで策定作業が今も続いているHTMLの最新バージョンですが、現在Webで広く使われているHTML4.01と比べて、ビデオやオーディオのタグやそれをサポートするAPIの提供、MathML、SVGのサポート、ルビ要素など、大幅な拡張・変更が施されています。
ちなみに、ルビ要素についてはすでにXHTML1.1で「Ruby Annotation」として採用されていましたが、よりシンプルな形でHTML規格に取り入れられました。HTML5はまだ完成したわけではありませんが、すでに各ブラウザが個別の機能に徐々に対応してきています。
HTML 4以降では見た目の情報をCSSでコントロールするということになっており、EPUB 3でもCSSが重要な要素となっています。ただしEPUB 3で採用されるCSSは、HTML5に対応する形で策定に向けた作業が進んでいるCSS3そのものではなく、CSS 2.1をベースに、CSS3の機能を部分的に取り込んでいます。
なお、CSS3が話題になっているにも関わらず、実はその前のバージョンであるCSS 2.1もまだ正式に勧告にはなっておらず、2010年12月にようやく最終ドラフトが出されたところです(その後2011年6月勧告)。また、Web関連の規格を策定するW3Cでは、CSS3以降の規格はいくつかのモジュールに分け、それぞれでレベルを規定することになっています。たとえば、縦組みは「CSS Writing Modes Module Level 3」、禁則処理は「CSS Text Level 3」、ルビは「CSS3 Ruby Module」です。
EPUB 3の日本語機能
それでは、EPUB 3における日本語関連の機能について見ていきましょう。
まず「Publications」文書には、パッケージ全体を規定するmetadataの属性として「page-progression-direction」が掲載されています。この属性は出版物全体のコンテンツが流れる方向を示すもので、値として右から左へ流れる「rtl」(right to left)、左から右へ流れる「ltr」(left to right)があります。Publicationsは、実際のページレイアウトというよりも書籍全体の情報に関する規格であり、metadataを確認するだけで縦組み本か横組み本かを判断できるようになるわけです。
次に実際のコンテンツの記述に関わる「Content Documents」を見てみます。この仕様でメインとなるCSSでは、「CSS2.1」および「CSS3 Writing Modes Module」で規定されているうち、「direction」「unicode-bidi」プロパティ以外のすべてをスタイルシートで使うことができます(ただし「position」プロパティの「fixed」値は使わないことを強く推奨)。
行の流れる方向を示すのは「writing-mode」というプロパティで、これには「horizontal-tb」(横組みで上から下)、「vertical-rl」(縦組みで右から左)、「vertical-lr」(縦組みで左から右)の3つの値があります。
横組み用のグリフを縦組みにする場合、回転させたりして向きを変更することも必要になりますが、これは「text-orientation」プロパティでの指定に依存します。また縦中横の2桁数字などは「text-combine」プロパティで指定することになります。
インデントの指定などでは上下左右が重要になります。具体的にはleft、right、top、bottomの4つですが、横組みと縦組みの両方を考えるとなると、横組みのleftインデントが縦組みではtopインデントになるなど、方向が変わってくるという問題が生じます。
これについては、「論理プロパティ」(実際の組み方ではなく意味を表す属性)という概念を導入するという考えもありますが、当面はCSSを2通り用意するという方法が現実的のようです。
ルビについては、CSSに「-epub3-ruby-position」プロパティが用意され、「over」「under」「right」の3つの値が使えるようになります。「over」は親字の左(縦組み)/下(横組み)、「under」は右/上、「right」は特に中国語(台湾)の注音記号で使われることを想定している値です。
禁則などの組版処理については、「CSS Text Level 3」の「line-break」「text-align-last」「text-emphasis」「text-emphasis-style」「text-transform」「text-trim」(値はforce-startとno-justifyのみ)「word-break」「TODO hyphenation」といったプロパティを使うことになります。
改行(禁則)処理については「line-break」プロパティで行いますが、その値として「auto」「loose」「normal」「strict」があります(デフォルトはauto)。「auto」は、改行処理を文書のリーダーが決めるというもので、行の長さによる調整もありです。「loose」は新聞のように短い行の文書で使う最小限の改行処理ルール、「normal」はもっとも一般的な改行処理ルール、「strict」はもっとも強めの改行処理ルールを意味します。
細かいルールはリーダーと言語によって変わってきますが、推奨されるルールとして以下が挙げられています。
・日本語の拗促音、長音の前の改行は、「strict」では禁止、「normal」では許容される。
・中国語または日本語の場合、ハイフンの前の改行は「normal」で許容されることがある。
・繰り返し記号(々ゝなど)の前および分割不可の文字(…など)の間の改行は、「normal」「strict」で禁止、「loose」で許容される。
・中国語または日本語の場合、中点類(コロン、セミコロン、中黒)、感嘆符・疑問符、接尾語(%¢℃など)の前、接頭語($£¥など)の後の改行は、「loose」で許容されることがある。
圏点については「text-emphasis」「text-emphasis-style」プロパティでサポートします。
縦組みと横組みを切り替える際には、英数字の全角・半角自動変換といった処理も必要になってきます。「text-transform」は、文字の自動変換を行うもので、全角(半角英数字を全角にするなど)、大がな(拗促音を大きくする)を指定します。
全角約物文字の文字間隔を調整するプロパティとしては「text-trim」がありますが、値に「force-start」「no-justify」しか使えません(CSS3には他に「normal」「keep-end」「force-end」もある)。
「force-start」は開き括弧などの約物が行頭に来たときに前の二分スペースを詰めるという指定、「no-justify」はジャスティファイによる約物のスペースの詰めは行わないというものです。
ここまで見てきたように、新しいEPUB規格に従えば、日本語組版のある程度のニーズには対応できるようになっているようです。ただし縦組みと横組みの混在や微妙な文字間隔コントロールへの高いニーズなど、日本語組版独特の処理を完璧に行うのはこれでも十分とは言い切れず、また、どこまで対応すべきか(とことん厳密に見せたいのであればPDFなどを使うべきという考えもある)といった点は今後も課題として残っています。むしろ、細かな部分は規格として決めず、各デバイス(アプリ)に委ねるというのが現実的かもしれません。
EPUBはこれからの電子書籍に大きな影響を与える規格だけに今後も注目していきたいと思います。
(田村 2011.3.28初出)
(田村 2016.11.7更新)