Horizontal scaling
Horizontal scalingは、PDFにおける文字グリフの幅を制御するテキストパラメータで、通常の幅に対する割合(パーセンテージ)で表現されます。
Horizontal scalingは、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 ) ではテキスト状態のTzパラメータとして定義されており、文字の高さに影響を与えることなく、テキストを水平方向に圧縮または拡張することができます。このパラメータは、後続のTzオペレータによって変更されるまで、テキストシーケンス内のすべての文字に均一に適用されます。
Horizontal scaling(Tz)は、テキストをレンダリングする際に使用する通常の文字幅の割合を表す数値です。100の値は、通常のスケーリングされていないテキスト幅を表します。100未満の値は文字を水平方向に圧縮し(圧縮されたテキスト)、100より大きい値は文字を引き伸ばします(拡張されたテキスト)。
(
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
)
で規定されているように、Tzパラメータはテキスト状態の一部であり、コンテンツストリーム内でTzオペレータに続く数値を使用して設定されます。
文字を両方向に比例してスケーリングするフォントサイズ(Tf)とは異なり、horizontal scalingはグリフのx軸方向のみに影響します。これは、より複雑な幾何学的変更を適用できるテキストマトリックス変換とも異なります。Horizontal scalingは、文字の高さとベースラインの位置を保持する単純な一次元の幅調整です。
PDFの生成または操作を行う開発者にとって、horizontal scalingを理解することは以下のいくつかの理由から不可欠です。
テキストレイアウト制御: Horizontal scalingにより、フォントサイズや書体を変更することなく、特定の幅制約に合わせてテキストを微調整できます。これは、フォーム、表、固定幅フィールドで特に有用です。
文書の忠実性: PDFを解析またはレンダリングする際、Tzパラメータを正しく解釈することで、テキストが意図したとおりに表示されます。このパラメータを無視すると、テキスト幅の計算が不正確になり、レイアウトエラーが発生する可能性があります。
アクセシビリティへの配慮: 過度のhorizontal scalingは可読性に悪影響を及ぼし、支援技術に問題を引き起こす可能性があります。 ( 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は読みやすいテキストを維持する必要があり、極端なTz値はこの要件を損なう可能性があります。
スペース計算: 配置、折り返し、または抽出のためのテキスト幅の計算では、Tz値を考慮する必要があります。これは、各文字のアドバンス幅に直接影響するためです。
Horizontal scalingパラメータは、各文字グリフの標準アドバンス幅に適用される乗数として機能します。PDFレンダラーが100以外のTz値を持つテキストに遭遇すると、以下のプロセスを実行します。
パラメータの設定: コンテンツストリームはTzオペレータを使用します。95 Tzはhorizontal scalingを95%に設定し、テキストを通常の幅の95%に圧縮します。
グリフのレンダリング: 各文字について、レンダラーはフォントメトリクスからグリフの通常のアドバンス幅を取得し、その幅に(Tz / 100)を乗算します。たとえば、Tz = 80の場合、通常10ユニット幅のグリフは8ユニット幅としてレンダリングされます。
テキストの配置: 変更されたアドバンス幅によって、次の文字が開始される位置が決まります。これは、テキスト測定操作、カーソル位置、テキスト抽出アルゴリズムに影響します。
状態の永続性:
(
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
)
で定義されているように、Tz値は、別のTzオペレータによって明示的に変更されるか、グラフィックス状態操作によってリセットされるまで、現在のグラフィックス状態内のすべての後続のテキスト操作に対して有効です。
デフォルト値: Tzオペレータが指定されていない場合、デフォルトのhorizontal scalingは100%(通常の幅)です。
PDFライブラリを実装する開発者は、レンダリング時(正しい文字幅を表示するため)とテキスト抽出時(正確な文字位置とバウンディングボックスを計算するため)の両方で、このスケーリング係数を適用する必要があります。
- Text state(テキスト状態) – horizontal scaling、フォントサイズ、文字間隔、単語間隔を含む、テキストレンダリングを制御するパラメータの集合
- Character spacing(Tc、文字間隔) – スケーリングされていないテキストスペース単位で測定される、文字間に追加される間隔
- Word spacing(Tw、単語間隔) – 単語間に追加される間隔で、特にスペース文字に影響します
- Text matrix(テキストマトリックス) – ユーザー空間におけるテキストの位置、回転、スケーリングを制御する変換マトリックス
- Glyph advance width(グリフアドバンス幅) – 文字をレンダリングした後にテキスト位置を移動する水平距離
- (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
