Разделы презентаций


Вывод текста и шрифты

Содержание

08/13/2019СодержаниеПонятие шрифта, характеристики шрифтаВиды шрифтовВывод текста в графическом интерфейсе

Слайды и текст этой презентации

Слайд 1Вывод текста и шрифты
Отвагин Алексей Владимирович, доцент каф. ЭВМ, к.т.н.,

а. 505-5

Вывод текста и шрифтыОтвагин Алексей Владимирович, доцент каф. ЭВМ, к.т.н., а. 505-5

Слайд 208/13/2019
Содержание
Понятие шрифта, характеристики шрифта
Виды шрифтов
Вывод текста в графическом интерфейсе

08/13/2019СодержаниеПонятие шрифта, характеристики шрифтаВиды шрифтовВывод текста в графическом интерфейсе

Слайд 308/13/2019
Основные понятия
Шрифт представляет собой набор шаблонов для представления символов некоторого

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

символов (charset)
Кодировка – представление заданного набора символов одним или несколькими байтами информации
08/13/2019Основные понятияШрифт представляет собой набор шаблонов для представления символов некоторого языка или алфавитаВ компьютерной терминологии совокупность символов

Слайд 408/13/2019
Кодировки
Содержат 256 символов (первые 128 стандартные)
Вторая половина содержит символы

национальных алфавитов, денежных знаков, дополнительные символы и т.д.
Идентификатор кодировки от

0 до 255
08/13/2019Кодировки Содержат 256 символов (первые 128 стандартные)Вторая половина содержит символы национальных алфавитов, денежных знаков, дополнительные символы и

Слайд 508/13/2019
Unicode
Новый стандарт кодировок (16 разрядное представление)
Позволяет представить большинство символов различных

языков мира
Группируется на логические зоны для представления отдельных классов символов

08/13/2019UnicodeНовый стандарт кодировок (16 разрядное представление)Позволяет представить большинство символов различных языков мираГруппируется на логические зоны для представления

Слайд 608/13/2019
Глиф
Кодировка определяет лишь логическую группировку и представление символов
Графическая форма символа

называется глифом

08/13/2019ГлифКодировка определяет лишь логическую группировку и представление символовГрафическая форма символа называется глифом

Слайд 708/13/2019
Свойства глифов
Обычно существует однозначное соответствие между кодом символа и глифом
Глифы

могут определяться контекстом использования символа
Глиф может быть составным
Глиф может являться

комбинацией символов - лигатурой
08/13/2019Свойства глифовОбычно существует однозначное соответствие между кодом символа и глифомГлифы могут определяться контекстом использования символаГлиф может быть

Слайд 808/13/2019
Примеры сложных глифов

08/13/2019Примеры сложных глифов

Слайд 908/13/2019
Элементы глифов
Базовая линия
Ножка
Засечка
Внутрибуквенный просвет
Надстрочный элемент
Полуовал
Ушко
Х-высота
Подстрочный элемент
Петля
Связь
Каплевидный элемент

08/13/2019Элементы глифовБазовая линияНожкаЗасечкаВнутрибуквенный просветНадстрочный элементПолуовалУшкоХ-высотаПодстрочный элементПетляСвязьКаплевидный элемент

Слайд 1008/13/2019
Определение шрифта
Шрифт – совокупность глифов, обладающих сходным графическим стилем, для

которой определено отображение кодировки в глифы
Шрифт может поддерживать несколько кодировок
Глифы

являются базовым компонентом шрифта
08/13/2019Определение шрифтаШрифт – совокупность глифов, обладающих сходным графическим стилем, для которой определено отображение кодировки в глифыШрифт может

Слайд 1108/13/2019
Имя шрифта
Имя шрифта – символьная строка, определяющая его семейство и

начертание
Семейство – группа шрифтов, обладающая сходным начертанием и одним названием
Начертание

– видоизменение шрифта в семействе (нормальное, полужирное, наклонное, подчеркнутое и т.д.)
08/13/2019Имя шрифтаИмя шрифта – символьная строка, определяющая его семейство и начертаниеСемейство – группа шрифтов, обладающая сходным начертанием

Слайд 1208/13/2019
Разновидности шрифтов
Моноширинный – все символы имеют одинаковую ширину (консольные шрифты)
Пропорциональный

– глифы имеют разную ширину
Roman – переменная толщина линий и

засечки
Swiss – переменная толщина без засечек
Modern – постоянная толщина линий без засечек
Script – имитация рукописного текста
Decorative – без ограничений

08/13/2019Разновидности шрифтовМоноширинный – все символы имеют одинаковую ширину (консольные шрифты)Пропорциональный – глифы имеют разную ширинуRoman – переменная

Слайд 1308/13/2019
Примеры семейств шрифтов

08/13/2019Примеры семейств шрифтов

Слайд 1408/13/2019
Методы представления шрифта
Растровые шрифты
Векторные шрифты
Шрифты TrueType

08/13/2019Методы представления шрифтаРастровые шрифтыВекторные шрифтыШрифты TrueType

Слайд 1508/13/2019
Растровые шрифты
Пикселы, образующие глиф, являются растровым изображением
Для разных разрешений экрана

требуются разные наборы шрифтов
Шрифты плохо масштабируются к произвольному размеру

08/13/2019Растровые шрифтыПикселы, образующие глиф, являются растровым изображениемДля разных разрешений экрана требуются разные наборы шрифтовШрифты плохо масштабируются к

Слайд 1608/13/2019
Заголовок шрифта
typedef struct { WORD Version; // 0x200 для 2.0,

0x300 для 3.00
DWORD Size; // Размер файла шрифта
CHAR Copyright[60];
WORD Type;

// Растровый, если Type & 1 == 0
WORD Points; // Номинальный размер в пойнтах (1/72 дюйма)
WORD VertRes; // Вертикальное разрешение
WORD HorizRes; // Горизонтальное разрешение
WORD Ascent;
WORD Descent;
WORD IntLeading;
WORD ExtLeading;
BYTE Italic;
BYTE Underline;
BYTE StrikeOut;
WORD Weight;
BYTE CharSet;
WORD PixWidth; // 0 для пропорционального
WORD PixHeight;
BYTE Family; // Семейство
WORD AvgWidth; // Ширина символа 'x‘
WORD MaxWidth; // Максимальная ширина
BYTE FirstChar; // Первый символ
BYTE LastChar; // Последний символ
BYTE DefaultChar; // Заполнитель
BYTE BreakChar; // Пробел } FontHeader20;
08/13/2019Заголовок шрифтаtypedef struct { WORD Version; // 0x200 для 2.0, 0x300 для 3.00	DWORD Size; // Размер файла

Слайд 1708/13/2019
Параметры шрифта

08/13/2019Параметры шрифта

Слайд 1808/13/2019
Векторные шрифты
Глиф описывается последовательностью линейных отрезков
Различие шрифтов в представлении данных

глифа
Для представления используется специальная грамматика
Шрифты неплохо масштабируются

08/13/2019Векторные шрифтыГлиф описывается последовательностью линейных отрезковРазличие шрифтов в представлении данных глифаДля представления используется специальная грамматикаШрифты неплохо масштабируются

Слайд 1908/13/2019
Грамматика векторных шрифтов
::= { }
::=

{ }
::= 0x80
::=

08/13/2019Грамматика векторных шрифтов ::= { } ::= {  } ::= 0x80 ::=

Слайд 2008/13/2019
Шрифты TrueType
Разработаны компанией Apple
Контуры глифа представляются прямыми линиями и кривыми
При

масштабировании кривые остаются плавными
Векторные шрифты определяют линии, а TrueType –

контуры глифа
08/13/2019Шрифты TrueTypeРазработаны компанией AppleКонтуры глифа представляются прямыми линиями и кривымиПри масштабировании кривые остаются плавнымиВекторные шрифты определяют линии,

Слайд 2108/13/2019
Отображение шрифта
Загружается контур шрифта и подается в растеризатор
Контур масштабируется до

нужного размера в точках для нужной разрешающей способности устройства
Подсказки применяются

к контуру, искажая его, чтобы сформировать контур, приспособленный к сетке
Преобразованный контур заполняется пикселами, создавая растровый точечный рисунок
Растровый точечный рисунок кэшируется и используется далее при выводе шрифта
08/13/2019Отображение шрифтаЗагружается контур шрифта и подается в растеризаторКонтур масштабируется до нужного размера в точках для нужной разрешающей

Слайд 2208/13/2019
Представление символов шрифта
Контур глифа состоит из ряда связанных контуров

и линий, которые определены рядом точек, описывающих квадратичные B-сплайны
Используются два

типа точек, чтобы определить кривые: те, которые находятся на кривой и те, которые не находятся
Прямые линии определяются их оконечными точками
08/13/2019Представление символов шрифта Контур глифа состоит из ряда связанных контуров и линий, которые определены рядом точек, описывающих

Слайд 2308/13/2019
Растеризатор
Представляет собой стековую машину, управляемую простым языком
Реализует сложные алгоритмы на

основе информации, хранящейся в глифах шрифта

08/13/2019РастеризаторПредставляет собой стековую машину, управляемую простым языкомРеализует сложные алгоритмы на основе информации, хранящейся в глифах шрифта

Слайд 2408/13/2019
Растеризация шрифта TrueType
Выполняется подгонкой глифа с помощью специальных команд
Обеспечивает:
Одинаковую толщину

линий
Сохранение размеров внутри одного глифа и между глифами
Сохранение симметрии и

других элементов глифа (например, засечек)
08/13/2019Растеризация шрифта TrueTypeВыполняется подгонкой глифа с помощью специальных командОбеспечивает:Одинаковую толщину линийСохранение размеров внутри одного глифа и между

Слайд 2508/13/2019
Подгонка при растеризации


08/13/2019Подгонка при растеризации

Слайд 2608/13/2019
Логические шрифты
Используются для вывода в графическом интерфейсе
Обеспечивают независимость от устройства
Поддерживают

использование кодировок
Позволяют создавать шрифты заданного размера
Реализуют некоторые начертания (подчеркивание и

перечеркивание)
08/13/2019Логические шрифтыИспользуются для вывода в графическом интерфейсеОбеспечивают независимость от устройстваПоддерживают использование кодировокПозволяют создавать шрифты заданного размераРеализуют некоторые

Слайд 2708/13/2019
Структура описания шрифта
sealed class Font : MarshalByRefObject, ICloneable, ISerializable, IDisposable

{
public Font(...);
// Свойства
public bool Bold { get; }
public FontFamily FontFamily

{ get; }
public byte GdiCharSet { get; }
public bool GdiVerticalFont { get; }
public int Height { get; }
public bool Italic { get; }
public string Name { get; }
public float Size { get; }
public float SizeInPoints { get; }
public bool Strikeout { get; }
public FontStyle Style { get; }
public bool Underline { get; }
public GraphicsUnit Unit { get; }
}
08/13/2019Структура описания шрифтаsealed class Font : MarshalByRefObject, ICloneable, ISerializable, IDisposable {	public Font(...);	// Свойства	public bool Bold { get;

Слайд 2808/13/2019
Структура описания семейства шрифтов
sealed class FontFamily : MarshalByRefObject, IDisposable {
public

FontFamily(string name);
// Свойства
public static FontFamily[] Families { get; }
public

static FontFamily GenericMonospace { get; }
public static FontFamily GenericSansSerif { get; }
public static FontFamily GenericSerif { get; }
public string Name { get; }
// Методы
public int GetCellAscent(FontStyle style);
public int GetCellDescent(FontStyle style);
public int GetEmHeight(FontStyle style);
public static FontFamily[] GetFamilies(Graphics graphics);
public int GetLineSpacing(FontStyle style);
public string GetName(int language);
public bool IsStyleAvailable(FontStyle style);
}
08/13/2019Структура описания семейства шрифтовsealed class FontFamily : MarshalByRefObject, IDisposable {	public FontFamily(string name); 	// Свойства	public static FontFamily[] Families

Слайд 2908/13/2019
Создание шрифта
FontFamily family =
new FontFamily("Arial");
Font font =
new Font(family, 12,

FontStyle.Bold | FontStyle.Italic);
После создания шрифта GDI подбирает соответствующий ему

физический шрифт
08/13/2019Создание шрифтаFontFamily family = 	new FontFamily(

Слайд 3008/13/2019
Функция вывода текста
Выводит строку
using( Font font = new Font("Arial",

12) ) {
// Обрезает строку по символу
// перевода

строки
g.DrawString("line 1\nline 2", font, Brushes.Black, 10, 10);
}
Выводит строку, обрезая ее в границах прямоугольника
g.DrawString("a long string...", font, Brushes.Black, this.ClientRectangle);
08/13/2019Функция вывода текстаВыводит строку using( Font font = new Font(

Слайд 3108/13/2019
Форматирование текста
enum StringFormatFlags {
0, // По умолчанию
DirectionRightToLeft, // Вывод справа

налево
DirectionVertical, // Вывод сверху вниз
DisplayFormatControl, // Вывод управляющих символов
FitBlackBox, //

Помещать глифы внутрь границ
LineLimit, // Вывод только полных строк
MeasureTrailingSpaces, // Учитывать пробелы
NoClip, // Не обрезать текст
NoWrap, // Не воспринимать \n или \t
}
08/13/2019Форматирование текстаenum StringFormatFlags {	0, // По умолчанию	DirectionRightToLeft, // Вывод справа налево	DirectionVertical, // Вывод сверху вниз	DisplayFormatControl, // Вывод

Слайд 3208/13/2019
Вывод с форматированием
StringFormat format = new StringFormat();
format.FormatFlags = StringFormatFlags.DirectionVertical |

StringFormatFlags.NoWrap;
g.DrawString("...", font, brush, rect, format);

08/13/2019Вывод с форматированиемStringFormat format = new StringFormat();format.FormatFlags = StringFormatFlags.DirectionVertical | StringFormatFlags.NoWrap;g.DrawString(

Слайд 3308/13/2019
Отсечение строк
enum StringTrimming {
None, // без отсечения
Character, // Отсечение по

ближайшему символу
EllipsisCharacter, // По ближайшему символу + …
Word, // По

ближайшему слову
EllipsisWord, // По ближайшему слову + …
EllipsisPath, // Отсечение с … в середине
}

08/13/2019Отсечение строкenum StringTrimming {	None, // без отсечения	Character, // Отсечение по ближайшему символу	EllipsisCharacter, // По ближайшему символу +

Слайд 3408/13/2019
Функции выравнивания
enum StringAlignment {
Center,
Near, // В зависимости от

направления вывода
Far, // В зависимости от направления вывода


}

format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;
08/13/2019Функции выравниванияenum StringAlignment { Center, Near, // В зависимости от направления вывода  Far, // В зависимости

Слайд 3508/13/2019
Сглаживание шрифтов
SingleBitPerPixelGridFit – Символ выводится согласно глифу, сглаживаются кривые.
SingleBitPerPixel -

Символ выводится согласно глифу.
AntiAliasGridFit- Символ выводится согласно сглаженному глифу с

учетом подсказок.
AntiAlias - Символ выводится согласно сглаженному глифу без учета подсказок сглаживания.
ClearTypeGridFit - Символ выводится согласно глифу ClearType с учетом подсказок сглаживания.
08/13/2019Сглаживание шрифтовSingleBitPerPixelGridFit – Символ выводится согласно глифу, сглаживаются кривые.SingleBitPerPixel - Символ выводится согласно глифу.AntiAliasGridFit- Символ выводится согласно

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика