Для чего используют растровые шрифты
Растровые, векторные, шрифты TrueType и OpenType
Для отображения и печати текста приложения могут использовать четыре различных типа технологий шрифтов:
Различия между этими шрифтами отражены в том, как глиф для каждого символа или символа хранится в соответствующем файле ресурсов Font:
Система использует команды line и кривых для определения контура точечного рисунка для символа или символа в шрифте TrueType или Microsoft OpenType. Система использует указания для корректировки длины линий и фигур кривых, используемых для рисования символа или символа. Эти указания и соответствующие корректировки основываются на объеме масштабирования, используемом для уменьшения или увеличения размера точечного рисунка. шрифт opentype эквивалентен шрифту TrueType, за исключением того, что шрифт opentype позволяет PostScript определения глифов в дополнение к определениям глифов TrueType.
Поскольку точечные рисунки для каждого глифа в растровом шрифте предназначены для определенного разрешения устройства, точечные шрифты обычно считаются зависящими от устройства. Векторные шрифты, с другой стороны, не зависят от устройства, так как каждый глиф хранится в виде коллекции масштабируемых линий. Однако векторные шрифты обычно рисуются медленнее, чем растровые, шрифты TrueType и OpenType. Шрифты TrueType и OpenType обеспечивают как относительно быструю скорость рисования, так и независимость от устройства. С помощью указаний, связанных с глифом, разработчик может масштабировать символы шрифта TrueType или OpenType вверх или вниз, сохраняя их исходную форму.
Как упоминалось ранее, глифы для шрифта хранятся в файле шрифта-ресурса. Файл ресурсов шрифтов фактически является библиотекой DLL, содержащей только данные, но код отсутствует. Для растровых и векторных шрифтов эти данные делятся на две части: заголовок, описывающий метрики шрифта и данные глифов. Файл ресурсов шрифта для растрового или векторного шрифта определяется расширением имени файла FON. Для шрифтов TrueType и OpenType существует два файла для каждого шрифта: первый файл содержит сравнительно короткий заголовок, а второй содержит фактические данные шрифта. Первый файл идентифицируется расширением. учетной, а второй — расширением TTF.
Существует три основных типа форматов данных файлов компьютерных шрифтов:
Растровые шрифты быстрее и проще создавать в компьютерном коде, чем другие типы шрифтов, но они не масштабируемы: растровый шрифт требует отдельного шрифта для каждого размера. Контурные и штриховые шрифты можно изменить в одном шрифте, заменив компоненты каждого глифа разными размерами, но их сложнее отобразить на экране или в печати, чем растровые шрифты, поскольку они требуют дополнительного компьютерного кода для визуализации растровых изображений для отображения на экране. и в печати. Хотя все типы шрифтов все еще используются, большинство шрифтов, используемых сегодня на компьютерах, являются контурными.
СОДЕРЖАНИЕ
Типы шрифтов
Растровые шрифты
К преимуществам растровых шрифтов относятся:
Основным недостатком растровых шрифтов является то, что визуальное качество имеет тенденцию к снижению при масштабировании или ином преобразовании по сравнению с контурными и штриховыми шрифтами, а предоставление множества оптимизированных и специально разработанных размеров одного и того же шрифта значительно увеличивает использование памяти. Самые ранние растровые шрифты были доступны только в определенных оптимизированных размерах, таких как 8, 9, 10, 12, 14, 18, 24, 36, 48, 72 и 96 точек (при разрешении 96 точек на дюйм ), с часто доступными пользовательскими шрифтами. только одного определенного размера, например, шрифт заголовка всего 72 пункта.
Ограниченная вычислительная мощность и ограниченная память ранних компьютерных систем вынуждали использовать только растровые шрифты. Усовершенствования в аппаратном обеспечении позволили заменить их контурными или штриховыми шрифтами в тех случаях, когда желательно произвольное масштабирование, но растровые шрифты по-прежнему широко используются во встроенных системах и других местах, где скорость и простота считаются важными.
Рисование строки с использованием растрового шрифта означает последовательный вывод растровых изображений каждого символа, который содержит строка, с посимвольным отступом.
Монохромные шрифты против шрифтов с оттенками серого
Масштабирование
Форматы растровых шрифтов
Контурные шрифты
Форматы шрифтов контура
Шрифты Type 1 и Type 3
Шрифты TrueType
Шрифты OpenType
Шрифты на основе штрихов
Среди коммерческих разработчиков были Agfa Monotype (iType), Type Solutions, Inc. (принадлежит Bitstream Inc. ) (Font Fusion (FFS), btX2), Fontworks (Gaiji Master), которые независимо друг от друга разработали типы шрифтов на основе штрихов и механизмы шрифтов.
Хотя Monotype и Bitstream заявили об огромной экономии места с использованием штриховых шрифтов в наборах символов Восточной Азии, большая часть экономии пространства достигается за счет создания составных глифов, которые являются частью спецификации TrueType и не требуют подхода на основе штрихов.
Форматы шрифтов на основе штрихов
Metafont использует другое описание глифов. Как и TrueType, это система описания векторных шрифтов. Он рисует глифы, используя штрихи, полученные путем перемещения многоугольного или эллиптического пера, аппроксимированного многоугольником, вдоль пути, составленного из кубических составных кривых Безье и сегментов прямых линий, или путем заполнения таких путей. Хотя при обводке контура огибающая обводки на самом деле никогда не создается, этот метод не вызывает потери точности или разрешения. Метод, который использует Metafont, более сложен с математической точки зрения, поскольку параллельные кривые Безье могут быть алгебраическими кривыми 10-го порядка.
В 2004 году DynaComware разработала DigiType, штриховой формат шрифта. В 2006 году создатели Saffron Type System объявили о представлении штриховых шрифтов под названием Stylized Stroke Fonts (SSF) с целью обеспечения выразительности традиционных контурных шрифтов и небольшого объема памяти при использовании штриховых шрифтов одинаковой ширины. шрифты (USF).
Подмножество
Шрифты для графического дисплея? Это же очень просто
Скажете, это же все электрические приборы? Бесспорно. Но еще у них есть дисплей. Да, холодильники чаще могут обходиться без дисплея, чем смартфоны, но это неточно. В этом вопросе время на стороне холодильников.
В огромном числе современных электронных устройств, как в узкоспециализированных приборах, так и в массовых гаджетах, применяются средства отображения информации, среди которых растровые графические дисплеи занимают доминирующее место. Дисплеи повышают на порядок (часто на несколько) информативность и способствуют созданию более лаконичного, не перегруженного механическими органами управления, корпуса устройства. Также графические дисплеи дают разработчику свободу в создании пользовательского интерфейса: от простого с несколькими строками текста до навороченного с таким количеством текстовой и графической информации, на какое только способна фантазия разработчика.
монохромная анимация
Однако, графический интерфейс пользователя практически никогда не может быть реализован только графическими примитивами — точками, линиями, геометрическими фигурами — без использования текста. Текст точно и однозначно «рассказывает» человеку о параметрах системы, ее настройках, прошлом и текущем состояниях.
Сегодня широкое распространение получила пользовательская и специальная электронная техника, значительная часть которой построена на базе микроконтроллеров. Микроконтроллер представляет собой вычислительную платформу, которая может быть запрограммирована почти неограниченным количеством алгоритмов, реализованных на разных языках программирования. Правда, на реализацию накладывают свои ограничения небольшой размер памяти программ (в среднем от единиц килобайт до единиц мегабайт) и ещё меньший размер оперативной памяти, обычно на порядок. А вот драйверы дисплеев, графические библиотеки и сам пользовательский графический интерфейс — отнюдь не компактные алгоритмы. Именно поэтому Вы вряд ли отыщете графические библиотеки для систем на микроконтроллерах, которые бы использовали «взрослые» векторные шрифты для вывода текста. Конечно, есть и такие микроконтроллеры, которые могут дать жару многим серьезным микропроцессорам прошлых лет, но это уже отдельная «весовая категория».
Embedded-шрифт изнутри
Обычно для решения задачи вывода текста в памяти программ создаётся специальный массив данных, так называемая таблица знакогенератора. Не пугайтесь, что он специальный, — все очень просто. В массиве-таблице по сути хранятся растровые изображения всех необходимых приложению символов. Функция графической библиотеки, выводящая текстовые строки, по очереди считывает из таблицы изображение каждого символа и «рисует» его в нужной позиции на дисплее. Все! Идея проста, как столб.
Рассмотрим пример такой таблицы. Предположим, что нам требуется изображение символа шириной 6 и высотой 8 пикселей. Причем, вертикальный ряд пикселей — столбец высотой 8 пикселей — будем кодировать ровно одним байтом. Самый первый байт будет кодировать самый левый столбец. Самый младший бит будет кодировать самый верхний пиксель столбца. Вот пример части такой таблицы:
А вот та же часть в двоичной записи (посмотрите внимательно на биты — каждый из них кодирует один пиксель изображения):
И, конечно же, посмотрим, как эти символы выводятся на дисплее (прямоугольники для лучшего представления знакомест символов):
Такой подход в хранении шрифта имеет свои преимущества и недостатки.
К преимуществам можно отнести небольшой размер таблицы знакогенератора в сравнении с размером файлов стандартных форматов шрифтов для «больших» систем, а также простоту программной реализации графических библиотек, основанных на этом подходе. И первое, и второе чрезвычайно важны в условиях жесткого дефицита памяти и вычислительных возможностей микроконтроллеров.
К недостаткам следует отнести проблемы с масштабированием, что является прямым следствием растровой природы такого шрифта. Приемлемый по качеству результат получается только, если увеличивать размер символов в кратное количество раз, например, в два, три или четыре раза. В таком случае нет искажений изображений символов, но чем больше кратность увеличения, тем более заметна «растровость» символов. Если в разрабатываемой системе требуется иметь несколько разных шрифтов и масштабирование одного не решает задачу удовлетворительно, тогда используют несколько шрифтов — таблиц знакогенератора.
Предыстория
В своё время мне пришлось разрабатывать программное обеспечение для устройства с графическим дисплеем RDX0120 на контроллере UC1601s. Использовался микроконтроллер Microchip PIC18. Тогда была найдена только одна работающая реализация драйвера, которая была жутко медленной и использовала моноширинный шрифт, внешним видом которого можно разве что отпугнуть будущего пользователя.
И вот, не впечатлившись результатом, была изучена документация на контроллер дисплея и разработана довольно быстрая библиотека. Шрифт, естественно, было решено сделать заново. Хотелось также, чтобы шрифт был не только моноширинным, но и пропорциональным, то есть чтобы символы в ширину занимали ровно столько места, сколько им требуется, с равным межсимвольным расстоянием.
Тут-то и понадобилось приложение, умеющее создать ту самую таблицу знакогенератора. Разработчики, которые хоть раз сталкивались с подобной проблемой, сразу же скажут: «Задача известная, решение тоже — утилита от MikroElektronika для создания именно таких шрифтов, и код генерирует аж на трех языках». Действительно, есть такая утилита. Я тоже пробовал ее использовать. Впечатления двоякие. Вроде бы все работает, и в то же время не хватает удобства и гибкости, сама таблица знакогенератора генерируется только по одному единственному алгоритму, который, очевидно, используется в графических библиотеках от той же MikroElektronika.
Народная мудрость гласит: «Если хочешь сделать что-то хорошо, сделай это сам». После изучения утилиты от MikroElektronika вдоль и впоперек пришло понимание, что так жить дальше нельзя. Тогда было решено начать собственный проект приложения, которое смогло бы удовлетворить самого требовательного разработчика. Хотелось видеть удобный редактор символов, предварительный просмотр образцов текста, наглядный импорт системных шрифтов, компактный формат хранения шрифтов, настраиваемый генератор кода и, конечно же, гибкость внешнего вида и функций приложения.
Как, наверное, большинство начинающих разработчиков, я был величайшим оптимистом и оценил время разработки в несколько месяцев. Как же я ошибался! Нет, действительно, за несколько месяцев был сделан рабочий прототип, но в таком виде его даже друзьям показывать было стыдно. Начался долгий процесс доведения до ума, в ходе которого приложение много раз изменилось внешне, обросло многими полезными и удобными инструментами. К сожалению, проект всегда был хоббийным, поэтому разработка была сильно неравномерной и разорванной во времени. Что в итоге сказалось на сроках выпуска готового приложения. Ведь старт проекту был дан где-то в конце 2015, а сейчас уже 2021.
Показывай уже!
«Вот он! Вот он — этот коварный тип. » (с).
Это приложение, которое умеет создавать растровые шрифты с нуля или на основе установленных системных. Имеет широкие возможности редактирования как отдельных символов, так и всего шрифта. Есть удобная навигация по символам, предпросмотр образцов текста, выбор кодировки и всяческие полезные настройки. И, конечно же, генерирует код на Си — ту самую таблицу знакогенератора. Причём этот генератор также имеет множество настроек, что позволяет интегрировать созданный шрифт в разные программные решения.
Полагаю, что дальше расписывать работу приложения будет нецелесообразно — получится длинное руководство пользователя. Которое, кстати, присутствует в репозитории проекта.
Пример реализации очень мелкого шрифта — меньше просто физически некуда.
Послесловие
Проект приложения имеет открытые исходные коды и является свободным программным обеспечением.
Сейчас приложение выпущено только под Windows. Может быть, в неопределённом будущем, будут выпуски и под другие ОС.
На сегодня в приложении доступно две локализации интерфейса — русская и английская. Если в сообществе появятся желающие помочь перевести приложение и справочные материалы на свой родной язык, добро пожаловать в репозиторий проекта. Там Вы найдёте всю необходимую информацию для перевода.
И, естественно, автор ждёт Ваших отзывов и комментариев — от похвалы до жёсткой критики. Всем удобной работы и хорошего настроения!
Обновление 1. Чтобы не превращать статью в сборник картинок, добавил ссылки на разделы справки, где есть иллюстрирующие скриншоты.
Компьютерная грамотность с Надеждой
Заполняем пробелы — расширяем горизонты!
Векторные шрифты. Растровые шрифты.
Размер для шрифтов имеет немаловажное значение, так как около 15 тысяч пользователей Интернета ежемесячно набирают в поисковой строке Яндекса такой запрос, как «размер шрифта».
В зависимости от того, способен ли шрифт без потери качества принимать любой необходимый размер, шрифты можно разделить на масштабируемые (scalable) и немасштабируемые (nonscalable).
Масштабируемые шрифты называют также векторными. Немасштабируемые шрифты называют еще растровыми.
Векторные шрифты отличаются тем, что могут принимать любой размер. И наоборот, растровые шрифты проектируются на определенный кегль (размер).
Поэтому растровые шрифты обычно искажаются при увеличении или уменьшении кегля, то есть на диагональных линиях появляются зазубрины, а кривые изображаются ломаными линиями.
Растровый шрифт – компьютерный шрифт, в котором рисунки букв задаются как растровые картинки, то есть набор точек (пикселей), формирующих символы. Например, заглавная буква I задается как столбец из 12 точек и двух перекладин из 6 точек каждая.
Делать повороты без потери качества для символов растрового шрифта можно на 90, 180, 270, 360 градусов. Примеры растровых шрифтов – Courier, MS Sans Serif, MS Serif, Symbol.
Растровые шрифты раньше широко использовались на мониторах с низким разрешением и на матричных принтерах. Сегодня растровые шрифты вновь «входят в моду» и используются, например, когда требуется четкое изображение мелкого текста.
Векторные шрифты содержат символы, каждый их которых имеет математическое описание, точнее, представляется в виде набора отрезков (векторов).
Масштабирование векторного шрифта производится простым умножением имеющихся координат на необходимый множитель. Это позволяет сохранять качество изображения символов на одинаковом уровне вне зависимости от их размеров.
Кроме того, символы векторных шрифтов можно наклонять под любым углом, вращать, сжимать, растягивать и т.п. Для воспроизведения символа векторного шрифта на мониторе или на принтере выполняется растеризация – преобразование векторов в растровые образы.
Растровые шрифты устроены просто, так как являются картинками, состоящими из точек. Их легко воспроизвести на мониторе или на принтере без предварительных вычислений. Отсутствие вычислений экономит объем ресурсов компьютера, а это было важным фактором до середины 1990-х годов.
Сейчас ресурсы компьютеров многократно увеличились. Это привело к тому, что растровые шрифты, являющиеся немасштабируемыми, применяются реже. В настоящее время пользователями ПК, в основном, используются векторные шрифты.
1) В стандартном редакторе Paint посмотрите наличие на Вашем ПК растровых шрифтов, например, Courier, MS Sans Serif, MS Serif.
2) Напишите текст, например, «растровый шрифт» и примените к этому тексту шрифт MS Serif. Как изменится вид текста, если к нему применить размер 12, а затем размер 40?
3) Поверните этот текст в редакторе Paint на 90 или на 180 градусов. При этом искажений не появится. А если Вы его повернете на 30 градусов, то искажения уже будут.
4) Напишите текст, например, «векторный шрифт» и примените к нему шрифт Times New Roman. Затем повторите к этому тексту действия из пунктов 2 и 3. При этом никаких искажений не произойдет?
P.S. Статья закончилась, но можно еще прочитать:
Нашли ошибку? Выделите фрагмент текста и нажмите Ctrl+Enter.
Компьютерный шрифт
Существует три основных типа форматов данных файлов компьютерных шрифтов:
Растровые шрифты быстрее и проще использовать в компьютерном коде, но они не масштабируются, поэтому для каждого размера требуется отдельный шрифт. [1] Размер шрифтов контура и обводки можно изменить, используя один шрифт и заменяя компоненты каждого глифа разными размерами, но их несколько сложнее отобразить на экране, чем растровые шрифты, поскольку они требуют дополнительного компьютерного кода для визуализации контура в растровое изображение. для отображения на экране или в печати. Хотя все типы по-прежнему используются, большинство шрифтов, которые можно увидеть и использовать на компьютерах, являются контурными.
Содержание
Типы шрифтов [ править ]
Растровые шрифты [ править ]
К преимуществам растровых шрифтов относятся:
Основным недостатком растровых шрифтов является то, что визуальное качество имеет тенденцию к снижению при масштабировании или ином преобразовании по сравнению с контурными и штриховыми шрифтами, а наличие множества оптимизированных и специально разработанных размеров одного и того же шрифта значительно увеличивает использование памяти. Самые ранние растровые шрифты были доступны только в определенных оптимизированных размерах, таких как 8, 9, 10, 12, 14, 18, 24, 36, 48, 72 и 96 точек (при разрешении 96 точек на дюйм ), часто доступны пользовательские шрифты. только одного определенного размера, например, шрифт заголовка всего 72 пункта.
Ограниченная вычислительная мощность и ограниченная память ранних компьютерных систем вынуждали использовать только растровые шрифты. Усовершенствования в аппаратном обеспечении позволили заменить их контурными или штриховыми шрифтами в тех случаях, когда желательно произвольное масштабирование, но растровые шрифты все еще широко используются во встроенных системах и других местах, где скорость и простота считаются важными.
Рисование строки с использованием растрового шрифта означает последовательный вывод растровых изображений каждого символа, который содержит строка, с посимвольным отступом.
Монохромные шрифты против шрифтов с оттенками серого [ править ]
Масштабирование [ править ]
Форматы растровых шрифтов [ править ]
Контурные шрифты [ править ]
Контурные шрифты имеют серьезную проблему в том, что используемые ими кривые Безье не могут быть точно отображены на растровом дисплее (например, на большинстве компьютерных мониторов и принтеров), а их визуализация может изменять форму в зависимости от желаемого размера и положения. [4] Такие параметры, как хинтинг шрифта.должны использоваться, чтобы уменьшить визуальное воздействие этой проблемы, что требует сложного программного обеспечения, которое трудно реализовать правильно. Многие современные настольные компьютерные системы включают программное обеспечение для этого, но они используют значительно большую вычислительную мощность, чем растровые шрифты, и могут быть незначительные дефекты визуализации, особенно при малых размерах шрифтов. Несмотря на это, они часто используются, поскольку люди часто считают время обработки и дефекты приемлемыми по сравнению с возможностью свободного масштабирования шрифтов.
Форматы шрифтов контура [ править ]
Шрифты Type 1 и Type 3 [ править ]
Шрифты TrueType [ править ]
Шрифты OpenType [ править ]
Шрифты на основе штрихов [ править ]
Среди коммерческих разработчиков были Agfa Monotype (iType), Type Solutions, Inc. (принадлежит Bitstream Inc. ) (Font Fusion (FFS), btX2), Fontworks (Gaiji Master), которые независимо друг от друга разработали типы шрифтов на основе штрихов и механизмы шрифтов.
Хотя Monotype и Bitstream заявили о значительной экономии места с использованием штриховых шрифтов в наборах символов Восточной Азии, большая часть экономии пространства достигается за счет создания составных глифов, которые являются частью спецификации TrueType и не требуют подхода на основе штрихов.
Форматы шрифтов на основе штрихов [ править ]
METAFONT использует другой вид описания глифов. Как и TrueType, это система описания векторных шрифтов. Он рисует глифы, используя штрихи, полученные путем перемещения многоугольного или эллиптического пера, аппроксимированного многоугольником, по пути, составленному из кубических составных кривых Безье и прямых отрезков, или путем заполнения таких путей. Хотя при обводке контура огибающая обводки на самом деле никогда не создается, этот метод не вызывает потери точности или разрешения. Метод, который использует Metafont, более сложен с математической точки зрения, потому что параллельные кривые Безье могут быть алгебраическими кривыми 10-го порядка. [5]
В 2004 году DynaComware разработала DigiType, штриховой формат шрифта. В 2006 году создатели Saffron Type System объявили о представлении штриховых шрифтов под названием Stylized Stroke Fonts (SSF) с целью обеспечения выразительности традиционных контурных шрифтов и небольшого объема памяти для штриховых шрифтов одинаковой ширины. шрифты (USF). [6]