epub に する 方法を本全体へ適用する前に、代表的な一章を診断用標本として選びます。その章の文字コードを読み、別名のUTF-8へ変換し、本文を照合してから小さなEPUBを作ります。一章で失敗する方法を全章へ広げないことが、保存前に文字化けへ気づく最短経路です。
診断する一章を選ぶ
先頭章が必ず代表とは限りません。人名、会話記号、ルビ候補、ダッシュなど、その本で失いたくない文字を含む章を選びます。短すぎる章や英数字だけの章では、日本語変換の問題を見つけにくくなります。
標本は原本から複製し、元ファイルを触りません。ファイル名、更新時刻、予想する符号、比較する三箇所を記録します。この単章診断は、校了版の最終引き渡しでも全章一括変換でもなく、変換方式を選ぶための予備試験です。
代表章を選べない場合は、最も古い章と最も新しい章を候補にし、先にencodingだけを読みます。二つが同じなら文字種の多い方を標本にします。違うなら一冊の中で形式が混在しているため、単一条件の一括変換へ進みません。
推測より先に符号を読む
拡張子が.txtでもUTF-8とは限りません。文字が読めたという理由だけで保存し直さず、検査ツールでencodingと改行方式を確認します。変換元の指定を誤ると、成功終了しても本文が壊れる場合があります。
今回の合成標本は、三行のUTF-8原稿からShift_JIS版を作りました。Runeのinspect textはShift_JIS、LF、36文字、3行、変換不能候補0件と返しました。この値を変換前の基準にしています。
別名UTF-8を作る
診断ではiconv -f SHIFT_JIS -t UTF-8を使い、元のShift_JISファイルとは違う名前へ出力しました。上書きしないので、文字が変わった場合でもバイト列を比較できます。終了コード0だけで合格にはしません。
変換後を再検査するとUTF-8、LF、36文字でした。さらに本文の章題と一文が元の復号結果と一致しました。この標本はShift_JISで表現可能な文字だけを使っているため、実原稿の外字や破損まで安全だとは言えません。
文字数と意味を二段階で比べる
文字数が減れば、欠落や改行処理の問題を疑えます。ただし同じ字数の置換は件数に現れません。そこで固有名詞、約物、章末文を前後の文脈ごと比較します。機械的な値と人が読む意味の両方が必要です。
差が出たら全章処理へ進まず、変換元の指定、原本の破損、対象文字の表現可否を切り分けます。すでに壊れたバイト列の復元はこの方法の範囲外です。読める原本やバックアップへ戻ります。
診断票には、変換前後のファイルサイズも補助値として残します。ただしUTF-8とShift_JISでは同じ文章でもバイト数が異なるので、サイズ一致を合格条件にしません。encoding、文字数、文脈比較を主判定にします。
小さなEPUBで受け渡しを試す
UTF-8化した一章をRune Studioの専用ワークスペースへ入れ、タイトル、nav、本文、奥付を持つEPUBとして出力しました。navとNCXは一件の本文を参照し、パッケージの欠落資源は0件でした。ローカル検査はvalid=trueです。
この結果は、一章の変換後ファイルをEPUBへ収録して再読込できたことを示します。販売先の受理、対象リーダーでの字形、Rune Studioの赤表示や自動保存停止の画面は今回直接観測していません。
失敗したら一段だけ戻る
文字コードが誤検出なら診断方法へ、変換後の文が違うなら変換条件へ、EPUBの参照が切れるならパッケージ設定へ戻ります。三つの層を一度に直さないことで、原因と修正結果を対応させられます。
原本を上書きしてしまった場合は、作業を続ける前に変更前コピーを探します。比較元がないまま全章を変換すると、誤置換の検出が難しくなります。
失敗版は削除せず、原因が分かる名前で隔離します。再試行の入力へ誤って選ばないようにしつつ、どの条件が不適切だったかを次の担当者へ渡せます。
全章へ広げる判断
二章目へ進むときも、最初の標本と同じ値になることを期待しません。章ごとに文字数も記号も違うからです。期待するのは、検出したencodingを変換元へ使い、UTF-8として開き直せ、選んだ文面が保たれるという判定手順の再現です。
混在が見つかった本では、encoding別に処理グループを分けます。Shift_JIS用の条件をUTF-16章へ流用せず、各グループで一章を診断してから残りへ進みます。診断方法を小さく保つことで、例外の原因を見失いません。
代表章が元の符号で読め、別名UTF-8を再読込でき、選んだ文字列が一致し、小さなEPUBで欠落0件になったら、同じ方式を次の章へ適用できます。ただし章ごとに元の符号が違う可能性は残るため、各章の診断値を記録します。次章で値が変わった場合は、最初の変換条件を流用せず、その章を新しい標本として診断し直します。これにより例外を正常な章の中へ隠しません。
一章ずつ確かめたい人にはRune Studioの検査とEPUB出力が候補になります。大量の破損復旧やフォント字形の保証が必要なら別の専門工程を使います。まず最も文字の種類が多い一章を複製し、三つの照合箇所を決めてください。


