Поделиться через


Знакомство с объектом GlyphRun и элементом Glyphs

Обновлен: Ноябрь 2007

В этом разделе описывается объект GlyphRun и элемент Glyphs.

В этом разделе содержатся следующие подразделы.

  • Введение в GlyphRun
  • Объект GlyphRun
  • Элемент Glyphs
  • Метрики глифа
  • Разметка глифа
  • Связанные разделы

Введение в GlyphRun

Приложение Windows Presentation Foundation (WPF) обеспечивает дополнительную поддержку текста, включая разметку на уровне глифа с прямым доступом к объекту Glyphs для пользователей, которым нужно перехватывать и сохранять текст после форматирования. Эти возможности предоставляют важную поддержку различных требований к отрисовке текста в следующих сценариях.

  1. Отображение на экране документов фиксированного формата.

  2. Сценарии печати.

    • Язык XAML (Extensible Application Markup Language) как язык принтера.

    • Средство для записи XPS-документов (Майкрософт).

    • Предыдущие драйверы принтера, приведенные из приложений Win32 к фиксированному формату.

    • Формат очереди печати.

  3. Представление документов фиксированного формата, включая клиенты предыдущих версий Windows и другие вычислительные устройства.

ms748985.alert_note(ru-ru,VS.90).gifПримечание.

Объекты Glyphs и GlyphRun предназначены для представления документа фиксированного формата и сценариев печати. Приложение Windows Presentation Foundation (WPF) предоставляет несколько элементов для общего макета и сценариев пользовательский интерфейс, таких как Label и TextBlock. Дополнительные сведения о макете и сценариях Пользовательский интерфейс см. в разделе Типография в Windows Presentation Foundation.

Объект GlyphRun

Объект GlyphRun представляет последовательность глифов одного шрифта одного размера и с одним стилем отрисовки.

GlyphRun включает детали шрифта, такие как глиф Indices и отдельные позиции глифов. Он также включает исходные кодовые точки Юникод, из которых был сгенерирован запуск, сведения о сопоставлении смещения буфера символ-в-глиф и флаги каждого символа и глифа.

GlyphRun имеет соответствующие FrameworkElement, Glyphs высокого уровня. Glyphs могут быть использованы в дереве элементов и в разметке XAML для представления вывода GlyphRun.

Элемент Glyphs

Элемент Glyphs представляет выходные данные GlyphRun в XAML. Следующий синтаксис разметки используется для описания элемента Glyphs.

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

Следующие определения свойств соответствуют первым четырем атрибутам в примере разметки.

Свойство

Описание

FontUri

Указывает идентификатор ресурса: имя файла, URI (uniform resource identifier — универсальный код ресурса) или ссылку на ресурс в файле EXE или контейнере приложения.

FontRenderingEmSize

Указывает размер шрифта в единицах графической поверхности (по умолчанию 0,96 дюйма).

StyleSimulations

Задает флаги для полужирного стиля и курсива

BidiLevel

Задает уровень двунаправленного макета. Четные и нулевые значения подразумевают расположение слева-направо; нечетные значения подразумевают расположение справа-налево.

Свойство индексов

Свойство Indices является строкой спецификаций глифа. Где последовательность глифов формирует один кластер, спецификации первого глифа в кластере предшествует указание количества глифов и кодовых точек, формирующих кластер. Свойство Indices собирает в одной строке следующие свойства.

  • Индексы глифа

  • Дополнительная ширина глифа

  • Объединение векторов присоединения глифа

  • Сопоставление кластера из точек кода глифам

  • Флаги глифа

Каждая спецификация глифа имеет следующий вид.

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

Метрики глифа

Каждый глиф определяет метрику, задающую способ выравнивания с другими Glyphs. На следующем рисунке определяются различные условные обозначения для символов двух различных глифов.

Схема измерений глифа

Разметка глифа

В следующем примере показано, как использовать различные свойства элемента Glyphs в XAML.

<!-- The example shows how to use different property settings of Glyphs objects. -->
<Canvas
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="https://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>

См. также

Основные понятия

Типография в Windows Presentation Foundation

Документы в Windows Presentation Foundation

Оптимизация производительности: отображение текста