川幡 太一
青空文庫
EPUBとCSS3
青空文庫の注記とCSS3
青空文庫のEPUB化にあたっての課題
青空文庫処理システムの試作
最後に
青空文庫の、CSS3での再現を通して、EPUB3の 日本語能力を検証したい。
著作権の消滅した日本語テキスト等の アーカイブ
テキストのままでも読みやすいように配 慮された、独特の注記方法。
青空文庫・組版案内:
http://kumihan.aozora.gr.jp/
これらをEPUBに変換する方法を確立したい
日本の書籍に現れる、様々な組版に関す る表現をタグにより注記。
元来は日本語テキストを、ボイジャーの 電子ブック向けに変換する際の「人間向 け」の注記。
ルビには《・・・》、それ以外には
[#・・・・]という形式のタグをテキ ストに挿入。
EPUB3規格(2011年7月中旬?)
コンテンツの表記方法として、
HTML5 + SVG+ CSS2.1 + CSS3 modules を採用。
日本語表記関連
CSS3 Writing Mode Modules(縦書き)
CSS Text Level 3 (強調点線の表記)
CSS Font Module (外字)
CSS3 Ruby Module? (ルビ)
EPUB3はドラフト段階のCSS3を採用予定。
青空文庫の注記・外字 vs.
EPUB3・CSS3・HTML5
外字
文字修飾
段落
その他
外字は注記記法が規定(外字注記辞書)
UCSとの対応は一意に決定可能
外字は、※[#・・・・]で記述される。
例 青空文庫 EPUBでの対処 JIS X
0213
項羽や樊※[#「口
+會」、第3水準 1‐15‐25]は、…
面句点番号に対 応したUCS文字 で記述 UCS文字 今、因※[#「木+
于」、10‐7]《いん う》将軍公孫敖が…
外字注記辞書と UCS文字の対応 表を利用 非UCS文字 ※[#「仝」の
「工」に代えて
「炭」、427‐3]
PUA+外字フォ ントを利用。
青空文庫のルビは《・・・》で注記。
EPUBでは、HTML5 Ruby(WD)で表記。
青空文庫《あおぞらぶんこ》 【例】
霧の|ロンドン警視庁《ス【例】 コットランドヤード》
<ruby>青空文庫<rp>《</rp><rb>あおぞらぶんこ</ rb><rp>》</rp></ruby>
圏点はCSStext‐emphasis‐styleで対応。
例 青空文庫 CSS
[#丸傍点]青空文庫 で読書しよう[#丸傍 点終わり]。
text‐emphasis‐ style: open circle; 青空文庫で読書しよう
[#「青空文庫で読書 しよう」に黒三角傍 点]。
text‐emphasis‐ style: triangle;
[#蛇の目傍点]青空 文庫で読書しよう[# 蛇の目傍点終わり]。
text‐emphasis‐ style: open double‐ circle;
圏点は、縦書きでは左右両方 につく可能性
左に付く場合は、 ‘text‐ emphasis‐position’ を、
‘below right’に。
横書きの際、圏点は上下のど ちらかに付くか?
青空文庫は多彩な傍線注記がある。
CSS3textの text‐decoration‐styleで 対応。ただしWebKitではまだ未実装。
例 青空文庫 CSS
青空文庫[#「青空文
庫」に波線]。 text‐decoration‐ style: wave;
[#二重傍線]青空文 庫[#二重傍線終わ り]。
text‐decoration‐ style: double;
縦書き・横書きで、字下げ方向が変化。
青空文庫 横書きCSS 縦書きCSS 文字下げ [#○字下げ] margin‐left:○em; margin‐top:○em; 地上げ [#地より○字上
げ] text‐align: end; margin‐right: ○em;
text‐align: end; margin‐bottom: ○em; 改行天付き [#ここから改行天付き、折り返し
て○字下げ]
margin‐left: ○em; text‐indent: ‐○em;
margin‐top: ○em; text‐indent: ‐○em;
文字下げ折り返し [#ここから○字下げ、折り返して
×字下げ]
margin‐left: ○em; text‐indent: (×‐○) em;
margin‐top: ○em; text‐indent: (×‐○) em;
段落字詰め [#ここから○字詰め]…
[#ここで字詰め 終わり]
max‐width: ○em; max‐height: ○em;
割注・窓見出し
割注は元来、漢籍等の注釈 文で使用
日本でも多数の用例
CSSの inline float 等 では再現不可能(?)
地寄り表記
日付・署名など、改行しな い地付き表記
既知の課題
注記記法
外字
外字注記がばらばら、縦書きフォントの問題
目次
上記を解決方法を検討し、「青空文 庫→EPUB変換ツール」を試作する。
注記の記法(「組版案内」)
従来は「メモ書き」程度
厳密な「文法」は規定されていない
記法がしばしば変更され、過去の作品と、現 在の作品で注記が異なる。
(ソフトウェアによる対応が困難)
外字の注記
外字注記辞書に従えば、一意に変換が可能な はずだが・・・?
最近、Unicodeも指定可能になった。
(過去の作品の対応は未定)
目次情報がない。
長文の大作を電子化するにあたり、目次が まったくないのは辛い。
行あたりの文字数情報の欠落
・・・金兵衛はただそれだけを吉左衛門の耳にささやいた。
[#改丁]
[#5字下げ]第一章[#「第一章」は大見出し]
[#7字下げ]一[#「一」は中見出し] 七月にはいって、吉左衛門《きちざえもん》は・・・
青空文庫『夜明け前』より
品質管理
テキストチェックは目視が基本
機械的なチェックは必須でない
メンテナンス体制
テキストの訂正・更新や関係者・履歴管理が 外部から見えにくい。
誤記があっても、修正に時間がかかる。
品質管理体制や責任体制は?(ボランティア ベース)
外字用例の蒐集
外字注記辞書の整
理
外字注記とUCS漢
字の対応表の作成
頒布
UCSの漢字統合基 準(UCV)を活用。
http://kanji‐database.sourceforge.net/ aozora/gaiji.html
UCS未符号化文字
GlyphWikiで作字 してフォント公開
http://glyphwiki.org/wiki/Group:青空文庫外字
約70文字
青空文庫の注記
外字・ルビ・文字修飾・段落注釈などの様々 な記法が混じり、依存関係が複雑。
ある入力データが、青空文庫の注記として正 しいかを機械的に判断しにくい。
(XML仕様書では、EBNFと制約条件によって、 厳密に適合性を定義。)
記法が時々変更され、その際に過去との互換 性がなくなる。(過去作品はそのまま)
正規言語?
青空文庫の注記は入れ子になる。
反復補題により、正規言語で表現できない。
より上位の表現が必要
候補を2つ考慮
文脈自由文法(Context Free Grammar)
解析表現文法(Parsing Expression Grammar)
文脈自由文法(言語) 解析表現文法 歴史 40年
(2000年?) 8年
種別 生成文法 分析文法
字句化 必要(Lex相当) 不要 曖昧性 あり(遷移・還元衝突
など) ない
メモリ 少(構文木深さ) 大(入力長) 両文法ともに、ほぼ全てのコンピュータ言語を 表現できるが、マーク付け言語には、字句化が 不要なのは便利。→解析表現文法
注記を文法化
プログラム言語の依存から脱却
パーザの簡素化・信頼性向上
入力テキストの適合性検証の実現
注記自体の曖昧さの検出
注記の解析表現文法による表記
「組版案内」で不明な部分は、既存作品での 例を調査して方針を決定。
文字の文法
文字修飾の記法
行の記法
段落の記法
青空文庫の課題
外字問題
注記処理問題
目次問題
管理問題
これらを解決し、青空文庫データを効率 的・確実にEPUBへ変換することを試みる。
青空文庫注記の現在の記法に沿わない部 分を、オープンソースの手法で修正。
青空文庫 Webサイト
データ Master枝 オリジナル
Fix枝 修正版
第三者の修正 枝作成
フォーク 修正
プル要求 マージ
マージ
定期的に更新
GitHub
青空文庫を電子書籍化しやすいよう、目 次情報をCSVで電子化を試みる。
・・・金兵衛はただそれだけを吉左衛門の耳にささやいた。
[#改丁]
[#5字下げ]第一章[#「第一章」は大見出し]
[#7字下げ]一[#「一」は中見出し] 七月にはいって、吉左衛門《きちざえもん》は・・・ 作品番号, レベル1見出しの正規表現, レベル2見出しの正規表現… 1504,"^[#5字下げ]\(.+?\)[#「.+?」は大見出し]","[#7字 下げ]\(.+?\)[#「.+?」は中見出し]"
第1レベル見出し 第2レベル見出し
青空文庫のデータを、HTML/LaTeX/IDML へ変換する。
青空文庫 テキスト
パーザ部 データ 格納部
HTML LaTeX
IDML この部分は モジュール化 解析表現文法パーザ使用
実コードはほぼなし。 これらの処理部は分離
http://github.com/kawabata/aozora‐proc
目次・外字データ
eeepub
(https://github.com/jugyo/eeepub)
Ruby DSL による、epub自動生成プログラム
CSS3対応HTMLデータを、epubへ変換。
膨大なHTMLデータを一括変換が可能。 試験変換結果→
http://www.meadowy.org/~kawabata/branch
EPUB3への対応はまだ
青空文庫のテキスト資産の活用
注記・外字・管理体制等で幾つか課題
青空文庫をEPUB・LaTeX・IDML等の様々 な書式へ変換する手法の構築
オープンソース手法の、電子テキスト開 発への適用を模索中。
協力者募集中!