Рисование стилизованных примитивов (толщина и начертание линий, текстуры)
● Для рисования жирных линий (прямых, кривых Безье, и т.д.) надо вместо закраски пикселя закрашивать его окрестность некоторым пером, форма которого задаётся. Но чтобы одни и те же пиксели не перерисовывались несколько раз, нужно учитывать угол наклона линии и корректировать форму пера.
● Для рисования пунктирных линий отводится массив битов, который задает маску для нужного типа линии (узор): 1 — пиксель надо рисовать, 0 — не надо. При рисовании линии маска последовательно накладывается, и определяется, рисовать пиксель или нет.
● При рисовании жирной линии пунктиром за счет толщины пера могут закрашиваться пропуски в пунктире ⇒ необходимо подбирать форму пера исходя из наклона и типа линии.
Шрифт— набор изображений букв и знаков, выполненных в едином стиле.
○ Моноширинные шрифты — у всех букв одинаковая ширина. Удобно для использования в псевдографике (рисование таблиц спецсимволами), в ASCII-art и в программировании.
○ Пропорциональные — у всех букв разная ширина.
● Размер — измеряется в пунктах (1/72 дюйма). Используется для устройств вывода.
● Кодировка — определяет алфавит, используемый для печати.
● Векторный / растровый
○ Растровый: изображения букв хранятся в битовых матрицах. Отрисовка таких шрифтов аналогична отрисовке текстур.
■ Достоинства:
● Простота и эффективность реализации
● Требуется мало памяти (изображения отдельных букв имеют слишком малый размер, чтобы эффективно сжиматься при векторизации; кроме того, эти изображения могут быть монохромными).
■ Недостатки:
● Проблемы интерполяции при трансформации (масштабирование, поворот и др.) Частично решает проблему наличие разных вариантов шрифта для разных размеров.
○ Векторный: буквы состоят из глифов. Глиф — это элемент символа. Глифы бывают простыми (закрашенный примитив, граница которого — кривая Безье) и составными (является комбинацией простых или составных). Векторные шрифты имеют те же преимущества и недостатки, что и векторные изображения: больше изобразительных возможностей, но сложнее отрисовка. Отрисовка сводится к рисованию кривых Безье и закрашиванию примитивов. Хинтинги — это подпрограммы, которые хранятся вместе со шрифтом и корректируют параметры глифов при значительном масштабировании. Например, при увеличении буквы Ц в 20 раз горизонтальная линия должна расти быстрее, чем вертикальные.