記述的マークアップによるルビ

作者:
Elika J. Etemad (fantasai)
Florian Rivoal
翻訳:
English
日本語(当ページ)

目次

  1. 目的
  2. 根拠
  3. 公開書簡のサンプル
  4. 事例

目的

日本語書籍を適切に表現するにはルビをきちんとサポートする必要があります。しかし、主要なEPUBやWebレイアウトエンジンにおけるルビの実装は、残念ながら不十分です。W3Cで適切な標準が策定されるよう努力してきましたが、実装を変えるまでには至っていません。

現状を改善するために、日本の出版界に二つのアクションをお願いしたいと思います。一つは、この問題についてAppleやGoogleの関係者に働きかけることです。もう一つは、公的な声明を発表し、ルビの正しい実装に関心があるとWebプラットフォーム・コミュニティに認識してもらうことです。

これらのアクションを取っていただくことにより、レイアウトエンジンの開発者 (特にGoogleとApple) がこの機能のサポートに取り組み、最新のHTML規格 (WHATWG) の更新を促し、最終的にウェブ全体とEPUBでルビがどこでも同じように安心して使えるようになることを期待しております。

根拠

電子書籍やWebでルビを使うためには、HTMLとCSSという2つの技術が必要です。 HTMLは、コンテンツ、アノテーション、およびそれらの関係を記述します。 CSSは、組版レイアウトの詳細を指定します。

これらが適切に設定されていれば、非常に柔軟な結果を得ることができます。例えば、ルビ付きの文書は完全にリフロー可能になりますし、ルビは一行に収まるときも複数の行にまたがるときも正しく表示されます。バリアフリーな読書のために、読み手の好み、障害の有無、読みの習熟度に応じて、ルビの表示を変更できます。総ルビ表示にするのかパラルビ表示にするのか、レイアウトの調整(例えばルビの大きさや色の変更、親文字との距離の調整)をするのかを、同一のファイルのままで切り替えることができ、人によって異なるファイルを用意する必要がありません。これは、一般の読者はもちろん、障害者や学校の子供たちにも便利です。

日本の出版業界、日本政府、そして様々な専門家の方々が、長年にわたってニーズを把握し、仕様書の作成をサポートしてくださっています。

CSSの標準化は順調に進んでいますが、HTMLの仕様を担当するグループは、十分な数のブラウザベンダーが強い支持を表明していないため、W3Cコミュニティで開発された改良点を受け入れようとしません。今のところ、私たちが提唱している技術は、Firefoxでは大部分がサポートされており、Amazon Kindleではある程度サポートされています。Google ChromeやApple Safari/iBooksは遅れていて、不十分な既存のルビモデルをサポートしているだけです。専用のEPUBリーダーはこれらのエンジンをベースにしていることが多いので、この問題は電子書籍にできることを制限してしまいます。ブラウザベンダーにこの問題の優先順位が高いことを知らせるため、出版社にこの特定の技術への支持を表明して頂ければと考えています。

公開書簡のサンプル

そのような趣旨の文章の案を示します。

正しいルビのレイアウトは、日本語の文章レイアウトにとって本質的で重要なものです。ルビは、子供やティーンエイジャーを対象としたほとんどすべての出版物に見られ、大人を対象とした出版物にもかなりの割合で見られます。さらに、ルビはアクセシビリティのための機能です。ルビのマークアップは、正しい表示だけでなく、アクセシビリティについてのユーザ要求をサポートする必要があります。

現在、BlinkやWebKitに実装されているルビは、日本語を適切にサポートしているとは言えません。私たち出版業界は、それを不適切だと感じています。期待される機能のうちの一部は実現していますが、正しくフォーマットされたリフロー可能なコンテンツやレスポンシブデザインには対応していませんし、異なるニーズを持つユーザーに合わせてさまざまな表示を行うこともできません。また、検索やコピー&ペーストなどの操作もきちんと行うことができません。

日本語に対応するためには、以下のような機能が必要です。

FirefoxやKindleで採用され、W3CのCSS WGや旧HTML WGで規定されているモデルは、ルビの適切なマークアップと表示を可能にしています。しかし、他のエンジンでは実装されておらず、HTML標準にも含まれていません。FirefoxやKindleで(仕様通り)動作するものが、他のエンジンでは動作しないという状態が続いています。日本のコミュニティはこの現状に不満を感じています。また、現状は、世界的な合意に基づいて標準化を行うという基本方針への疑念を抱かせるものです。

私たちは、前述したモデルを他のウェブプラットフォームが採用することを要請します。仕様もこのモデルを採用すべきですし、ウェブやEPUBに使用されるレンダリングエンジンもこのモデルを実装すべきだと思います。そうすれば、日本の電子出版物がついにHTML+CSSで正しく表現できるようになります。

英語版:

Correct ruby layout is intrinsic and important to Japanese text layout. It is found in almost all publications targeted at children and teenagers, and in a significant amount of publications aimed at adults as well. Furthermore, ruby is an accessibility feature, and its markup needs to support those needs as well as rendering correctly.

Ruby as implemented in Blink and WebKit today does not support Japanese properly. Our publishing industry finds it inadequate. It enables a limited subset of the expected functionality, but does not support correctly-formatted reflowable content and responsive design, nor allows varying presentations tailored to users with different needs. Searching, copy-paste, and other operations also don't work sensibly.

For proper support of Japanese, we would need the following to be implemented:

The model followed by Firefox and Kindle, and specified by the CSSWG and former HTMLWG, shows how ruby can be marked up and rendered correctly. However, it has been many years that this is still not working correctly for Japan: it is not implemented in other engines, and is no longer included in the HTML standard. This is frustrating to the Japanese community, and undermines good-faith participation in worldwide consensus standards.

We request that the rest of the Web platform, its specifications, and rendering engines used for the web and for EPUB follow their lead so that electronic Japanese publications can finally be represented correctly in HTML+CSS.

以下の事例を添付すれば、われわれが何を問題視していて、何を期待しているのかを明確にできると思います。

事例

ここで示す例は、従来実装の問題点や限界を明らかにし、日本語ルビの望ましい動作や表示を提示します。

ルビのレイアウト

熟語に対するルビのレイアウトには、様々なスタイルがあります。

「モノルビ:ある親文字とそれに付されたルビは、周りの文字と分離します。親文字と周りの文字の間に広い字間が生じることもあります。
「京都市」の各文字にルビを付けたものです。最初の文字(京)に付されたルビ(きょう)が京よりも広いので、次の文字(都)が少し離れます。
「グループルビ:すべてのルビが繋がって配置されます。ルビの長さやフォントの大きさがどうであってもです。
「京都市」全体にルビを付けたもの。親文字一つ一つにルビをそろえるのではなく、ルビは単語全体に均等に配置されます。
「熟語ルビ(いくつかのフォントサイズを用いている):熟語のルビは親文字の字間が空かないようにするために必要なら繋がって配置されます。
京都市」に、ルビを各親文字の上に配置したもの。ルビのフォントサイズが小さいため、どの親文字についてもルビのほうが狭くなっています。 「京都市」の各文字にルビを付けたもの。ルビのフォントサイズが中間なので、最初の親文字(京)に付されたルビ(きょう)は親文字より広く、二番目の親文字(都)の上にはみ出しています。「都」に付されたルビ(と)は、やや右に寄っていますが、「都」の右端を超えることはありません。三番目の親文字(市)とそれに付されたルビ(し)は影響を受けません。 「京都市」の各文字にルビを付けたもの。ルビのフォントサイズがやや大きいので、最初のルビは最初の親文字(京)よりも幅が広くなっています。しかし、最初のルビ(きょう)と2番目のルビ(と)を合わせても、最初の2文字(京都)の幅に収まりません。そのためルビ全体が繋がっています。

熟語の途中での改行を許し、親文字とそれに付されたルビの正しい対応を維持する必要があります。

熟語ルビの改行
親文字とそのルビの正しい対応 「京都」は2行に分割されています。最初の行の終わりに「京」があり、2番目の行の最初に「都」があります。それぞれ「きょう」と「と」がルビになっています。
正しくない対応 「京都」は2行に分割されています。最初の行の終わりに「京」があり、2番目の行の最初に「都」があります。最初の行には3文字のルビを付けるべきですが、収まらないため最後の1文字が次の行にあります。これでは、「京」という文字の間違った読み方を示すことになります。
熟語内での改行を行えないという欠陥 「京都」は、行末にスペースがあるのに分割されていません。「京」は1行目に、「都」は2行目にあるべきですが、1行目の行末は利用されておらず、熟語全体とそのルビが2行目に入っています。

上記のことを可能にするには、マークアップには二つの要求を満たす必要があります。第一に、どの親文字にどのルビが対応するかを表現する必要があります。第二に、熟語全体としてのグループ化を表現する必要があります。

ルビの構造

ルビのマークアップの基本構造も重要です。BlinkやWebKitでサポートされているマークアップは、レイアウトモデルを変更すれば熟語ルビのレイアウトにも使用できます。しかし、その場合でも、熟語の途中にルビが現れてしまうため、パーレンを用いた表示、検索、コピー&ペースト、音声合成などがうまくいきません。

既存のマークアップを用いたときの検索・コピー&ペースト・音声合成の問題点
ウェブページに表示されているルビ付きの単語が、同じテキスト(京都)を検索しても見つからない。
「京きょう都と」という奇妙な文字列を検索しないと見つからない。
推奨されるマークアップによって可能になる自然な検索・コピー&ペースト・音声合成
ウェブページに表示されているルビ付きの単語が、同じテキスト(京都)を検索して見つかります。
ルビをパーレン(括弧)で囲んだテキストとして親文字と同じ行に表示することは、既存システムでの代替手段として使用されます。また、テキストが小さすぎてルビとしてのレイアウトができない場合にも使用されます。パーレン表示では、熟語全体に対するルビをパーレンで1つにまとめます。各親文字ごとにパーレンを入れるのでは、読みにくく理解しにくくなります。
「京都」に小さくルビを表示したもの 「京都」に対するルビをパーレンで囲んで表示した例を二つ示す。最初の例では、熟語の後のパーレンに囲んで読み方が正しく表示されています。もう1つの例では、親文字ごとにパーレンに囲まれた読み情報が示されています。これは読みにくく、理解しにくいものです。

ルビ表示の切替え

日本語の書籍や教材は、年齢・学年・読書の好み・障害の有無などに応じて、ルビの表示を工夫すると読みやすくなります。表示のとき、別のHTMLファイルを用いることなしに、こうした切替ができることが求められます。

推奨されるマークアップを使用すれば、年齢・学年・読書の好み・障害の有無などに応じて、ルビの表示を切り替えられます。
モノルビ(親文字ごとに別のルビ領域がある)表示 ルビと親文字の対応は明確だが、親文字の字間が間延びすることがあります。 「昆虫記」では、三つの親文字の読み(「こん」、「ちゅう」、「き」)がそれぞれ明確にルビで示されています。「虫」に三文字のルビが付いているので、前後の字間が広くなっています。
熟語ルビ(熟語全体でルビ領域を共有する)表示 ルビと親文字の対応関係はやや曖昧になるが、親文字の字間が間延びすることはありません。 「昆虫記」という単語全体として、読みを表すルビ「こんちゅうき」が振られています。
簡単な漢字のルビは隠す マークアップでは利用可能にしておいたルビを隠すことで、教材を習熟度や読者の好みに合わせることができます(例えば、ディスレクシアの人の中には、ルビが邪魔だと感じ、必要のないところではルビを隠しておきたいと思う人もいます)。 「昆虫記」は、「昆」と「記」にはルビが振られているが、「虫」には振られていません。
普通の漢字すべてのルビを隠す 「昆虫記」にはルビが表示されていません。
親文字(漢字)をルビ(仮名)に置き換える 仮名だけのテキストは、漢字を読めない読者にとってより快適なものになります。 仮名だけの「こんちゅうき」。
注釈をパーレン付きテキストで表示する ルビに対応していないエンジンのためのフォールバック表示ですが、小さなフォントサイズでの読みやすさや、広くない行間に対応するために、意図的に使用することもできます。 「昆虫記」の読みをパーレンで囲って示しています。
混合モード表示 難しい漢字は仮名で置き換え、簡単な漢字はルビを隠し、レベルの高い漢字にはルビを表示します。 「昆虫記」の「昆」は仮名に置き換え、「記」にはルビを表示しています。
難しい漢字は仮名で置き換え、簡単な漢字にはルビを隠しています。 「昆虫記」の「昆」と「記」は仮名に置き換え、「虫」にはルビを表示しています。
小書き文字を並字に変換してから表示することによって、検索・コピー&ペースト・音声合成に影響を与えることなしに、小さなフォントサイズでも読みやすくできます。
「今日」という言葉が2回表示されています。小書き文字「ょ」のままでルビを表示したものと、並字「よ」に変換してから表示したものです。

両側ルビ

あまり一般的ではありませんが、両面ルビも存在しており、いずれは対応する必要があります。

意味と発音が記載された両側ルビ。ここでは、「計算機」に「コンピュータ」という意味を表すルビが下に、発音を示すルビが上に振られています。