濁点のトラブルに遭遇

 最近あったちょっとしたトラブルについてちょっとメモ代わりに。epubはおおざっぱに言えばxhtmlをzipで固めたようなものなので、各xhtmlファイルには当然ヘッダ部分があり、タイトルがあるわけなのですが、このタイトル部分に含まれている文字の濁点の部分が「非濁点親文字」 +「゛」の合字になっており、一部のビューアで合字をきちんと表示できないため、問題となりました。以前からFinder内で入力された文字がOS XのUnicode正規化処理によって変換される問題があるという話は知っていたのですが、実際にトラブルに遭遇したのは初めてでした。Unicode正規化処理に関しましてはものかの先生が詳しく解説してますのでこちらの記事を。

OS Xの処理によって濁点が分解される

 ざっくり何が起きるのかというと、Finderでファイル名等を入力すると、入力時に例えば「ダ」が「タ」+「゛」に分解されて収納されるということです。商用アプリ等では通常これを見越して再変換処理を行っていると思いますので、そういったアプリだけを利用して仕事を完結させているとこの現象に気づかないケースも多いかと思いますが、自家製スクリプト等でファイル名、フォルダ名などを取得して処理するようなケースではきちんとした対策が必要になってきます。今回はそれをしていなかったために合字が混入してしまいました。

 やらなきゃならない処理としては簡単で、変化している可能性のある文字をリスト化して順番に置換をかければいいわけです。ということでものかの先生のサイトで公開されているひらくんさんのperlスクリプトを参考に置換処理を実行。

 これを混入の可能性のある各文字列に対して実行するだけです。

チェッカースクリプトにも処理を追記

 ついでに、最終出力EPUBに濁点(U+3099)、半濁点(U+309A)が混入していないかどうかをチェックする処理を以前に作ったスクリプトに追加しました。

ログ出力用変数に

を追記、

最終出力ログの分岐処理部分に

を追記、

ログ出力部に

を追記、

各キャラクタのチェック用サブルーチン内に

を追記。

出力ログ これでEPUBファイル内に濁点(U+3099)、半濁点(U+309A)が混入していた場合にはチェッカーログに出力されるようになりました。

 以下改訂後の全文です。

 いやまあ今まで経験したことないことがいろいろ起きてきますねえ。刺激はたっぷりあります。今回はものかの先生のお話を聞いておいて本当に助かりました。このお礼はいずれ豆大福などで。

改訂後のMac用ドロップレットです。
>>EPUB3トータルデータチェッカー1.3.0(Mac用アプリ) ダウンロードはこちら

(2015.2.10)

タグ: , , ,

コメント / トラックバック 2 件

  1. 名無し より:

    些末な点ですみませんが、
    サロゲートペアって綴りは
    “Surrogate Pair”
    じゃないでしょうか。

  2. Jun Tajima より:

    おっと、ご指摘ありがとうございます。その通りのようですね。ただ、このエントリ内での英語表記はプログラムコード内のみで使用されているようですので、修正は見送ります。変数名とかですので支障はないだろうということで。次から気をつけます。

コメントをどうぞ

プロフィール
Jun Tajima

こちらにて、電子書籍&Web制作を担当しています。
このブログは、EPUB3をはじめとした電子書籍制作担当オペレータからの、「電子書籍の制作時にたとえばこんな問題が出てきていますよ」的な「現地レポート」です。少しでも早い段階で快適な電子書籍閲覧・制作環境が整うことを願って、現場からの声を発信していこうと目論んでおります。

当ブログ内の記事・資料は、私の所属しております組織の許諾を得て掲載していますが、内容は私個人の見解に基づくものであり、所属する組織の見解を代表するものではありません。また、本ブログの情報・ツールを利用したことにより、直接的あるいは間接的に損害や債務が発生した場合でも、私および私の所属する組織は一切の責任を負いかねます。