Character code
文字コード(Character code)は、PDFコンテンツストリーム内に出現する数値で、ページ上にレンダリングされる特定の文字を表します。
文字コード(Character code)は、PDFコンテンツストリーム内に出現する数値で、ページ上にレンダリングされる特定の文字を表します。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 ) 。これらのコードは、PDFファイル内の数値データと、ドキュメントがレンダリングされたときに表示される可視文字との間の基本的な橋渡しを形成します。
文字コードは、PDFコンテンツストリーム内のテキスト表示オペレータのオペランドとして出現する整数値です(単一バイトエンコーディングでは通常0~255の範囲、マルチバイトエンコーディングではそれ以上)。文字コード自体は、どのグリフを描画するかを直接指定するものではありません。代わりに、現在のフォントのエンコーディングシステムを通じて解釈される必要があるインデックスとして機能し、実際に表示する文字やグリフを決定します ( 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 ) 。
文字コードは、普遍的な文字識別子であるUnicodeコードポイントとは異なります。文字コードはフォント固有でありエンコーディング固有です。つまり、同じ数値でも、どのフォントがアクティブか、そのフォントがどのエンコーディングを使用しているかによって、異なる文字を表す可能性があります。たとえば、文字コード65は標準的なラテン系エンコーディングでは通常「A」を表しますが、カスタムエンコーディングを持つフォントでは全く異なるグリフを表すことがあります。
文字コードの理解は、PDFのテキスト抽出、コンテンツ生成、アクセシビリティ機能に取り組む開発者にとって不可欠です。PDFからテキストを抽出する際は、適切なフォントエンコーディングを通じて文字コードを正しく解釈し、意味のあるUnicodeテキストを取得する必要があります。文字コードの処理を誤ると、テキスト抽出が文字化けし、文字が記号や誤った文字として表示される原因となります。
アクセシビリティの観点では、スクリーンリーダーが正しく解釈できるTagged 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 ) 。プログラムでPDFコンテンツを生成する際、開発者はコンテンツストリームに書き込む文字コードが、選択したフォントのエンコーディングスキームを通じて意図した文字に正しく対応していることを確認する必要があります。
文字コードは、PDFコンテンツストリーム内でTj、TJ、'、"などのテキスト表示オペレータの引数として出現します。コンテンツストリームには、これらの数値コードが括弧内のリテラル文字列(text)または山括弧内の16進数文字列<74657874>として含まれます。
PDFレンダラーが文字コードに遭遇すると、次のプロセスに従います:
- 文字コードの読み取り – コンテンツストリームのオペランドから文字コードを読み取る
- フォントエンコーディングの適用 – 現在のフォントのエンコーディングを適用して、文字コードを文字名またはグリフ識別子にマッピングする
- グリフの検索 – マッピングされた識別子を使用してフォントプログラム内のグリフを検索する
- グリフのレンダリング – 現在のテキスト位置にグリフをレンダリングする
エンコーディング層は重要です。それは、事前定義されたエンコーディング(WinAnsiEncodingやMacRomanEncodingなど)、フォント辞書で定義されたカスタムエンコーディング、またはCID-keyedフォントの場合はより複雑な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 ) 。マルチバイト文字コードは、アジア言語に必要な大規模な文字セットをサポートするフォントで使用されます。
- Glyph(グリフ) – ページ上に実際に描画される文字の視覚的表現
- Font encoding(フォントエンコーディング) – 文字コードを文字名やグリフ識別子に変換するマッピングシステム
- CMap – CID-keyedフォントで文字コードを解釈するために使用される特殊なマッピングテーブル
- Text-showing operator(テキスト表示オペレータ) – 文字コードを使用してテキストを表示するTjなどのPDFオペレータ
- Unicode – テキスト抽出やActualTextエントリに使用される普遍的な文字エンコーディング規格
- (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
