Введение
Растеризация шрифтов — это процесс преобразования текста из векторного представления (например, в масштабируемых шрифтах, таких как TrueType) в растровое или битовое изображение. Этот процесс часто включает в себя сглаживание текста на экране для повышения его четкости и удобочитаемости. Также он может включать в себя хинтинг — информацию, встроенную в данные шрифта, которая оптимизирует детали отображения для конкретных размеров символов.
Font rasterization is the process of converting text from a vector description (as found in scalable fonts such as TrueType fonts) to a raster or bitmap description. This often involves some anti aliasing on screen text to make it smoother and easier to read. It may also involve hinting—information embedded in the font data that optimizes rendering details for particular character sizes.
Виды растрирования
Самая простая форма растрирования — это простое рисование линий без какого-либо сглаживания. В терминологии Microsoft это называется биуровневым (и более распространенным "черно-белым") рендерингом, поскольку для отрисовки глифов не используются промежуточные оттенки серого. (Фактически, любые два цвета могут использоваться в качестве переднего и фонового.) Эта форма рендеринга также называется "алиасинговым" или "зубчатым". В качестве типичного примера, все версии Microsoft Windows до Windows 95 (например, Windows 3.1) предоставляли только этот тип встроенного растрировщика. Более сложный подход — использовать стандартные методы сглаживания из компьютерной графики. Это можно представить как определение для каждого пикселя на границах символа, какую часть этого пикселя занимает символ, и отрисовку этого пикселя с соответствующей степенью прозрачности. Например, при отрисовке черной (000000) буквы на белом (FFFFFF) фоне, если пиксель должен быть заполнен наполовину (например, диагональной линией от угла к углу), он отрисовывается 50% серым (BCBCBC). Чрезмерное упрощение этой процедуры может привести к размытым глифам. Например, если буква содержит вертикальную линию шириной в один пиксель, но она приходится ровно между двумя пикселями, на экране она отображается как серая линия шириной в два пикселя. Эта размытость жертвует четкостью ради точности. Однако современные системы часто принудительно выравнивают линии по целочисленным координатам пикселей, что делает глифы более четкими, но также делает линии немного шире или тоньше, чем они выглядели бы на бумаге. Большинство компьютерных дисплеев имеют пиксели, состоящие из нескольких субпикселей (обычно по одному для красного, зеленого и синего, которые комбинируются для получения полного спектра цветов). В некоторых случаях, особенно с жидкокристаллическими дисплеями, можно использовать это, выполняя рендеринг в субпиксельном разрешении, а не используя целые пиксели, что может увеличить эффективное разрешение экрана. Это обычно известно как субпиксельный рендеринг. Одной из запатентованных реализаций субпиксельного рендеринга является ClearType от Microsoft.
В настоящее время используемые растрирующие системы
В современных операционных системах растризация обычно обеспечивается общей библиотекой, используемой многими приложениями. Такая общая библиотека может быть встроена в операционную систему или окружение рабочего стола, либо добавлена позднее. В принципе, каждое приложение может использовать собственную библиотеку растризации шрифтов, но на практике большинство систем стремятся к стандартизации на одной библиотеке. Microsoft Windows поддерживает субпиксельный рендеринг начиная с Windows XP. С другой стороны, стандартный растризатор Microsoft без ClearType – пример системы, приоритезирующей четкость, задуманную дизайнером шрифта; принудительно выравнивая текст по целочисленным координатам, следуя указаниям по хинтингу, и даже отключая сглаживание для определенных шрифтов при определенных размерах, в соответствии с данными таблицы GASP, он облегчает чтение на экране, но может выглядеть несколько иначе при печати. Это изменилось с выпуском Direct2D/DirectWrite в Windows 7 и обновлением платформы Windows Vista, что позволило позиционировать текст с точностью до 1/16 пикселя. Quartz в Mac OS X отличается использованием субпиксельного позиционирования; он не принуждает глифы к точным пиксельным координатам, а вместо этого использует различные методы сглаживания, включая субпиксельный рендеринг, для позиционирования символов и линий, чтобы они отклонялись от задуманного дизайнером хинтинга и приближались к исходному контуру. В результате изображение на экране очень похоже на печатный вывод, но иногда может быть трудно читать при малых кеглях. Начиная с macOS Mojave, рендерер Quartz отказался от субпиксельного рендеринга, полагаясь исключительно на антиалиазинг в оттенках серого. Это изменение приемлемо для HiDPI-экранов "Retina", но затрудняет чтение текста на внешних мониторах. Большинство других систем используют библиотеку FreeType, которая, в зависимости от настроек, может занимать промежуточное положение между реализациями Microsoft и Apple; она поддерживает хинтинг и антиалиазинг, а также опционально выполняет субпиксельный рендеринг и позиционирование. FreeType также предлагает некоторые функции, отсутствующие в обеих реализациях, такие как цветосбалансированный субпиксельный рендеринг и гамма-коррекция. Приложения также могут использовать собственные решения для рендеринга шрифтов. Графические фреймворки, такие как Skia Graphics Engine (используемый Google Chrome), иногда используют собственный рендерер шрифтов. Видеоиграм и другим 3D-приложениям могут потребоваться более быстрые рендереры на основе GPU, такие как различные рендереры на основе SDF и "Slug".