Share via


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

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

GlyphRun の概要

Windows Presentation Foundation (WPF) では、書式設定後のテキストをインターセプトして保存したいユーザーのために Glyphs に直接アクセスするグリフ レベルのマークアップなど、高度なテキスト サポートが提供されています。 これらの機能は、下記のようなシナリオでのさまざまなテキスト レンダリング要件をサポートする不可欠なものです。

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

  2. 印刷シナリオ。

    • デバイス プリンター言語としての Extensible Application Markup Language (XAML)。

    • Microsoft XPS Document Writer。

    • 以前のプリンター ドライバー、Win32 アプリケーションから固定形式への出力。

    • 印刷スプール形式。

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

注意

Glyphs および GlyphRun は、固定形式のドキュメント表示と印刷シナリオ向けに設計されています。 WPF には、一般的なレイアウトと、LabelTextBlock などのユーザー インターフェイス (UI) シナリオのための要素が用意されています。 レイアウトと UI シナリオの詳細については、「WPF のタイポグラフィ」を参照してください。

GlyphRun オブジェクト

GlyphRun オブジェクトでは、1 つのサイズで 1 つのフォントの 1 つの書体からグリフのシーケンスが、1 つのレンダリング スタイルで表されます。

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

GlyphRun には、対応する高度な FrameworkElement である Glyphs があります。 Glyphs は、GlyphRun の出力を表すために、要素ツリーおよび XAML マークアップで使用できます。

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 つの異なるグリフ文字のさまざまな印刷用品質を定義しています。

Diagraph of glyph measurements

グリフ マークアップ

次のコード例では、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>

関連項目