Работа с семействами шрифтов

Работа с семействами шрифтов

Пространство имен System.Drawing определяет также тип FontFamily, предлагающий абстракцию для группы гарнитур, имеющих одинаковый базовый дизайн, но с определенными вариациями стиля. Семейство шрифтов, например, такое как Verdana, может включить в себя несколько шрифтов, отличающихся по стилю и размеру. Например, Verdana Bold (полужирный) 12 пунктов и Verdana Italic (курсив) 24 пункта являются разными шрифтами в рамках одного семейства шрифтов Verdana.

Конструктор типа FontFamily получает на вход строку с именем семейства шрифтов, которое вы пытаетесь представить. После создания "общего семейства" вы можете создать более специфичный объект Font.

private void MainForm_Paint(object sender, PaintEventArgs e) {

 Graphics g = e.Graphics;

 // Создание семейства шрифтов.

 FontFamily myFamily = new FontFamilу("Verdana");

 // Передача семейства конструктору Font.

 Font myFont = new Font(myFamily, 12);

 g.Drawstring("Привет!", myFont, "Brushes.Blue, 10, 10);

}

Больший интерес представляет собой возможность сбора статистики в отношении данного семейства шрифтов. Скажем, вы создаете приложение текстового редактора и хотите определить среднюю ширину символа в конкретном объекте FontFamily. Или, например, вам нужна информация о надстрочных и подстрочных значениях для данного символа. Для получения такой информации тип FontFamily предлагает использовать специальные члены, описания которых приведены в табл. 20.5.

Таблица 20.5. Члены типа FontFamily

Член Описание
GetCellAscent() Возвращает метрику надстрочного элемента для членов данного семейства
SetCellDescent() Возвращает метрику подстрочного элемента для членов данного семейства
GetLineSpacing() Возвращает расстояние между двумя последовательными строками текста для данного FontFamily с указанным FontStyle
GetName() Возвращает имя данного FontFamily на указанном языке
IsStyleAvailable() Индикатор доступности указанного FontStyle

Для примера рассмотрите следующий обработчик события Paint, выводящий на печать ряд характеристик семейства шрифтов Verdana.

private void MainForm_Paint(object sender, PaintEventArgs e) {

 Graphics g = e.Graphics;

 FontFamily myFamily = new FontFamily("Verdana");

 Font myFont = new Font(myFamily, 12);

 int у = 0;

 int fontHeight = myFont.Height;

 // Отображение единицы измерения для членов FontFamily.

 this.Text = "Единица измерения: GraphicsUnit." + myFont.Unit;

 g.DrawString("Семейство Verdana.", myFont, Brushes.Blue, 10, y);

 у += 20;

 // Характеристики связей нашего семейства.

 g.DrawString("Надстрочные для Verdana Bold: " + myFamily.GetCellAscent(FontStyle.Bold), myFont, Brushes.Black, 10, у + fontHeight);

 у += 20;

 g.DrawString("Подстрочные для Verdana Bold: " + myFamily.GetCellDescent(FontStyle.Bold), myFont, Brushes.Black, 10, у + fontHeight);

 у += 20;

 g.DrawString("Интерлиньяж для Verdana Bold: " + myFamily.GetLineSpacing(FontStyle.Bold), myFont, Brushes.Black, 10, у + fontHeight);

 у += 20;

 g.DrawString("Высота для Verdana Bold: " + myFamily.GetEmHeight(FontStyle.Bold), myFont, Brushes.Black, 10, у + fontHeight);

 у += 20;

}

На рис. 20.8 показан результат.

Рис. 20.8. Сбор статистики для семейства шрифтов Verdana

Заметьте, что указанные члены типа Font Family возвращают значения с использованием в качестве единицы измерения GraphicsUnit.Point (а не Pixel), что соответствует 1/72 дюйма. Вы можете преобразовать эти значения в те единицы, которые вам подходят лучше всего.

Исходный код. Проект FontFamilyApp размещен в подкаталоге, соответствующем главе 20.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

11.4.2. Форматы файлов шрифтов

Из книги Linux для пользователя автора Костромин Виктор Алексеевич

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


Использование шрифтов

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

Использование шрифтов О том, как изменить размер шрифта, вы уже узнали из урока 5.1, но кроме размера можно изменять и многие другие параметры шрифтов. Команды для изменения формата шрифтов находятся в группе Шрифт вкладки Главная. На рис. 5.25 приведен фрагмент документа с


Работа с гарнитурами и размерами шрифтов

Из книги Windows Vista без напряга автора Жвалевский Андрей Валентинович

Работа с гарнитурами и размерами шрифтов Давайте теперь построим более сложное приложение. Позволяющее пользователю манипулировать объектом Font, поддерживаемым формой. Это приложение предоставит пользователю возможность указать гарнитуру шрифта, используя встроенный


Список установленных шрифтов

Из книги Windows Vista автора Вавилов Сергей

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


Изменение размера шрифтов

Из книги WinXP FAQ (Часто задаваемые вопросы по ОС Windows XP) автора Шашков Алексей

Изменение размера шрифтов Если вы не послушались нас и установили слишком высокое разрешение экрана, то текст на мониторе станет очень мелким. Человек со слабым зрением просто не прочитает. Человек с хорошим зрением прочитает, но через пару месяцев такого чтения


Изменение размера шрифтов

Из книги Сетевые средства Linux автора Смит Родерик В.

Изменение размера шрифтов Если у вас есть проблемы со зрением и экранные шрифты кажутся вам слишком мелкими, можете увеличить их размер. Делается это в специальном окне, которое открывается при переходе по ссылке Изменить размер шрифта в окне Персонализация.Здесь вы


1.11. Как включить antialiasing шрифтов в XP?

Из книги VBA для чайников автора Каммингс Стив

1.11. Как включить antialiasing шрифтов в XP? Делается это в Display Properties, закладка Appearance, кнопка Effects... Надо поставить галочку напротив Use following metod to smooth edges if screen font. Выбрав Standard, вы включите стандартную поддержку АА, которая была в ОС от Microsoft ещё со времён W95, включается при большом


Глава 15 Серверы шрифтов

Из книги Macromedia Flash Professional 8. Графика и анимация автора Дронов В. А.

Глава 15 Серверы шрифтов В цивилизованном мире не найдется человека, который никогда не видел букв. Одна и та же буква может выглядеть по-разному. Например, буква "P" в заголовке главы отличается от той же буквы в тексте абзаца. Буква "P", отображаемая курсивом, отличается от


Использование серверов шрифтов

Из книги iOS. Приемы программирования автора Нахавандипур Вандад

Использование серверов шрифтов Одним из параметров, задаваемых в конфигурационном файле X Window, является шрифт, или путь к шрифту. В пакете XFree86 для этого используется запись FontPath. Она включается в файл XF86Config, который обычно хранится в каталоге /etc или /etc/X11. Данный параметр


Форматы файлов шрифтов

Из книги автора

Форматы файлов шрифтов Существуют два типа шрифтов: растровые и контурные (контурные шрифты часто называют масштабируемыми). Эти типы шрифтов имеют разные свойства и обрабатываются различными способами. Большинство серверов шрифтов, предназначенных для выполнения в


Форматы растровых шрифтов

Из книги автора

Форматы растровых шрифтов Область отображения большинства устройств, предназначенных для вывода шрифтов (в том числе дисплеев и принтеров), состоит из отдельных прямоугольных элементов, называемых пикселями. Каждый пиксель может быть окрашен в тот или иной цвет. На


Форматы контурных шрифтов

Из книги автора

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


Выбор шрифтов

Из книги автора

Выбор шрифтов Хотя текст, который вы размешаете в форме и элементах управления, используя параметры, предлагаемые VBA по умолчанию, выглядит вполне сносно, можно выбрать гарнитуры шрифтов по своему вкусу. С помощью свойства Font (Шрифт), которое есть у форм и большинства


Поддержка шрифтов во Flash

Из книги автора

Поддержка шрифтов во Flash А теперь самое время поговорить о различных шрифтах и их поддержке во Flash.Из главы 1 мы помним, что все графические изображения можно разделить на векторные и растровые. Аналогично этому, на векторные и растровые можно разделить и все компьютерные


17.1. Перечисление и загрузка шрифтов

Из книги автора

17.1. Перечисление и загрузка шрифтов Постановка задачи Требуется использовать шрифты, предустановленные на устройстве с iOS, чтобы отобразить на экране какой-либо