stringtranslate.com

Растеризация шрифта

Особенно для шрифтов небольшого размера, рендеринг векторизованных шрифтов в виде "миниатюры" может значительно различаться в зависимости от размера миниатюры. Здесь небольшое изменение множителя upright=от 1.70до 1.75приводит к значительным и взаимно отличным аномалиям рендеринга, возможно, из-за ошибок округления, возникающих из-за использования целых размеров шрифта. [ оригинальное исследование? ]

Растрирование шрифта — это процесс преобразования текста из векторного описания (как в масштабируемых шрифтах, таких как шрифты TrueType ) в растровое или битовое описание. Это часто включает в себя некоторое сглаживание текста на экране, чтобы сделать его более гладким и удобным для чтения. Это также может включать в себя хинтинг — информацию, встроенную в данные шрифта, которая оптимизирует детали рендеринга для определенных размеров символов.

Типы растеризации

Простейшей формой растеризации является простое рисование линий без какого-либо сглаживания. В терминологии Microsoft это называется двухуровневым (и более популярно «черно-белым») рендерингом, поскольку для рисования глифов не используются промежуточные оттенки (серого). (На самом деле, в качестве переднего плана и фона могут использоваться любые два цвета.) [1] Эта форма рендеринга также называется алиасингом или «зубчатым». [2] Это самый быстрый метод рендеринга в том смысле, что он требует наименьших вычислительных усилий. Однако у него есть недостаток, заключающийся в том, что отрисованные глифы могут потерять четкость и стать трудно распознаваемыми при малых размерах. Поэтому многие файлы данных шрифтов (например, TrueType) содержат подсказки , которые помогают растеризатору решить, где отрисовывать пиксели для особенно проблемных областей в глифах, или наборы вручную настроенных растровых изображений для использования при определенных размерах пикселей. [1] В качестве типичного примера, все версии Microsoft Windows до Windows 95 (например, Windows 3.1 ) предоставляли только этот тип встроенного растеризатора. [2]

Более сложный подход заключается в использовании стандартных методов сглаживания из компьютерной графики. Это можно представить как определение для каждого пикселя на краях символа, какую часть этого пикселя занимает символ, и рисование этого пикселя с этой степенью непрозрачности. Например, при рисовании черной буквы (000000) на белом (FFFFFF) фоне, если пиксель в идеале должен быть наполовину заполнен (возможно, диагональной линией из угла в угол), он рисуется на 50% серым (BCBCBC). Чрезмерно простое применение этой процедуры может привести к размытым глифам. Например, если буква включает вертикальную линию, которая должна быть шириной в один пиксель, но попадает точно между двумя пикселями, она отображается на экране как серая линия шириной в два пикселя. Эта размытость жертвует четкостью ради точности. Однако современные системы часто заставляют линии попадать в целые пиксельные координаты, что заставляет глифы выглядеть более резкими, но также делает линии немного шире или тоньше, чем они выглядели бы на печатном листе бумаги.

Деталь субпиксельной визуализации, показывающая положение отдельных цветных пикселей, составляющих белый шрифт

Большинство компьютерных дисплеев имеют пиксели, состоящие из нескольких субпикселей (обычно по одному для красного, зеленого и синего, которые объединяются для получения полного спектра цветов). В некоторых случаях, особенно с плоскими дисплеями, это можно использовать, выполняя рендеринг с субпиксельным разрешением, а не используя целые пиксели, что может увеличить эффективное разрешение экрана. Это обычно известно как субпиксельный рендеринг . Одной из фирменных реализаций субпиксельного рендеринга является ClearType от Microsoft .

В настоящее время используемые системы растеризации

В современных операционных системах растеризация обычно обеспечивается общей библиотекой, общей для многих приложений. Такая общая библиотека может быть встроена в операционную систему или среду рабочего стола , или может быть добавлена ​​позже. В принципе, каждое приложение может использовать отдельную библиотеку растеризации шрифтов, но на практике большинство систем пытаются стандартизироваться на основе одной библиотеки.

Microsoft Windows поддерживает субпиксельную визуализацию с Windows XP . С другой стороны, стандартный растеризатор Microsoft без ClearType является примером того, что ставит во главу угла намерение дизайнера шрифтов о ясности; принудительно помещая текст в целочисленные координатные позиции, следуя намерению дизайнера шрифтов о подсказках, и даже не сглаживая определенные шрифты при определенных размерах, следуя намерению дизайнера шрифтов о таблице gasp, его становится легче читать на экране, но он может выглядеть несколько иначе при печати. ​​Это изменилось с поставкой Direct2D/DirectWrite в Windows 7 и обновлении платформы Windows Vista, что позволяет позиционировать субпиксельный текст до размеров 1/16 пикселя. [3]

Quartz в Mac OS X отличается использованием субпиксельного позиционирования; он не принудительно размещает глифы в точных пиксельных местоположениях, вместо этого используя различные методы сглаживания, [4] включая субпиксельный рендеринг , чтобы расположить символы и линии так, чтобы они казались дальше от намерения дизайнера шрифта намекать и ближе к исходному контуру. Результатом является то, что экранный дисплей выглядит очень похожим на печатный вывод, но иногда его трудно читать при меньших размерах точек. Рендерер Quartz, начиная с macOS Mojave, удалил субпиксельный рендеринг, полагаясь вместо этого исключительно на сглаживание в оттенках серого. Это изменение приемлемо для экранов HiDPI "retina", но затрудняет чтение текста на внешних мониторах. [5]

Большинство других систем используют библиотеку FreeType , которая в зависимости от настроек может находиться где угодно между реализациями Microsoft и Apple; она поддерживает хинтование и сглаживание, а также опционально выполняет субпиксельный рендеринг и позиционирование. FreeType также предлагает некоторые функции, отсутствующие в обеих реализациях, такие как цветной субпиксельный рендеринг и гамма-коррекция. [6]

Приложения также могут привносить свои собственные решения для рендеринга шрифтов. Графические фреймворки, такие как Skia Graphics Engine (используется Google Chrome ), иногда используют собственный рендерер шрифтов. Видеоигры и другие 3D-приложения также могут нуждаться в более быстрых рендерерах на базе GPU, таких как различные рендереры на базе SDF и «Slug». [7]

Ссылки

  1. ^ ab Грег Хичкок (с введением Стивена Синофски ) «Инженерные изменения в ClearType в Windows 7», блоги MSDN, 23 июня 2009 г.
  2. ^ ab О рендеринге текста в Windows Internet Explorer 9
  3. ^ Библиотека MSDN : Разработка .NET : WPF : Обзор ClearType
  4. ^ "[ft] Fwd: Re: Экспозиции растеризации текстов". lists.gnu.org .
  5. ^ "MacOS Mojave удаляет субпиксельное сглаживание, делая не-Retina дисплеи размытыми | Hacker News". news.ycombinator.com .
  6. ^ «О легком намеке, правильной отрисовке текста, затемнении штрихов и ЖК-фильтрах». freetype.org .
  7. ^ «Библиотека рендеринга шрифтов Slug». sluglibrary.com .

Внешние ссылки