次の方法で共有


GlyphRun オブジェクトと Glyphs 要素の概要

このトピックでは、GlyphRun オブジェクトと Glyphs 要素について説明します。

GlyphRun の概要

Windows Presentation Foundation (WPF) は、グリフ レベルのマークアップを含む高度なテキスト サポートを提供し、書式設定後にテキストをインターセプトして保持するユーザー向けに、Glyphs に直接アクセスできます。 これらの機能は、次の各シナリオのさまざまなテキスト レンダリング要件に対して重要なサポートを提供します。

  1. 固定形式ドキュメントの画面表示。

  2. 印刷シナリオ。

    • デバイス プリンター言語としての拡張可能なアプリケーション マークアップ言語 (XAML)。

    • Microsoft XPS ドキュメント ライター。

    • 以前のプリンタードライバーは、Win32アプリケーションから固定形式に出力されました。

    • 印刷スプール形式。

  3. 以前のバージョンの Windows やその他のコンピューティング デバイスのクライアントを含む、ドキュメントの固定形式表現。

手記

GlyphsGlyphRun は、固定形式のドキュメントのプレゼンテーションと印刷のシナリオ向けに設計されています。 WPF には、LabelTextBlockなど、一般的なレイアウトとユーザー インターフェイス (UI) シナリオ用のいくつかの要素が用意されています。 レイアウトと UI のシナリオの詳細については、「WPFの 文字体裁」を参照してください。

GlyphRun オブジェクト

GlyphRun オブジェクトは、1 つのフォントの単一の面から 1 つのサイズで、1 つのレンダリング スタイルを持つグリフのシーケンスを表します。

GlyphRun には、グリフ Indices や個々のグリフ位置などのフォントの詳細の両方が含まれます。 また、実行元の Unicode コード ポイント、文字からグリフへのバッファー オフセット マッピング情報、文字ごとおよびグリフごとのフラグも含まれます。

GlyphRun には、対応する高レベルの FrameworkElementGlyphsがあります。 Glyphs は、要素ツリーと XAML マークアップで使用して、GlyphRun 出力を表すことができます。

Glyphs 要素

Glyphs 要素は、XAML の GlyphRun の出力を表します。 次のマークアップ構文は、Glyphs 要素を記述するために使用されます。

<!-- The example shows how to use a Glyphs object. -->
<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  >

   <StackPanel Background="PowderBlue">

      <Glyphs
         FontUri             = "C:\WINDOWS\Fonts\TIMES.TTF"
         FontRenderingEmSize = "100"
         StyleSimulations    = "BoldSimulation"
         UnicodeString       = "Hello World!"
         Fill                = "Black"
         OriginX             = "100"
         OriginY             = "200"
      />

   </StackPanel>
</Page>

次のプロパティ定義は、サンプル マークアップの最初の 4 つの属性に対応しています。

財産 説明
FontUri リソース識別子 (ファイル名、Web Uniform Resource Identifier (URI)、またはアプリケーション .exe またはコンテナー内のリソース参照) を指定します。
FontRenderingEmSize 描画サーフェイス単位でフォント サイズを指定します (既定値は .96 インチ)。
StyleSimulations 太字および斜体のスタイルのフラグを指定します。
BidiLevel 双方向レイアウト レベルを指定します。 偶数とゼロの値は、左から右のレイアウトを意味します。奇数の値は、右から左のレイアウトを意味します。

Indices プロパティ

Indices プロパティはグリフ仕様の文字列です。 グリフのシーケンスが 1 つのクラスターを形成する場合、クラスター内の最初のグリフの指定の前に、グリフの数と、クラスターを形成するために結合されるコード ポイントの数の指定が付けられます。 Indices プロパティは、次のプロパティを 1 つの文字列で収集します。

  • グリフ インデックス

  • グリフのアドバンス幅

  • グリフアタッチメントベクトルの組み合わせ

  • コード ポイントからグリフへのクラスター マッピング

  • グリフ フラグ

各グリフ仕様の形式は次のとおりです。

[GlyphIndex][,[Advance][,[uOffset][,[vOffset][,[Flags]]]]]

グリフ メトリック

各グリフは、他の Glyphsとの配置方法を指定するメトリックを定義します。 次の図は、2 つの異なるグリフ文字のさまざまな文字体裁を定義しています。

グリフ測定の ダイアグラフ

グリフ表記

次のコード例は、XAML で Glyphs 要素のさまざまなプロパティを使用する方法を示しています。

<!-- The example shows how to use different property settings of Glyphs objects. -->
<Canvas
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Background="PowderBlue"
  >

<Glyphs 
   FontUri             = "C:\WINDOWS\Fonts\ARIAL.TTF"
   FontRenderingEmSize = "36"
   StyleSimulations    = "ItalicSimulation"
   UnicodeString       = "Hello World!"
   Fill                = "SteelBlue"
   OriginX             = "50"
   OriginY             = "75"
/>

<!-- "Hello World!" with default kerning -->
<Glyphs 
   FontUri             = "C:\WINDOWS\Fonts\ARIAL.TTF"
   FontRenderingEmSize = "36"
   UnicodeString       = "Hello World!"
   Fill                = "Maroon"
   OriginX             = "50"
   OriginY             = "150"
/>

<!-- "Hello World!" with explicit character widths for proportional font -->
<Glyphs 
   FontUri             = "C:\WINDOWS\Fonts\ARIAL.TTF"
   FontRenderingEmSize = "36"
   UnicodeString       = "Hello World!"
   Indices             = ",80;,80;,80;,80;,80;,80;,80;,80;,80;,80;,80"
   Fill                = "Maroon"
   OriginX             = "50"
   OriginY             = "225"
/>

<!-- "Hello World!" with fixed-width font -->
<Glyphs 
     FontUri             = "C:\WINDOWS\Fonts\COUR.TTF"
     FontRenderingEmSize = "36"
     StyleSimulations    = "BoldSimulation"
     UnicodeString       = "Hello World!"
     Fill                = "Maroon"
     OriginX             = "50"
     OriginY             = "300"
/>

<!-- "Open file" without "fi" ligature -->
<Glyphs
   FontUri             = "C:\WINDOWS\Fonts\TIMES.TTF"
   FontRenderingEmSize = "36"
   StyleSimulations    = "BoldSimulation"
   UnicodeString       = "Open file"
   Fill                = "SlateGray"
   OriginX             = "400"
   OriginY             = "75"
/>

<!-- "Open file" with "fi" ligature -->
<Glyphs
   FontUri             = "C:\WINDOWS\Fonts\TIMES.TTF"
   FontRenderingEmSize = "36"
   StyleSimulations    = "BoldSimulation"
   UnicodeString       = "Open file"
   Indices             = ";;;;;(2:1)191"
   Fill                = "SlateGray"
   OriginX             = "400"
   OriginY             = "150"
/>

</Canvas>

関連項目