MacRomanEncoding
MacRomanEncodingは、Apache PDFBoxのクラスで、PDFドキュメント内で使用されるMac Roman文字エンコーディング方式を実装しています。
MacRomanEncodingは、Apache PDFBoxのクラスで、PDFドキュメント内で使用されるMac Roman文字エンコーディング方式を実装しています。このエンコーディングシステムは、Unicodeが採用される以前のMac OSシステムで主に使用されていた、レガシーなMacintosh Roman文字セットに従って、バイト値を特定の文字グリフにマッピングします。 ( Citation: N.A., 2020 (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) で規定されているように、PDFファイルは、異なるプラットフォームやフォント間で正確なテキスト表現を保証するために、MacRomanEncodingを含むさまざまな定義済みエンコーディングを参照することができます。
MacRomanEncodingは、Apache PDFBoxにおける具体的な実装クラスで、PDF仕様で定義されている定義済みエンコーディングの1つであるMac Romanエンコーディング標準を表します。Mac Roman文字セットには256のコードポイントが含まれており、欧文引用符、アクセント付き文字、Macintosh出版環境で一般的に使用される特殊記号など、西ヨーロッパ言語をカバーしています。
PDFBoxのアーキテクチャにおいて、MacRomanEncodingは基底クラスであるEncodingクラスを拡張し、バイト値(0-255)とそれに対応する文字名およびUnicodeコードポイント間のマッピングを提供します。このクラスは、WinAnsiEncoding(Windows ANSI)やStandardEncoding(Adobeの標準)などの他のエンコーディング実装とは、特定の文字対コード割り当てにおいて異なり、特にプラットフォーム固有の文字が存在する上位128コードポイントで違いがあります。
PDFドキュメントを処理する際、PDFBoxはMacRomanEncodingを使用して、Mac Roman文字セットでエンコードされたテキスト文字列を正しく解釈し、文字がドキュメント作成者が意図したとおりに表示されることを保証します。
Macintoshシステムで作成された、またはMacintoshシステム向けに作成されたPDFドキュメントを扱う開発者にとって、MacRomanEncodingは正確なテキスト抽出とレンダリングに不可欠です。Macベースのアプリケーションで生成されたレガシーPDFファイルには、Mac Romanエンコーディングのフォントが埋め込まれていることが多く、適切なエンコーディングサポートがないと、テキストが破損したり、間違った文字が表示されたり、読み取り不可能になったりする可能性があります。
MacRomanEncodingの理解は、特に以下の場合に重要になります:
- レガシーPDFの処理: OS X以前のMacintoshシステムで作成されたドキュメントでは、Mac Romanエンコーディングが頻繁に使用されています
- アクセシビリティコンプライアンスの確保: ( Citation: N.A., 2014 (N.A.). (2014). Document management applications — Electronic document file format enhancement for accessibility — Part 1: Use of ISO 32000-1 (PDF/UA-1) . International Organization for Standardization Retrieved from https://www.iso.org/standard/64599.html ) で概説されているように、適切な文字エンコーディングは、スクリーンリーダーやアクセシビリティツールのためにテキストを抽出する上で基本となります
- テキスト抽出の実行: PDFからテキストを抽出する際、生のバイト値を意味のあるUnicode文字に変換するために、正しいエンコーディングを適用する必要があります
- フォント置換: フォントが欠落している場合や置換が必要な場合、元のエンコーディングを知ることで、文字マッピングが正確に保たれます
エンコーディングの違いを無視する開発者は、視覚的にはテキストが正しく表示されていても抽出が正しく行われなかったり、文字コードが期待されるUnicode等価物と一致しないために検索機能が失敗したりする状況に遭遇する可能性があります。
MacRomanEncodingは、バイトコードと文字表現の双方向マッピングを提供することで、PDFBoxのテキスト処理パイプラインの一部として機能します。PDFBoxがPDF内でMacRomanEncodingを指定するフォントに遭遇すると、このクラスをインスタンス化して文字解釈を処理します。
このクラスは、以下をマッピングする内部ルックアップテーブルを維持します:
- バイトコードから文字名へ: 例えば、Mac Romanではバイト0xDOが「emdash」にマッピングされます
- 文字名からUnicodeコードポイントへ: 文字名「emdash」はUnicode U+2014にマッピングされます
- バイトからUnicodeへの直接マッピング: テキスト抽出時の効率的なルックアップのため
テキストを抽出またはレンダリングする際、PDFBoxは以下のプロセスに従います:
- PDFコンテンツストリームからバイト値を読み取る
- フォントで指定されたエンコーディング(この場合はMacRomanEncoding)を確認する
- エンコーディングのルックアップテーブルを使用してバイトを文字名に変換する
- 表示または抽出のために文字名をUnicodeコードポイントに変換する
- 基本エンコーディングを上書きするフォント固有の差分を適用する
このエンコーディングは、PDFフォント辞書に埋め込まれた「Differences」配列を通じて個々のフォントが特定の文字マッピングを上書きする場合の特殊なケースも処理します。PDFBoxのMacRomanEncoding実装は、基本となるMac Roman文字セットを基礎として維持しながら、これらのフォント固有の変更に対応できます。
PDFBoxをプログラムで使用する開発者にとって、MacRomanEncodingは、フォントを作成または操作する際、またはドキュメント内でテキストがどのようにエンコードされているかを分析する際に参照できます。このクラスは、文字マッピングのクエリ、エンコーディング名の取得、低レベルのPDF操作に必要な文字対コード変換を実行するメソッドを提供します。
- Encoding – PDFフォントにおいて文字コードを視覚的なグリフにマッピングするシステム
- WinAnsiEncoding – 西ヨーロッパ言語向けのWindowsベース文字エンコーディング実装(PDFBox内)
- StandardEncoding – Type 1フォントで使用されるAdobeの標準文字エンコーディング方式
- Font Dictionary – エンコーディング仕様を含むフォントメタデータを含むPDF構造
- Character Set – 特定のエンコーディング方式で利用可能な文字の完全なコレクション
- (N.A.) (2020)
- (N.A.). (2020). Document management — Portable document format — Part 2: PDF 2.0 . International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html
- (N.A.) (2014)
- (N.A.). (2014). Document management applications — Electronic document file format enhancement for accessibility — Part 1: Use of ISO 32000-1 (PDF/UA-1) . International Organization for Standardization Retrieved from https://www.iso.org/standard/64599.html
