HPDFShapeHeadlessTextSpan
function HPDFShapeHeadlessTextSpan(const Context: UnicodeString;
FirstUnit, UnitCount: Integer; const FontBytes: SysUtils.TBytes;
MaximumGlyphs: Integer; CancellationToken: THPDFCancellationToken;
CharacterAdvance: Double = 0; WordAdvance: Double = 0;
ParagraphDirection: THPDFHeadlessTextDirection = htdAuto): THPDFHeadlessShapedGlyphs;
呼び出し元の実際の OpenType フォントで、選択された UTF-16 スパンだけをシェーピングします。周囲の段落全体は HarfBuzz の pre-context / post-context として保持されます
FirstUnit は 0 起点の UTF-16 オフセット、UnitCount は UTF-16 の長さです。どちらの境界もサロゲートペアを分割してはならず、長さ 0 のスパンはグリフを返しません
FriBidi が段落全体から埋め込みレベルを解決します。HarfBuzz は解決済みスクリプトを受け取り、各 visual run 内の選択項目をシェーピングし、アラビア語の結合形とミラー化された句読点を保持します
返される SourceOffset は選択スパン基準の相対値で、UnicodeText は実際に選択された各クラスタを保持し、グリフの送り幅とオフセットは 1000 単位のフォント座標を使います
CharacterAdvance はシェーピング済みクラスタごとに 1 回適用されます。ただし Unicode 方向制御文字だけのクラスタは除きます。WordAdvance は U+0020 のクラスタに適用され、どちらも有限値で Advance と同じ座標系でなければなりません
ParagraphDirection は、最初の strong 文字が元の段落と異なる物理折り返し行をシェーピングする際、既存の左から右/右から左の段落方向を保持できます
既存の入力バジェットとグリフバジェット、フォントカバレッジチェック、キャンセルトークン、ネイティブランタイム依存の要件も、この関数にそのまま適用されます
部分スパンは結合コンテキストを保持しますが、別フォントの基底グリフに対して異なるスタイルの結合記号を独立に配置することはありません。1 つのフォントがクラスタ全体をカバーする場合は、クラスタ全体のシェーピングを使ってください
HPDFShapeHeadlessText、HPDFResolveHeadlessTextOrder、文脈依存のリッチテキスト外観を参照してください