変換不能文字で止まらない!EPUBの文字抜け、変換不能文字による文字抜けを防ぐ

変換不能文字がEPUBから抜ける前に捕まえるアイキャッチ

EPUBで文字が抜ける経路の一つが、原稿を別の文字コードで保存するときの表現不能です。その文字コードで表せない字を置換・削除する道具で上書きすれば、EPUBを書き出す前に原稿側の情報が失われます。画像化、フォント、EPUB変換、端末表示など別の原因はこの記事の範囲外です。

この経路への対策は、変換先の文字コードで表せるかを保存前に確認し、表せない文字があれば書き込みを止めることです。この記事では、その限定した順序と止め方を扱います。どの字が通らないかの見つけ方や、化けた原稿の開き直しは別の記事に譲ります。

「抜ける」と「化ける」は別のこと

似た症状ですが、起きていることが違います。

戻るか戻らないかが決定的な違いです。 化けているだけなら慌てなくていい。抜けているなら、その原稿はもう元に戻せません。

起きる順番

今回扱う抜けの流れは、次のとおりです。

  1. UTF-8で原稿を書く。異体字や記号も普通に表示される
  2. 何かの都合でShift_JISなど別の文字コードで保存する
  3. 保存に使う道具が、表せない字を置き換えるか削除したまま書き込む
  4. 気づかないまま書き出す
  5. 出来上がった本で、その字だけが欠けている

問題は3番です。ここで何も言われないと、以後どこで確かめても取り返せません。

「後で気づける」という前提が成り立たない

抜けた字は、抜けたことが分かる形では残りません。

たとえば人名の異体字が別の字に置き換わった場合、本文としては読めてしまいます。読み返しても違和感がありません。空白になっていれば気づけますが、似た字に置き換わっていると、書き手ですら見落とします。

さらに、原稿は自動で保存されることがあります。自分では保存した覚えがなくても、編集の少し後に保存されている。自分が保存した瞬間を覚えていないので、いつ抜けたのかも分からなくなります。

そして、抜けた原稿を元に戻す方法は基本的にありません。控えを取っていなければ、その字は手で打ち直すしかありません。20か所あれば20回探して直すことになります。

rune Studioは、抜ける前に保存を止める

rune Studioは、選んだ文字コードで表せない文字がある間、保存しません。

実際に開発版を命令から動かして確かめました。「髙橋さんと𠮷田さんが来た。瀨戸内の海。」という原稿を、Shift_JISで保存しようとしました。結果は保存されず、この文字コードでは表せない文字が1か所ある、という内容が返りました。ファイルは作られませんでした。

なお、この「保存されない」は命令から保存した場合に実際に確かめた結果です。アプリの画面で保存する場合は、資料によれば保存のときに警告が出て、自動保存が止まり、画面右上に通知が出ます。画面で保存したときに実際どうなるかは、この工程では確かめていません。 確かめたのは命令から保存した場合だけです。

同じ原稿について、Shift_JISで表せるかどうかを調べたところ、表せない文字として返ったのは 𠮷 の1件だけで、位置と文字がそのまま返りました。髙と瀨は表せました。つまり、直すべき箇所が1か所と分かった状態で、保存が止まっています。

資料上では、自動保存も止まる

製品資料では、表せない文字がある間は自動保存も一時停止すると説明されています。今回の操作検証で確認したのは命令からの保存拒否であり、アプリ画面の自動保存は実操作していません。

これは地味ですが効きます。保存を止められると作業は不便になりますが、不便であることが「いま直さなければいけない」という合図になります。

資料上では、画面で赤く示される

製品資料では、表せない文字を画面上の赤い背景で示し、連続範囲をまとめて表示すると説明されています。この画面表示も今回の実操作対象には含めていません。

控えを取る習慣は、それでも要る

保存が止まる仕組みがあっても、控えを取る習慣まで不要になるわけではありません。止まるのは「表せない文字がある場合」であって、書き手が自分で消してしまった文章までは守れません。

現実的なのは、章を書き終えるたびに原稿のフォルダごと複製しておくことです。日付を付けたフォルダを1つ増やすだけで、どこまで戻れるかがはっきりします。文字コードの事故と、書き手自身の操作ミスは別の問題なので、対策も別に用意しておくと安心です。

向く人と、別の方法が向く人

向いているのは、古い原稿や、他の人から受け取った原稿を扱う人です。 自分がUTF-8で書き始めたものでも、共同執筆や外部への受け渡しで別の文字コードが混ざります。

最初から最後までUTF-8だけで進むなら、この問題はほとんど起きません。 UTF-8で表せない字は、日常の日本語ではまず出てきません。文字コードを変える予定がないなら、気にしなくて構いません。

なお、確かめたのは保存が止まることと、表せない文字が返ることまでです。販売先が特定の字を受け入れるか、端末で表示されるかは範囲外です。

まとめ

次の一歩として、いまの原稿がどの文字コードで保存されているかを確かめてください。UTF-8以外なら、一度Shift_JISで表せるかどうかの検査をかけておくと安心です。

Rune Studioの製品ページを見る