非破壊自炊に挑戦(6)外字・Epub用処理・mobi生成

さて外字の話題です。
外字というと、Windows3.1の頃に色々と外字エディタを使って外字を大量に作ったり、会社のシンボルマークを強引に一字TTFフォントにしたりした経験があるんですが、まあ外字エディタでは「そのPC限定」だというので、フォントファイル生成が一番ましなのかな、と。

ところでEPUB3の規格を読む限り、外字の扱いは次の通りとなっています。

  • 普通に文字データで表現する。
  • OpenTypeフォントかWOFFフォントを埋め込む。
  • SVGフォントを埋め込む。
  • 画像で処理する
  • 説明テキストで表現する

をぃをぃ。「ふつーにもじでーたでひょうげんする」って何だよ。→「ネ申」(カタカナの「ネ」と漢字の「申」で「神」という漢字を示すこと)みたいなこと? だとしたらこれ縦書きでは無理ですわ。
ちなみに異体字表現ルールとしては「標準字体」を割り当てる事がこの方法に挙げられます。

OpenTypeフォントとWOFFフォントは、どちらも俗に「WEBフォント」と呼ばれる物。EPUB3ではTIFFと共に標準で表現できるように規格されていますが、原則としてUnicode上にその文字に予約されたコードが割り当てられていることが必須です。従って、全くない連中は「コード読み替え」などをしなくてはならず、同じ文字の異体字の外字が複数あると、結構管理が大変(ファィルの名前付け規則として推奨されているのがUnicode名を使うこと、となっているので)。
フォントエディタで日本語対応(生成できる文字が、ではなくメニューやヘルプが)されている物が有償の物しか無いのが残念。また、縦書き横書きなどの指定が大変。トライしたものの途中で放棄してしまいました。

SVGフォントというのは、ベクタデータ画像ファイルであるSVG形式の画像をフォントとして扱わせる方法。ちなみにSVG形式でのベクタデータでの外字作成と文字コード割り付けについては、GlyphWikiでテスト生成可能です。
但し、これはEPUB3の仕様上MustではなくMay、つまり「読めるようにしといたらいいとおもうけどね」的状態なので、リーダーソフト・ハードが対応しているかどうかで話が変わります。ちなみに、SVG画像として埋め込むことは出来ましたが、フォントとして引っ張ることには失敗しました。

画像で処理する、というのはmobiファイルの推奨形式で、Amazonの文書見ても他の方法は触れてません。JPEGかPNG形式、しかも128×128ドット以上8ビット(256色)透過png推奨との事。

説明テキストとは「つちへんに州」とか、括弧書きで記述する方法。小説でこれはリズム崩すからねえ。

今回の目的はmobiファイル変換なので、ちょっと配置上気にはなるけれど、画像形式を選択します。
で、今回はフツーにお絵かきソフトで、似たような部首の文字をラスタデータ化し、レイヤで調整しつつ作成しました。
この時、やや太め(明朝の太字、128×128の場合、100ポイントで作成)にした上で、微少な修正(縮小されたときに線がつぶれすぎないようにする)を加えます。

今回作成したのは以下の4文字+異体字1つです。

(この字だけは、どうしても文字サイズによっては字が潰れます) 拳の異体字に至っては、手元にあった異本すべてと照合したところ、すべてこの字を使っていた為、標準字体を使いたくなくて、無理矢理作りました。

ああそうそう、この字があるかどうかはCHISE IDS Findで検索するといいです。もしかしたらそこでGlyphWikiで公式に生成された字データが出てくるかも知れませんよ。ここに挙げた物のうち「拳」の異体字以外は、ありませんでしたけど。

なお出来上がった文字画像は、英字+数字のファイル名で保存。たとえば「U62F3.png」はOKですが、「U+62F3.png」はアウト。Epubでは表示できますが、mobiでは表示出来ず画像記号になってしまいました。

さて、これらをどうやって表現させるかというと、XMLっつうかHTMLの<img>タグ、ではあるのですが、そのままでは文字サイズが固定されてしまいます。そこでCSS(スタイルシート)をいじります。

まず、ルール上、epub3の画像はimagesフォルダに保存する事が原則です。画像ファイルをFUSEe画面上にドラッグ&ドロップすると、勝手にimagesフォルダに格納されます。

で、次に修正するのはCSSの設定ファィルです。
CSSは以下の物が出来ているはずです。
・coverstyle.css:カバーページ用のスタイルシート
・stylecommon.css:標準のスタイルシート
・stylevartical.css:縦書きの設定用スタイルシート
・stylehrizontal.css:横書きの設定用スタイルシート
一応、専用に別途スタイルシート埋め込んでもいいんですが、色々トライした結果stylecommom.cssに追加記載するのが一番わかりやすいという事が変わりました。
なお、WEBのCSSと違って、自分でスタイル名を勝手に追加できる訳ではないようです。使えるタグについては全部調べてませんけど。
ではstylecommon.cssの一番最後に以下のように追記します。

 img.gaiji {
    width: 1em;
    hight: 1em;
    display: inline;
    vertical-align: text-bottom;
}

ここで注意したいのが、EPUBとmobiで文字位置の解釈が違うらしいという事。mobiの場合一番最後の「vertical-align: text-bottom;」があると、図の位置が派手にずれました(他の所で悪さしている指示があったのかも知れませんけど)。しかしこれがないとEPUBでは微妙に文字の位置が右寄りにずれます。
ですので、最終目的にあわせて入れるいれないを判断して調整すると良いようです。
また、このCSSのお陰で、画像サイズは文字サイズにフィックスされますので、本文の方に入れるimgタグでは特にサイズ指定しません。

で、本文はいつも一括変換かけてますが、
<img alt="" class="gaiji" src="../images/U62F3.png" />
(拳の異体字の場合です。当然ながら、それぞれの外字については、そのファイル名にしないと駄目ですよ)
のようにimgタグを埋め込みます。
一応判っているとは思いますが、全XMLファイルについて外字の埋め込みしないと駄目ですからね。
※一応、最初に変更内容を書いておいた一太郎ファイルに、CSSの内容とIMGタグは書いておいた方が。EPUB再作成したら飛びますからね。

最後に目次。

実は生成された目次ファイルはインデントではなく、スペース埋めで段差がついてます。これは表示上みっともないので、<a href=>の記述とスペースの位置を切り替えてください。今回、インデント処理はしませんでした。

こうして出来上がったファイルをEPUB3形式ではき出してください。
出来上がったEPUBファイルは、そのままEpubリーダーで読むことが出来ます(一部のリーダーではなんか変な表示になりますけど、国産品なら大丈夫でしょう)。
Kindleで読みたい場合は、FUSEeからでも出力する方法(KindleGenというプログラムをアマゾン英語サイトから入手して、そのパスを登録すれば出来ます)がありますが、Kindle PreviewerにEPUBファイルをドラッグ&ドロップすると、「Compiled-<EPUBファイル名>」というフォルダを生成し、その中にmobiファイルが出来てます。
そのMobiファイルをリネームして、Kindleに転送すると「アイテム一覧」から「ドキュメント」あるいは「すべてのアイテム」をチェックすると、読むことが出来るようになります。