PDF encoding
PDF encodingとは、PDFファイル内の文字コードを、フォント内の特定のグリフ(文字の視覚的表現)にマッピングする方法を指します。
PDF encodingとは、PDFファイル内の文字コードを、フォント内の特定のグリフ(文字の視覚的表現)にマッピングする方法を指します。 ( 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 ) によれば、encodingはテキストコンテンツを正しく表示するために不可欠であり、PDFのコンテンツストリーム内のバイト値と、それが表す実際の文字との関係を定義します。適切なencodingにより、テキストが正しくレンダリングされ、検索、コピー、そして支援技術によるアクセスが可能になります。
PDF encodingとは、数値コードを表示可能な文字に変換する、文字からグリフへのマッピング機構です。テキストがPDFに書き込まれる際、バイト列で構成されており、これらはencodingスキームを通じて解釈され、フォントのどのグリフを表示すべきかが決定されます。
PDFは、事前定義されたencoding(WinAnsiEncoding、MacRomanEncoding、StandardEncodingなど)、PDFファイル内で定義されるカスタムencoding、およびUnicodeベースのフォントで使用されるIdentity encodingなど、複数のencodingタイプをサポートしています。単純な文字セットが1対1のマッピングを提供するのに対し、PDF encodingは、特に複雑なスクリプトや大規模な文字セットに使用される合成フォント(CIDFont)を扱う際に、複数の変換レイヤーを含むことがあります。
encodingは文字セットとは異なり、PDFコンテキスト内でバイト値がフォントグリフにどのようにマップされるかを具体的に定義します。一方、文字セットは、割り当てられたコードポイントを持つ文字の広範なコレクションです。また、PDF encodingはUnicodeとも異なり、ドキュメント構造内のフォントレベルで動作しますが、Unicodeは普遍的な文字エンコーディング規格です。
PDF生成、操作、抽出を行う開発者にとって、PDF encodingの理解は、いくつかの実用的な理由から重要です:
テキスト抽出の精度: encodingが正しく処理されないと、PDFからコンテンツを抽出する際にテキストが文字化けします。検索機能やコンテンツ管理システムを構築する開発者は、意味のある文字列を取得するために、テキストを適切にデコードする必要があります。
アクセシビリティへの準拠: ( 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 ) によれば、適切なencodingと文字マッピングは、スクリーンリーダーや支援技術が正しく解釈できるアクセシブルなPDFを作成するための基本要件です。適切なencodingがなければ、アクセシビリティ機能は機能しません。
国際化対応: 複数の言語や文字セットをサポートするには、特にCJK(中国語、日本語、韓国語)言語や右から左へのスクリプトを扱う際に、異なるencodingスキームの使い方を理解する必要があります。
コピー&ペースト機能: エンドユーザーは、PDFからテキストをコピーして他の場所に貼り付けることを期待します。これは、ToUnicodeマッピングと組み合わせた適切なencodingの実装に依存します。
PDF encodingは、使用されるフォントタイプに応じて、いくつかのメカニズムを通じて動作します:
シンプルフォントは、各バイト値(通常0-255)が特定のグリフにマップされる直接的なencodingスキームを使用します。PDFは組み込みencodingを参照するか、文字とグリフのマッピングを指定するカスタムencoding辞書を定義できます。テキストをレンダリングする際、PDFプロセッサはencodingテーブル内の各バイトを検索して、どのグリフを表示するかを決定します。
合成フォント(Type 0フォント)は、2段階のマッピングプロセスを使用します。文字コードはまずCharacter Identifier(CID)にマップされ、次にCIDFontを通じてグリフにマップされます。このシステムにより、256グリフを超える大規模な文字セットが可能になり、アジア言語には不可欠です。これらのフォントは通常、横書きまたは縦書きモードのためにIdentity-HまたはIdentity-V encodingを使用します。
ToUnicode CMap: ( 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には文字コードからUnicode値への明示的なマッピングを提供するToUnicode CMapを含めることができます。この補助的なマッピングにより、ベースのencodingがカスタムまたは非標準である場合でも、適切なテキスト抽出と検索が可能になります。
encodingプロセス: PDFライターがテキストを埋め込む際、フォントに適したencodingを選択し、そのencodingに従って文字コードを書き込み、オプションでToUnicode CMapを含めます。PDFリーダーがドキュメントを表示する際、encodingを使用してこれらのコードをレンダリング可能なグリフに変換します。テキスト抽出の場合、リーダーは利用可能であればToUnicode CMapを優先的に使用し、そうでなければベースのencodingにフォールバックします。
- Character Map (CMap) – CIDFont内の文字コードと文字識別子の対応を定義するマッピングテーブル
- Font Embedding – 異なるシステム間で一貫したレンダリングを保証するために、PDFファイル内にフォントデータを含めるプロセス
- Glyph – フォントプログラムで定義された文字の視覚的表現
- ToUnicode CMap – テキスト抽出とアクセシビリティのために文字コードをUnicode値に変換する特別なマッピングテーブル
- CIDFont – 大規模な文字コレクションを処理するために設計されたフォントタイプで、アジア言語フォントに一般的に使用される
- (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
