Simple_ Ruby序文改訂4 0 この文書の目的 この文書では,CSS,SVG及びXSL-FOなどの技術で実現が求められる日本語組版のルビ処理について,実装する際の参考となる簡便な処理方法を示した.簡便なルビ処理方法を実現するために,ここでは,JLReqとは異なり,何を選べばよいか,何が重要であるかを考慮し,配置方法を一つに絞ることにした(どのような事項を考慮したかは次項で解説する).あわせて,JLReqで解説していない両側ルビの配置方法を追記した. JLReqでは,過去に行われていた処理例を紹介する意味もあり,一つのことに複数の処理方法や,かなり複雑な処理方法を示している.なかでも,ルビ処理では,さまざまなケースが出現し,また,ある要求事項を組版で実現しようとすると矛盾が出てしまう例もある(後述の注の“親文字からのルビのはみ出し”参照).こうした事項まで考慮して自動処理を行うためには,かなり複雑な方法となる. そこで,理想ではないが,誤読されないということを考慮し,例外のあまりでない,また,機械的に処理できる簡便な配置処理方針を考える必要があるように思われる.以下は,こうした簡便な配置処理方法の一案である. 1 簡便な配置ルールで考慮した事項 ルビ処理のむつかしさ 【最初にルビ処理のむつかしさについてまとめておく.……この部分を追加】 ルビの組版処理は,…… (1)から(6)は,そのまま 【“Web での配置処理”の文をここで使用】 Web での配置処理を考えた場合,活字組版のように個別箇所で配置位置を工夫する処理は避けるのが望ましい.となると,上記の問題をすべて解決できる配置処理方針を決め,処理系に実装していく必要がある. 配置ルールで考慮した事項 簡便な配置ルールを考えるにあたっては,次のような事項を考慮し,また前提とした. 【注】 注釈としてのルビ 行間にルビと同じ配置位置に注釈を配置する方法もある(行間注).この配置処理は,ここでは適用範囲としない.モノルビでは,そこに付くルビ文字列の2行にわたる分割(以下,分割という)は認められていない.さらに,グループルビでは親文字列の分割も認められていない.これに対し,行間注では,分量が多くなるケースも予想され,親文字列又は行間注の文字列は,分割可能位置での分割を認める必要があり,異なる配置処理が必要になるからである. (1)ルビは,親文字の読み方又は意味を示すものである.そこで,誤読されないことを第一とした.具体的には,親文字の文字列からはみ出したルビ文字は,前後に配置する漢字だけでなく,仮名にも掛けない方式とした. (2)縦組と横組とで配置処理法を変えることなく,共通の処理ができる方法とした.具体的には,モノルビでは,親文字の文字列とルビ文字の文字列の中心をそろえる方式のみとした. (3)2レベルの処理方式とした.第1レベルでは,親文字及びルビ文字(両者を合わせて,以下,親文字群という)のみの情報から,親文字とルビ文字の配置関係を決める.第2レベルでは,親文字群の前後に配置する文字を考慮して,行の中での親文字群の配置位置を確定する.逆に言えば,第1レベルで決めた親文字とルビ文字の配置関係は,親文字群の前後に配置する文字により修正することはしない.また,親文字群が行頭又は行末に配置されることにより,親文字とルビ文字の配置関係を直し,親文字の先頭又は末尾を行頭又は行末にそろえる配置方法は採用しない.つまり,第1レベルで決定した事項は,第2レベルでは修正しない方式とした. (4)ルビの配置方法として,JLReqやJIS X 4051(日本語文書の組版方法)では,複数の方法が示されているケースがあるが,ここでは上記の方針で1つの方法に限定した.また,ここで示した処理法は,原則としてJIS X 4051で規定している方法によった.ただし,処理系定義として採用できる処理方法(オプション)を採用した場合がある.例えば,はみ出したルビを仮名にも掛けないという方法は,処理系定義として採用できる方式である. (5)ルビ文字の文字サイズを大きく(逆に小さくしたい)という要求がある.そこで,ルビの文字サイズは,親文字の文字サイズの1/2を初期値(デフォルト値)として採用し,図版では,ルビの文字サイズは親文字の文字サイズの1/2で示したが,空きなどのサイズはルビ文字の文字サイズを基準とするのではなく,親文字の文字サイズを基準として規定することにより,ルビの文字サイズが親文字の文字サイズの1/2以外であっても採用できる配置方法とした. 注の修正 親文字からのルビのはみ出し できるだけ字間を空けないということから,親文字からはみ出したルビを漢字には掛けないが,仮名には掛ける,とした場合,前後が仮名の場合はよいとしても,親文字の前が仮名で,後ろが漢字といったときに,ルビ文字の字数によっては見た目のバランスを壊す場合も出てくる(モノルビの例を図1に示す,上側が漢字には掛けないが,仮名に掛けるとした方針で処理した例).グループルビでも,同様である(図2参照).こうした場合,活字組版では個別箇所のケースに応じて配置位置を工夫していた. また,ルビ文字が片仮名の場合は,単語としてのまとまりがあり,前後の仮名にも掛けないという考え方をする出版社もあった.この場合も,ルビの字数によっては,仮名にも掛けないとした方が見た目のバランスはよいであろう(図3参照,下側が仮名に掛けないとした方針で処理した例). 図1 親文字からのはみ出しのあるモノルビの例 図2 親文字からのはみ出しのあるグループルビの例 図3 ルビ文字が片仮名の例 以下の2つの注は削除 サイズの基準 JIS X 4051 では,ルビの文字サイズを親文字の1/2 としているので,サイズの基準をルビ文字のサイズとしている例が多い.しかし,ここでは,ルビ文字のサイズは1/2 と限定しないので,親文字のサイズを基準として記述する. ルビの文字サイズ 活字組版では,3.5 ポイントのルビを準備していない場合もあった.そこで,7 ポイントの親文字にルビを付ける場合,4 ポイントのルビ文字を使用していた例もある.また,見出しなど,親文字が大きな文字の場合は,1/2 以下にしていた例もある. “3 ルビとアクセシビリティ”を削除 かわりに,以下の両側ルビの配置処理を末尾に追加 3 両側ルビの配置処理 ルビの種類の組合せで配置を決める←小見出し 両側にルビを配置する場合,その処理は複雑になるが,簡単な方法として,モノルビ,グループルビ及び熟語ルビの組合せで配置方法を決めることができる.なお,親文字からはみ出したルビ文字の前後の文字との関係,行頭・行末の配置処理は,片側にルビがつく場合と同じである. 両側ルビの組合せ←小見出し ルビの組合せとしては,次がある. (1)モノルビとモノルビ (2)グループルビとグループルビ (3)モノルビとグループルビ (4)モノルビと熟語ルビ (5)一方が熟語ルビで片方が熟語ルビ又はグループルビ ルビの種類の組合せと配置方法←小見出し JIS X 4051では,前項の(1),(2)及び(3)の組合せの配置方法のみを規定している.ただし,(3)は,連続するモノルビを一つのグループルビとして扱う処理なので,結果として,その配置方法は,(2)である. ところで,(4)のモノルビと熟語ルビとの組合せは,熟語ルビの熟語を構成する個々の漢字とそれに対応するルビ文字との組合せを一つのモノルビとして扱えば,(1)の方法が採用でき,(5)の一方が熟語ルビで片方が熟語ルビ又はグループルビの組合せは,熟語ルビをグループルビとして扱えば,(2)の方法が採用できる. 以下では,(1)及び(2)の配置方法を説明する. なお,ルビ文字をどちら側に配置するかは,指定のよる. モノルビとモノルビの配置処理←小見出し モノルビとモノルビの組合せでは,ルビ文字の文字列の字間はベタ組とし,それぞれのルビ文字の文字列と親文字の文字列とは,字詰め方向の中心をそろえて配置する(図23参照).その他は,前述したモノルビの配置方法と同じである. グループルビとグループルビの配置処理←小見出し 両側のルビ文字列がともに親文字より短い場合は,前述したグループルビの配置方法により,それぞれのルビ文字列の字間とその前後を空けて配置する(図24参照). 親文字より長いルビ文字列を含む場合は,長い方のルビ文字列の長さに従い,前述のグループルビの配置方法で親文字の文字列の字間とその前後を空ける.次に,その(字間を空けた)親文字列の長さ(前後の空きは含めない)に応じて残りの短い方のグループルビの配置方法を決める. 短い方のグループルビの文字列の長さが字間を空けた親文字の文字列長以上の場合は,ルビの文字列はベタ組とし,ルビ文字の文字列と親文字の文字列の字詰め方向の中心をそろえて配置する(図25参照). 短い方のグループルビの文字列の長さが字間を空けた親文字の文字列長未満の場合は,字間を空けた親文字の長さにそろえて,前述のグループルビの配置方法でルビ文字の文字列の字間とその前後を空ける(図26参照). いずれの場合でも,その他は,前述したグループルビの配置方法と同じである. 図版のキャプション 図23 モノルビとモノルビの例 図24 グループルビとグループルビの例1 図25 グループルビとグループルビの例2 図26 グループルビとグループルビの例3 両側ルビと行間 両側にルビを付けた行が重なると,行間の設定によっては,隣り同士の行のルビが重なるケースが出る.これは避けないといけない.以下のような方法が考えられる. (1)あらかじめ隣り同士のルビ文字が重ならないように,文書全体の行間を設定しておく. (2)重なりが発生した該当する行間だけを広げて,ルビが重ならないようにする.この場合,重なった前の行のルビと,後ろのルビが重ならないだけでなく,例えば,その間は本文文字サイズの四分は空けるとする方法も行われていた. (3)該当する行間ではなく,両側にルビの付いた行そのものを複数の行の領域に配置する.両側にルビの付いた行を,例えば,2行分のスペース(2行ドリ)とする. (4)重なりが発生した行間だけではなく,該当する段落全体の行間を広げて,ルビが重ならないようにする. なお,活字組版では,ルビが多く付く,あるいはルビと共に注の合印などが多く入る場合は(1)の方法,ルビが少ない場合は(2)又は(3)の方法がとられていた.しかし,Webの自動処理を考えると(3)の処理でよいであろう.この方法で該当する行に整数行の領域を割り当てれば,行位置の乱れは,その部分だけですみ,段組とした場合などでは,隣りの段との行位置がそろう.