Einführung in das "GlyphRun"-Objekt und das "Glyphs"-Element

Dieses Thema beschreibt das GlyphRun-Objekt und das Glyphs-Element.

Einführung in GlyphRun

Windows Presentation Foundation (WPF) bietet erweiterte Unterstützung für Text, einschließlich Markup auf Symbolebene mit direktem Zugriff auf Glyphs für Kunden, die Text nach der Formatierung abfangen und beibehalten möchten. Diese Funktionen stellen wichtige Unterstützung für verschiedene Text-Rendering-Voraussetzungen in jedem der folgenden Szenarios bereit.

  1. Bildschirmanzeige von Dokumenten mit festem Format

  2. Druckszenarios

    • XAML (Extensible Application Markup Language) als Gerätedruckersprache.

    • Microsoft XPS-Dokument-Generator.

    • Ältere Druckertreiber geben Win32-Anwendungen in einem festen Format aus.

    • Druckerspooler-Format

  3. Darstellung von Dokumenten mit festem Format, einschließlich Clients für vorherige Versionen von Windows und anderen Computergeräten.

Hinweis

Glyphs und GlyphRun sind für die Darstellung von Dokumenten mit festem Format sowie für Druckszenarien konzipiert. WPF bietet mehrere Elemente für allgemeine Layout- und Benutzeroberflächenszenarien wie z. B. Label und TextBlock. Weitere Informationen zu Layout- und Benutzeroberflächenszenarien finden Sie unter Typografie in WPF.

Das GlyphRun-Objekt

Das GlyphRun-Objekt stellt eine Folge von Symbolen aus einem einzigen Schrifttyp einer einzigen Schriftart in einer einzigen Größe und mit einem einzigen Renderingstil dar.

GlyphRun umfasst sowohl Schriftdetails wie Symbol-Indices als auch einzelne Symbolpositionen. Das Element enthält auch die ursprünglichen Codepunkte, aus denen der Ausführungslauf generiert wurde, Informationen zur Pufferoffset-Zuordnung für Zeichen-zu-Symbol sowie pro-Zeichen- und pro-Symbol-Flags.

GlyphRun hat ein entsprechendes FrameworkElement auf hoher Ebene, Glyphs. Glyphs kann in der Elementstruktur und im XAML-Markup verwendet werden, um die Ausgabe von GlyphRun darzustellen.

Das Glyphs-Element

Das Glyphs-Element stellt die Ausgabe eines GlyphRun in XAML dar. Die folgende Markupsyntax wird verwendet, um das Glyphs-Element zu beschreiben.

<!-- 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>

Die folgenden Eigenschaftendefinitionen entsprechen den ersten vier Attributen im Beispielmarkup.

Eigenschaft Beschreibung
FontUri Gibt einen Ressourcenbezeichner an: Dateiname, Web-URI oder Ressourcenverweis in der ausführbaren Anwendungsdatei (-Datei) oder im Anwendungscontainer.
FontRenderingEmSize Gibt den Schriftgrad in Zeichenoberflächeneinheiten an (Der Standardwert ist .96 Zoll)
StyleSimulations Gibt Flags für Fett-und Kursivdruck an
BidiLevel Gibt die bidirektionale Layoutebene an. Gerade Werte und Nullwerte implizieren Layout von links nach rechts; ungerade Werte implizieren Layout von rechts nach links.

Indices-Eigenschaft

Die Indices-Eigenschaft ist eine Zeichenfolge mit Symbolangaben. Wenn ein Symbol ein einzelnes Cluster bildet, wird der Spezifikation auf des ersten Symbols im Cluster die Spezifikation vorangestellt, wie viele Symbole und wie viele Codepunkte sich kombinieren, um das Cluster zu bilden. Die Eigenschaft Indices erfasst in einer Zeichenfolge die folgenden Eigenschaften.

  • Symbolindizes

  • Symboldikten

  • Kombinieren von Glyphen-Anlagevektors

  • Clusterzuordnung zwischen Codepunkten und Glyphen

  • Symbolflags

Jede Symbolspezifikation hat folgendes Format:

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

Symbolmetriken

Jedes Symbol definiert Metriken, die angeben, wie es anderen Glyphs entspricht. Die folgende Abbildung definiert die verschiedenen typografischen Eigenschaften von zwei unterschiedlichen Symbolen.

Diagraph of glyph measurements

Symbol-Markup

Im folgenden Codebeispiel wird veranschaulicht, wie Sie verschiedene Eigenschaften des Glyphs-Elements in XAML verwenden.

<!-- 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>

Siehe auch