Работа с семействами шрифтов
Работа с семействами шрифтов
Пространство имен 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.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Изменение размера шрифтов
Изменение размера шрифтов Если у вас есть проблемы со зрением и экранные шрифты кажутся вам слишком мелкими, можете увеличить их размер. Делается это в специальном окне, которое открывается при переходе по ссылке Изменить размер шрифта в окне Персонализация.Здесь вы
Глава 15 Серверы шрифтов
Глава 15 Серверы шрифтов В цивилизованном мире не найдется человека, который никогда не видел букв. Одна и та же буква может выглядеть по-разному. Например, буква "P" в заголовке главы отличается от той же буквы в тексте абзаца. Буква "P", отображаемая курсивом, отличается от
Использование серверов шрифтов
Использование серверов шрифтов Одним из параметров, задаваемых в конфигурационном файле X Window, является шрифт, или путь к шрифту. В пакете XFree86 для этого используется запись FontPath. Она включается в файл XF86Config, который обычно хранится в каталоге /etc или /etc/X11. Данный параметр
Форматы файлов шрифтов
Форматы файлов шрифтов Существуют два типа шрифтов: растровые и контурные (контурные шрифты часто называют масштабируемыми). Эти типы шрифтов имеют разные свойства и обрабатываются различными способами. Большинство серверов шрифтов, предназначенных для выполнения в
Форматы растровых шрифтов
Форматы растровых шрифтов Область отображения большинства устройств, предназначенных для вывода шрифтов (в том числе дисплеев и принтеров), состоит из отдельных прямоугольных элементов, называемых пикселями. Каждый пиксель может быть окрашен в тот или иной цвет. На
Форматы контурных шрифтов
Форматы контурных шрифтов Одна из основных проблем, возникающих при работе с растровыми шрифтами, состоит в том, что эти шрифты плохо масштабируются. Если вам необходимо отображать на одном устройстве символы разных размеров либо выводить текст одного и того же размера
1.11. Как включить antialiasing шрифтов в XP?
1.11. Как включить antialiasing шрифтов в XP? Делается это в Display Properties, закладка Appearance, кнопка Effects... Надо поставить галочку напротив Use following metod to smooth edges if screen font. Выбрав Standard, вы включите стандартную поддержку АА, которая была в ОС от Microsoft ещё со времён W95, включается при большом
11.4.2. Форматы файлов шрифтов
11.4.2. Форматы файлов шрифтов В недавние времена буквально каждый графический редактор или издательская программа использовали свой формат файлов шрифтов и, как правило, одни программы не поддерживали форматы других. Со временем число реально используемых форматов
Изменение размера шрифтов
Изменение размера шрифтов Если вы не послушались нас и установили слишком высокое разрешение экрана, то текст на мониторе станет очень мелким. Человек со слабым зрением просто не прочитает. Человек с хорошим зрением прочитает, но через пару месяцев такого чтения
Выбор шрифтов
Выбор шрифтов Хотя текст, который вы размешаете в форме и элементах управления, используя параметры, предлагаемые VBA по умолчанию, выглядит вполне сносно, можно выбрать гарнитуры шрифтов по своему вкусу. С помощью свойства Font (Шрифт), которое есть у форм и большинства
Работа с гарнитурами и размерами шрифтов
Работа с гарнитурами и размерами шрифтов Давайте теперь построим более сложное приложение. Позволяющее пользователю манипулировать объектом Font, поддерживаемым формой. Это приложение предоставит пользователю возможность указать гарнитуру шрифта, используя встроенный
Список установленных шрифтов
Список установленных шрифтов Давайте расширим программу так, чтобы она отображала множество установленных на машине шрифтов с помощью типов из пространства имен System.Drawing.Text. Это пространство имен содержит набор типов, которые можно использовать для получения списка
17.1. Перечисление и загрузка шрифтов
17.1. Перечисление и загрузка шрифтов Постановка задачи Требуется использовать шрифты, предустановленные на устройстве с iOS, чтобы отобразить на экране какой-либо
Поддержка шрифтов во Flash
Поддержка шрифтов во Flash А теперь самое время поговорить о различных шрифтах и их поддержке во Flash.Из главы 1 мы помним, что все графические изображения можно разделить на векторные и растровые. Аналогично этому, на векторные и растровые можно разделить и все компьютерные
Использование шрифтов
Использование шрифтов О том, как изменить размер шрифта, вы уже узнали из урока 5.1, но кроме размера можно изменять и многие другие параметры шрифтов. Команды для изменения формата шрифтов находятся в группе Шрифт вкладки Главная. На рис. 5.25 приведен фрагмент документа с