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


Возможности шрифта OpenType

В этом разделе содержатся общие сведения о некоторых ключевых возможностях технологии шрифтов OpenType в Windows Presentation Foundation (WPF).

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

  • Формат шрифта OpenType
  • Варианты
  • Прописные буквы
  • Лигатуры
  • Swash глифы
  • Глифы alternate
  • Числовые стили
  • Класс Typography
  • Связанные разделы

Формат шрифта OpenType

Формат шрифта OpenType является расширением формата шрифта TrueType® с добавленной поддержкой для данных шрифтов PostScript. Формат шрифта OpenType был разработан совместно корпорацией Microsoft и Adobe. Шрифты OpenType и службы операционной системы, которые поддерживают шрифты OpenType, предоставляют пользователям простой способ для установки и использования шрифтов вне зависимости от того, что содержат шрифты: эскизы TrueType или CFF (PostScript).

Формат шрифта OpenType решает следующие задачи разработки:

  • Расширенная многоплатформенная поддержка.

  • Улучшенная поддержка международных кодировок.

  • Улучшенная защита данных шрифта.

  • Уменьшение размера файлов, что делает распространение шрифта более эффективным.

  • Расширенная поддержка дополнительного типографского контроля.

ПримечаниеПримечание

Windows SDK содержит набор шрифтов OpenType, который можно использовать с приложениями Windows Presentation Foundation (WPF).Возможности этих шрифтов продемонстрированы далее в этом разделе.Дополнительные сведения см. в разделе Образец пакета шрифтов OpenType.

Дополнительные сведения о формате шрифта OpenType см. в разделе Спецификация OpenType.

Дополнительные типографские расширения

Дополнительные типографские таблицы (таблицы OpenType Layout) расширяют функциональные возможности шрифтов с эскизами TrueType или CFF. Шрифты OpenType Layout содержат дополнительную информацию, которая расширяет возможности шрифтов для поддержки международных стандартов высококачественной типографской разметки. Большинство шрифтов OpenType предоставляют только некоторые функции, возможные в OpenType. Шрифты OpenType предоставляют следующие возможности.

  • Расширенное сопоставление между символами и глифами, которые поддерживают лигатуры, позиционные формы, замены и другие подстановки шрифтов.

  • Поддержка двумерного позиционирования и вложения глифа.

  • В шрифте содержится подробная информация о наборе символов и языке, что позволяет приложению, обрабатывающему текст, корректировать свое поведение.

Таблицы OpenType Layout более подробно описаны в разделе "Таблицы файлов шрифта" спецификации OpenType.

Далее в этом обзоре описаны различные гибко настраиваемые возможности визуального отображения OpenType, предоставляемые свойствами объекта Typography. Дополнительные сведения об этом объекте см. в разделе Классе Typography.

Варианты

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

Верхние и нижние индексы

Свойство Variants позволяет установить значения верхнего и нижнего индекса для шрифта OpenType.

Следующий текст отображается верхним индексом для шрифта Palatino Linotype.

Текст, использующий верхние индексы OpenType

Текст, использующий верхние индексы OpenType

В следующем примере разметки показано определение верхних индексов для шрифта Palatino Linotype с помощью свойств объекта Typography.

<Paragraph FontFamily="Palatino Linotype">
  2<Run Typography.Variants="Superscript">3</Run>
  14<Run Typography.Variants="Superscript">th</Run>
</Paragraph>

Следующий текст отображается нижним индексом для шрифта Palatino Linotype.

Текст, использующий нижние индексы OpenType

Текст, использующий нижние индексы OpenType

В следующем примере разметки показано определение нижних индексов для шрифта Palatino Linotype с помощью свойств объекта Typography.

<Paragraph FontFamily="Palatino Linotype">
  H<Run Typography.Variants="Subscript">2</Run>O
  Footnote<Run Typography.Variants="Subscript">4</Run>
</Paragraph>

Декоративные применения верхних и нижних индексов

Верхние и нижние индексы также можно использовать для создания декоративного эффекта текста в смешанном регистре. Следующий текст отображается в верхних и нижних индексах для шрифта Palatino Linotype. Обратите внимание, что заглавные буквы не затронуты.

Текст, использующий верхние и нижние индексы OpenType

Текст, использующий верхние и нижние индексы OpenType

В следующем примере разметки показано определение верхних и нижних индексов для шрифта с помощью свойств объекта Typography.

<Paragraph FontFamily="Palatino Linotype" Typography.Variants="Superscript">
  Chapter One
</Paragraph>
<Paragraph FontFamily="Palatino Linotype" Typography.Variants="Subscript">
  Chapter One
</Paragraph>

Прописные буквы

Прописные буквы представляют собой набор типографских форм, которые отображают текст в глифах в стиле прописных букв. Как правило, когда весь текст отображается прописными буквами, расстояние между буквами может казаться слишком маленьким, а плотность и пропорции символов слишком большими. Шрифт OpenType поддерживает множество форматов стилей для прописных букв, включая прописные буквы с высотой строчных, малые прописные буквы, титульные буквы, и прописные интервалы. Эти форматы стиля позволяют управлять внешним видом прописных букв.

Следующий текст отображается стандартными прописными буквами шрифта Pescadero, за которыми следуют символы со стилями "SmallCaps" и "AllSmallCaps". В этом случае для всех трех слов используется один и тот же размер шрифта.

Текст, использующий прописные буквы OpenType

Текст, использующий прописные буквы OpenType

В следующем примере разметки показано определение прописных букв для шрифта Pescadero с помощью свойств объекта Typography. При использовании формата "SmallCaps" игнорируются любые начальные прописные буквы.

<Paragraph FontFamily="Pescadero" FontSize="48">
  <Run>CAPITALS</Run>
  <Run Typography.Capitals="SmallCaps">Capitals</Run>
  <Run Typography.Capitals="AllSmallCaps">Capitals</Run>
</Paragraph>

Титульные прописные буквы

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

Текст, использующий титульные прописные буквы OpenType

Текст, использующий титульные прописные буквы OpenType

В следующем примере разметки показано определение титульных прописных букв для шрифта Pescadero, с помощью свойств объекта Typography.

<Paragraph FontFamily="Pescadero">
  <Run Typography.Capitals="Titling">chapter one</Run>
</Paragraph>

Прописные интервалы

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

Текст, использующий прописной интервал OpenType

Текст, использующий прописной интервал OpenType

В следующем примере разметки показано определение прописного интервала для шрифта Pescadero с помощью свойств объекта Typography.

<Paragraph FontFamily="Pescadero">
  <Run Typography.CapitalSpacing="True">CHAPTER ONE</Run>
</Paragraph>

Лигатуры

Лигатуры — это два или более глифов, формирующихся в один глиф для создания более читаемого или привлекательного текста. Шрифты OpenType поддерживают четыре типа лигатур:

  • Стандартные лигатуры. Разработаны для улучшения удобочитаемости. Стандартные лигатуры включают "fi", "fl", и "ff".

  • Контекстные лигатуры. Разработаны для улучшения удобочитаемости, что обеспечивается улучшенным соединением между символами, составляющими лигатуру.

  • Избирательные лигатуры. Используются для украшения и не применяются специально для удобочитаемости.

  • Исторические лигатуры. Созданы для исторической достоверности и не предназначены специально для удобочитаемости.

Следующий текст отображает стандартные глифы лигатуры для шрифта Pericles.

Текст, использующий стандартные лигатуры OpenType

Текст, использующий стандартные лигатуры OpenType

В следующем примере разметки показано определение стандартных глифов лигатуры для шрифта Pericles с помощью свойств объекта Typography.

<Paragraph FontFamily="Pericles" Typography.StandardLigatures="True">
  <Run Typography.StylisticAlternates="1">FI</Run>
  <Run Typography.StylisticAlternates="1">FL</Run>
  <Run Typography.StylisticAlternates="1">TH</Run>
  <Run Typography.StylisticAlternates="1">TT</Run>
  <Run Typography.StylisticAlternates="1">TV</Run>
  <Run Typography.StylisticAlternates="1">TW</Run>
  <Run Typography.StylisticAlternates="1">TY</Run>
  <Run Typography.StylisticAlternates="1">VT</Run>
  <Run Typography.StylisticAlternates="1">WT</Run>
  <Run Typography.StylisticAlternates="1">YT</Run>
</Paragraph>

Следующий текст отображает избирательные глифы лигатуры для шрифта Pericles.

Текст, использующий избирательные лигатуры OpenType

Текст, использующий избирательные лигатуры OpenType

В следующем примере разметки показано определение избирательных глифов лигатуры для шрифта Pericles с помощью свойств объекта Typography.

<Paragraph FontFamily="Pericles" Typography.DiscretionaryLigatures="True">
  <Run Typography.StylisticAlternates="1">CO</Run>
  <Run Typography.StylisticAlternates="1">LA</Run>
  <Run Typography.StylisticAlternates="1">LE</Run>
  <Run Typography.StylisticAlternates="1">LI</Run>
  <Run Typography.StylisticAlternates="1">LL</Run>
  <Run Typography.StylisticAlternates="1">LO</Run>
  <Run Typography.StylisticAlternates="1">LU</Run>
</Paragraph>

По умолчанию шрифты OpenType в Windows Presentation Foundation (WPF) используют стандартные лигатуры. Например, при использовании шрифта Palatino Linotype стандартные лигатуры "fi", "ff", и "fl" отображаются как глиф объединенных символов. Обратите внимание, что пары знаков для каждой стандартной лигатуры касаются друг друга.

Текст, использующий стандартные лигатуры OpenType

Текст, использующий стандартные лигатуры OpenType

В то же время возможности стандартных лигатур можно отключить, чтобы стандартная лигатура (например "ff") отображалась как два отдельных глифа, а не как глиф объединенных символов.

Текст, использующий неактивные стандартные лигатуры OpenType

Текст, использующий неактивные стандартные лигатуры OpenType

Следующий пример показывает, как отключить стандартные глифы лигатур для шрифта Palatino Linotype с помощью свойств объекта Typography.

<!-- Set standard ligatures to false in order to disable feature. -->
<Paragraph Typography.StandardLigatures="False" FontFamily="Palatino Linotype" FontSize="72">
  fi ff fl
</Paragraph>

Swash глифы

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

Текст, в котором используются стандартные и орнаментированные глифы OpenType

Текст, использующий стандартные и swash глифы OpenType

Swash-глифы часто используются в качестве декоративных элементов в коротких фразах, например в анонсах событий. Следующий текст использует swash глифы для выделения прописных букв названия события.

Текст, использующий swash глифы OpenType

Текст, использующий swash глифы OpenType

В следующем примере разметки показано определение swash глифов для шрифта с помощью свойств объекта Typography.

<Paragraph FontFamily="Pescadero" TextBlock.TextAlignment="Center">
  Wishing you a<LineBreak/>
  <Run Typography.StandardSwashes="1" FontSize="36">Happy New Year!</Run>
</Paragraph>

Контекстные swash-глифы

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

Текст, использующий контекстные swash-глифы OpenType

Текст, использующий контекстные swash-глифы OpenType

В следующем примере разметки показано определение контекстных swash-глифов для шрифта Pescadero с помощью свойств объекта Typography.

<Paragraph FontFamily="Pescadero" Typography.StandardSwashes="1">
  Lyon <Run Typography.ContextualSwashes="1">L</Run>yon
</Paragraph>

Глифы alternate

Альтернативы — это глифы, которые можно подставлять вместо стандартных глифов. Шрифты OpenType, такие как шрифт Pericles, используемый в следующих примерах, могут содержать альтернативные глифы, которые можно использовать для создания различного внешнего вида для текста. Следующий текст отображает стандартные глифы для шрифта Pericles.

Текст, в котором используются стандартные глифы OpenType

Текст, использующий стандартные глифы OpenType

Шрифт OpenType Pericles содержит дополнительные глифы, поддерживающие изменение стилей для стандартных наборов глифов. Следующий текст отображает глифы с изменением стиля.

Текст, в котором используются стилистически альтернативные глифы OpenType

Текст, использующий глифы с изменением стилей OpenType

В следующем примере разметки показано определение стилистических глифов alternate для шрифта Pericles с помощью свойств объекта Typography.

<Paragraph FontFamily="Pericles">
  <Run Typography.StylisticAlternates="1">A</Run>NCIENT
  GR<Run Typography.StylisticAlternates="1">EE</Run>K
  MYTH<Run Typography.StylisticAlternates="1">O</Run>LOGY
</Paragraph>

Следующий текст отображает несколько других стилистических глифов alternate для шрифта Pericles.

Текст, в котором используются стилистически альтернативные глифы OpenType

Текст, использующий глифы с изменением стилей OpenType

В следующем примере разметки показано определение приведенных выше стилистических глифов alternate.

<Paragraph FontFamily="Pericles">
  <Run Typography.StylisticAlternates="1">A</Run>
  <Run Typography.StylisticAlternates="2">A</Run>
  <Run Typography.StylisticAlternates="3">A</Run>
  <Run Typography.StylisticAlternates="1">C</Run>
  <Run Typography.StylisticAlternates="1">E</Run>
  <Run Typography.StylisticAlternates="1">G</Run>
  <Run Typography.StylisticAlternates="1">O</Run>
  <Run Typography.StylisticAlternates="1">Q</Run>
  <Run Typography.StylisticAlternates="1">R</Run>
  <Run Typography.StylisticAlternates="2">R</Run>
  <Run Typography.StylisticAlternates="1">S</Run>
  <Run Typography.StylisticAlternates="1">Y</Run>
</Paragraph>

Случайные контекстные глифы alternate

Случайные контекстные глифы alternate предоставляют несколько заменяющих глифов для одного символа. При реализации со шрифтами рукописного письма эта функция может имитировать письмо от руки с помощью набора случайно выбранных глифов с незначительными различиями во внешнем виде. Следующий текст использует случайные контекстные глифы alternate для шрифта Lindsey. Обратите внимание, что внешний вид букв "a" немного различается

Текст, использующий случайные контекстные alternate-глифы OpenType

Текст, использующий случайные контекстные alternate-глифы OpenType

В следующем примере разметки показано определение случайных контекстных глифов alternate для шрифта Lindsey с помощью свойств объекта Typography.

<TextBlock FontFamily="Lindsey">
  <Run Typography.ContextualAlternates="True">
    a banana in a cabana
  </Run>
</TextBlock>

Исторические формы

Исторические формы являются типографскими соглашениями, широко использовавшимися в прошлом. Следующий текст отображает фразу "Boston, Massachusetts" с помощью исторических форм глифов для шрифта Palatino Linotype.

Текст, использующий исторические формы OpenType

Текст, использующий исторические формы OpenType

В следующем примере разметки показано определение исторических форм для шрифта Palatino Linotype с помощью свойств объекта Typography.

<Paragraph FontFamily="Palatino Linotype">
  <Run Typography.HistoricalForms="True">Boston, Massachusetts</Run>
</Paragraph>

Числовые стили

Шрифты OpenType поддерживают большое количество функций, которые могут использоваться в тексте с числовыми значениями.

Дроби

Шрифты OpenType поддерживают стили для дробей, включая диагональные и вертикальные дроби.

Следующий текст отображает стили дробей для шрифта Palatino Linotype.

Текст, использующий диагональные и вертикальные дроби OpenType

Текст, использующий диагональные и вертикальные дроби OpenType

В следующем примере разметки показано определение стилей дробей для шрифта Palatino Linotype с помощью свойств объекта Typography.

<Paragraph FontFamily="Palatino Linotype" Typography.Fraction="Slashed">
  1/8 1/4 3/8 1/2 5/8 3/4 7/8
</Paragraph>
<Paragraph FontFamily="Palatino Linotype" Typography.Fraction="Stacked">
  1/8 1/4 3/8 1/2 5/8 3/4 7/8
</Paragraph>

Старый стиль чисел

Шрифты OpenType поддерживают формат старого стиля чисел. Этот формат полезен для отображения цифр в устаревших стилях, которые уже не являются стандартными. Следующий текст отображает дату 18-ого века в формате стандартного и старого стиля числа для шрифта Palatino Linotype.

Текст, использующий старый стиль числа OpenType

Текст, использующий старый стиль числа OpenType

Следующий текст отображает стандартные цифры для шрифта Palatino Linotype, за которыми следуют цифры старого стиля.

Текст, использующий наборы чисел старого стиля OpenType

Текст, использующий наборы чисел старого стиля OpenType

В следующем примере разметки показано определение чисел старого стиля для шрифта Palatino Linotype с помощью свойств объекта Typography.

<Paragraph FontFamily="Palatino Linotype">
  <Run Typography.NumeralStyle="Normal">1234567890</Run>
  <Run Typography.NumeralStyle="OldStyle">1234567890</Run>
</Paragraph>

Пропорциональные и табличные цифры

Шрифты OpenType поддерживают отображение пропорциональных и табличных цифр для регулирования выравнивания по ширине при использовании чисел. Пропорциональные цифры отображает каждую цифру со своей шириной — цифра "1" будет уже, чем цифра "5". Табличные цифры рассматриваются как цифры равной ширины, что выравнивает их по вертикали и повышает удобочитаемость финансовой информации.

Следующий текст отображает две пропорциональные цифры в первом столбце с использованием шрифта Miramonte. Обратите внимание на разницу в ширине между цифрами "5" и "1". Во втором столбце показаны эти же числовые значения с шириной, скорректированной с помощью функции табличных цифр.

Текст, использующий пропорциональные и табличные цифры OpenType

Текст, использующий пропорциональные и табличные цифры OpenType

В следующем примере разметки показано определение пропорциональных и табличных цифр шрифта Miramonte с помощью свойств объекта Typography.

<TextBlock FontFamily="Miramonte">
  <Run Typography.NumeralAlignment="Proportional">114,131</Run>
</TextBlock>
<TextBlock FontFamily="Miramonte">
  <Run Typography.NumeralAlignment="Tabular">114,131</Run>
</TextBlock>

Перечеркнутый ноль

Шрифты OpenType поддерживают числовой формат перечеркнутого нуля, чтобы подчеркнуть разницу между буквой "O" и цифрой "0". Перечеркнутый ноль часто используется для идентификаторов в финансовых и деловых текстах.

Следующий текст отображает пример идентификатора заказа при помощи шрифта Miramonte. В первой строке используются стандартные цифры. Во второй строке используются перечеркнутые нули, чтобы подчеркнуть различие с прописной буквой "O".

Текст, использующий перечеркнутые нули OpenType

Текст, использующий перечеркнутые нули OpenType

В следующем примере разметки показано определение перечеркнутого нуля для шрифта Miramonte с помощью свойств объекта Typography.

<Paragraph FontFamily="Miramonte">
  <Run>Order #0048-OTC-390</Run>
  <LineBreak/>
  <Run Typography.SlashedZero="True">Order #0048-OTC-390</Run>
</Paragraph>

Класс Typography

Объект Typography представляет набор функций, которые поддерживает шрифт OpenType. Задание свойств Typography в разметке позволяет легко создавать документы, использующие возможности OpenType.

Следующий текст отображается стандартными прописными буквами шрифта Pescadero, за которыми следуют символы со стилями "SmallCaps" и "AllSmallCaps". В этом случае для всех трех слов используется один и тот же размер шрифта.

Текст, использующий прописные буквы OpenType

Текст, использующий прописные буквы OpenType

В следующем примере разметки показано определение прописных букв для шрифта Pescadero с помощью свойств объекта Typography. При использовании формата "SmallCaps" игнорируются любые начальные прописные буквы.

<Paragraph FontFamily="Pescadero" FontSize="48">
  <Run>CAPITALS</Run>
  <Run Typography.Capitals="SmallCaps">Capitals</Run>
  <Run Typography.Capitals="AllSmallCaps">Capitals</Run>
</Paragraph>

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

            MyParagraph.FontFamily = New FontFamily("Pescadero")
            MyParagraph.FontSize = 48

            Dim run_1 As New Run("CAPITALS ")
            MyParagraph.Inlines.Add(run_1)

            Dim run_2 As New Run("Capitals ")
            run_2.Typography.Capitals = FontCapitals.SmallCaps
            MyParagraph.Inlines.Add(run_2)

            Dim run_3 As New Run("Capitals")
            run_3.Typography.Capitals = FontCapitals.AllSmallCaps
            MyParagraph.Inlines.Add(run_3)

            MyParagraph.Inlines.Add(New LineBreak())
MyParagraph.FontFamily = new FontFamily("Pescadero");
MyParagraph.FontSize = 48;

Run run_1 = new Run("CAPITALS ");
MyParagraph.Inlines.Add(run_1);

Run run_2 = new Run("Capitals ");
run_2.Typography.Capitals = FontCapitals.SmallCaps;
MyParagraph.Inlines.Add(run_2);

Run run_3 = new Run("Capitals");
run_3.Typography.Capitals = FontCapitals.AllSmallCaps;
MyParagraph.Inlines.Add(run_3);

MyParagraph.Inlines.Add(new LineBreak());

Свойства класса Typography

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

Свойство

Значения

Значение по умолчанию

AnnotationAlternates

Числовое значение — байт

0

Capitals

AllPetiteCaps | AllSmallCaps | Normal | PetiteCaps | SmallCaps | Titling | Unicase

FontCapitals.Normal

CapitalSpacing

Boolean

false

CaseSensitiveForms

Boolean

false

ContextualAlternates

Boolean

true

ContextualLigatures

Boolean

true

ContextualSwashes

Числовое значение — байт

0

DiscretionaryLigatures

Boolean

false

EastAsianExpertForms

Boolean

false

EastAsianLanguage

HojoKanji | Jis04 | Jis78 | Jis83 | Jis90 | NlcKanji | Normal | Simplified | Traditional | TraditionalNames

FontEastAsianLanguage.Normal

EastAsianWidths

Full | Half | Normal | Proportional | Quarter | Third

FontEastAsianWidths.Normal

Fraction

Normal | Slashed | Stacked

FontFraction.Normal

HistoricalForms

Boolean

false

HistoricalLigatures

Boolean

false

Kerning

Boolean

true

MathematicalGreek

Boolean

false

NumeralAlignment

Normal | Proportional | Tabular

FontNumeralAlignment.Normal

NumeralStyle

Boolean

FontNumeralStyle.Normal

SlashedZero

Boolean

false

StandardLigatures

Boolean

true

StandardSwashes

числовое значение — байт

0

StylisticAlternates

числовое значение — байт

0

StylisticSet1

Boolean

false

StylisticSet2

Boolean

false

StylisticSet3

Boolean

false

StylisticSet4

Boolean

false

StylisticSet5

Boolean

false

StylisticSet6

Boolean

false

StylisticSet7

Boolean

false

StylisticSet8

Boolean

false

StylisticSet9

Boolean

false

StylisticSet10

Boolean

false

StylisticSet11

Boolean

false

StylisticSet12

Boolean

false

StylisticSet13

Boolean

false

StylisticSet14

Boolean

false

StylisticSet15

Boolean

false

StylisticSet16

Boolean

false

StylisticSet17

Boolean

false

StylisticSet18

Boolean

false

StylisticSet19

Boolean

false

StylisticSet20

Boolean

false

Variants

Inferior | Normal | Ordinal | Ruby | Subscript | Superscript

FontVariants.Normal

См. также

Ссылки

Typography

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

Оформление в WPF

Образец пакета шрифтов OpenType

Упаковка шрифтов с приложениями

Другие ресурсы

OpenType Specification