Text state
Text stateは、PDFのグラフィックス状態の中で、特にテキストのページ上でのレンダリング方法を制御する専門的なサブセットです。
Text stateは、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 ) 。現在のフォント、フォントサイズ、文字間隔、単語間隔、テキストレンダリングモードなど、変更されるまですべてのテキスト操作に適用されるパラメータを保持します。Text stateの理解は、PDF文書からテキストコンテンツを生成、操作、または抽出する必要がある開発者にとって不可欠です。
Text stateは、PDFのグラフィックス状態内にあるパラメータの集合で、テキストレンダリングの動作を専門的に制御します。線、塗りつぶし、色、変換などすべてのグラフィック要素を制御する広範なグラフィックス状態とは異なり、text stateはテキスト固有の属性のみに焦点を当てています ( 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 ) 。主なtext stateパラメータには以下が含まれます:
- フォントとフォントサイズ(
Tfオペレータ)– どの書体でどのサイズでテキストをレンダリングするか - 文字間隔(
Tcオペレータ)– 個々の文字間の追加スペース - 単語間隔(
Twオペレータ)– 単語間の追加スペース - 水平スケーリング(
Tzオペレータ)– 文字幅のパーセンテージスケーリング - 行送り(
TLオペレータ)– テキスト行間の垂直距離 - テキストレンダリングモード(
Trオペレータ)– テキストを塗りつぶすか、ストロークするか、クリッピングパスとして使用するか - テキスト上昇(
Tsオペレータ)– 上付き文字と下付き文字のベースライン調整 - テキストマトリクス – 現在のテキストの配置と変換
これらのパラメータは、PDFオペレータによって明示的に変更されるまで、コンテンツストリーム内のテキスト表示操作全体にわたって持続します。Text stateはグラフィックス状態スタックの一部として存在するため、qおよびQオペレータを使用して保存および復元できます。
PDF生成または操作を扱う開発者にとって、text stateを適切に管理することは、いくつかの理由から重要です:
正確なテキストレンダリング:不適切なtext stateパラメータは、サイズ、間隔、または位置が不適切なテキストにつながり、異なるPDFビューアで正しくレンダリングされない可能性があります。テキストを表示しようとする前にフォントとサイズを設定することは必須であり、これを怠ると無効なPDF文書になります。
アクセシビリティ準拠:PDF/UAなどの標準に準拠したアクセシブルなPDFを作成する場合、text stateは支援技術がコンテンツを解釈して提示する方法に直接影響します ( 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 ) 。適切なtext state管理により、フォント情報とテキストレンダリングパラメータがタグ付きコンテンツ構造に正しく関連付けられることが保証されます。
テキスト抽出の信頼性:PDFからテキストを抽出するアプリケーションは、text state情報に依存して、文字間隔、単語境界、テキストレイアウトを理解します。テキスト抽出ツールを構築する開発者は、元のテキストシーケンスと書式を正確に再構築するために、text stateの変更を追跡する必要があります。
パフォーマンス最適化:Text stateを理解することで、開発者は類似のプロパティを持つテキストをグループ化し、不要な状態変更を回避することで冗長な操作を最小限に抑え、ファイルサイズを削減し、レンダリングパフォーマンスを向上させることができます。
Text stateは、一連のtext stateオペレータを通じてPDFコンテンツストリーム内で動作します。一般的なワークフローは以下の通りです:
初期化:コンテンツストリームが開始されると、text stateパラメータはデフォルト値で始まります。テキストを表示する前に、最低限フォントとサイズをTfオペレータを使用して設定する必要があります(例:/F1 12 TfはフォントF1を12ポイントで設定します)。
状態の変更:開発者は必要に応じて特定のオペレータを使用してtext stateを変更します。例えば、3 Tcは3単位の文字間隔を追加し、150 Tzはテキストを通常の幅の150%に水平スケーリングします。これらのオペレータは累積され、複数の調整が組み合わさって後続のテキストレンダリングに影響します。
テキストオブジェクトのコンテキスト:Text stateオペレータは通常、BT(begin text)とET(end text)オペレータで区切られたテキストオブジェクト内に現れます。ほとんどのtext stateはテキストオブジェクトの外で設定できますが、テキストマトリクスとテキスト行マトリクスはこのコンテキスト内でのみ存在します
(
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
)
。
状態の持続とスコープ:Text stateの変更は、明示的に変更またはリセットされない限り、コンテンツストリーム全体で持続します。グラフィックス状態スタック(q/Qオペレータ)はスコープ制御を提供します。qでグラフィックス状態を保存すると現在のtext state値が保持され、後でQで復元できます。
グラフィックス状態との相互作用:Text stateは、広範なグラフィックス状態から特定のプロパティ、特に色(塗りつぶしとストロークの色)および変換マトリクスを継承します。テキストをレンダリングする際、現在の変換マトリクス(CTM)とテキスト固有のパラメータの両方が連携して、最終的なテキストの外観を決定します。
- Graphics state(グラフィックス状態) – テキスト状態をサブセットとして含む、すべてのレンダリング操作を制御するパラメータの完全なコレクション
- Content stream(コンテンツストリーム) – ページコンテンツを記述するPDFオペレータとオペランドのシーケンスで、text stateオペレータが使用される場所
- Text object(テキストオブジェクト) – BTとETオペレータで囲まれたコンテンツストリームのセクションで、テキスト表示操作が発生する場所
- Font dictionary(フォント辞書) – text stateのフォントパラメータによって参照される、フォント特性を定義するPDFオブジェクト
- Text matrix(テキストマトリクス) – テキストの配置と向きを制御する、text state内の変換マトリクス
- (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
