Skip to main content
Interwork Corporation
IDR Solutions Product Support Portal
PDF開発用語集 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動 モードの切替 ダーク/ライト/自動

Font descriptor key /LastChar

`/LastChar` キーは、Type 1 および TrueType フォントディクショナリ内の整数エントリであり、フォントの `/Widths` 配列でグリフ幅情報が提供される最大の文字コードを指定します。

カテゴリ: Text & Fonts
キーワード: font descriptor key /lastchar, Font descriptor key /LastChar

概要

/LastChar キーは、Type 1 および TrueType フォントディクショナリ内の整数エントリであり、フォントの /Widths 配列でグリフ幅情報が提供される最大の文字コードを指定します。/FirstChar と組み合わせることで、フォントディスクリプタ内で明示的な幅エントリを持つ文字コードの範囲を定義します ( Citation: N.A., (N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html ) 。このキーは、PDF ドキュメントにおける適切なテキストレンダリングとレイアウト計算に不可欠です。

定義

/LastChar は、シンプルフォント(Type 1 および TrueType フォント)のフォントディクショナリにおける必須の整数キーです。これは、/Widths 配列に対応するエントリを持つ最大の文字コード値を表します。/Widths 配列には、フォント内の各文字の進行幅が文字コードでインデックス付けされて格納されています。有効な範囲は /FirstChar から /LastChar までの包括的な範囲であり、/Widths 配列には正確に (/LastChar - /FirstChar + 1) 個のエントリが含まれている必要があります。

文字範囲の開始を示す /FirstChar とは異なり、/LastChar はその終了を示します。この組み合わせにより、フォントの文字セットへのウィンドウが作成され、PDF プロセッサが文字コードを対応する幅の値に効率的にマッピングできるようになります。この範囲外の文字コードは異なる方法で処理され、通常はデフォルトの幅を使用するか、未定義として扱われます。

重要性

PDF テキストレンダリングとフォント埋め込みに取り組む開発者にとって、/LastChar は以下の理由から重要です:

レイアウトの精度: /FirstChar/LastChar で定義される文字範囲は、テキスト幅の計算方法に直接影響します。誤った値を設定すると、レンダリングされたドキュメントでテキストがオーバーフロー、重複、または予期しない隙間が生じる可能性があります。

フォントサブセット化の最適化: PDF にフォントを埋め込む際、開発者は /FirstChar/LastChar を使用して、ドキュメントで実際に使用されている文字範囲のみを含めることができ、ファイルサイズを削減できます。これらの値を適切に設定することで、/Widths 配列に必要なデータのみが含まれることが保証されます。

文字エンコーディングの検証: PDF プロセッサは /LastChar を使用して、文字コードに定義されたメトリクスがあるかどうかを検証します。この範囲を超える文字をレンダリングしようとすると、グリフが欠落したり、ドキュメントの外観に影響を与えるフォールバック動作が発生したりする可能性があります。

仕組み

PDF プロセッサがテキストをレンダリングする際、/LastChar に関わる以下のワークフローに従います:

  1. 範囲の決定: プロセッサは、フォントディクショナリから /FirstChar/LastChar を読み取り、有効な文字コード範囲を確立します。

  2. 幅の検索: テキスト文字列内の各文字について、プロセッサはその文字コードが /FirstChar から /LastChar の範囲内にあるかを確認します。範囲内にある場合、幅は /Widths 配列のインデックス (character_code - /FirstChar) から取得されます。

  3. 境界の処理: 文字コードが /LastChar を超える場合(または /FirstChar 未満の場合)、プロセッサは通常、フォントディスクリプタから /MissingWidth 値を使用するか、その文字を未定義として扱います。

  4. 配列の検証: /Widths 配列の長さは (/LastChar - /FirstChar + 1) と等しくなければなりません。不一致は、レンダリングエラーの原因となる可能性がある不正なフォントディクショナリを示します。

PDF フォントディクショナリ内の構造例:

/Type /Font
/Subtype /Type1
/FirstChar 32
/LastChar 126
/Widths [250 333 408 ... 564]  % 95 個のエントリを持つ配列 (126-32+1)

この例では、/LastChar の値 126 は、文字コード 126(ASCII のチルダ ~)が明示的な幅エントリを持つ最後の文字であることを示しています。

関連用語

  • FirstChar – フォントの幅配列の開始文字コードであり、文字範囲の下限を定義します
  • Widths array – FirstChar から LastChar までの範囲の各文字の進行幅を表す数値の配列
  • Font descriptor – テキストのレンダリングに必要なフォントメトリクスと属性を含むディクショナリ
  • MissingWidth – FirstChar から LastChar の範囲外の文字に使用されるデフォルトの幅
  • Character encoding – PDF テキスト文字列内の文字コードとフォント内のグリフとの間のマッピング

出典

(N.A.) (2020)
(N.A.). (). Document management — Portable document format — Part 2: PDF 2.0 International Organization for Standardization Retrieved from https://www.iso.org/standard/75839.html