Растеризация шрифтов
Эта статья нуждается в дополнительных ссылок для проверки . ( ноябрь 2009 г. ) |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/85/20200522_SVG_font_rendering_at_different_thumbnail_sizes.gif/400px-20200522_SVG_font_rendering_at_different_thumbnail_sizes.gif)
upright=
множитель от 1.70
к 1.75
приводит к значительным и взаиморазличимым аномалиям рендеринга, возможно, из-за ошибок округления, возникающих в результате использования целочисленных размеров шрифта. [ оригинальное исследование? ] Растеризация шрифта — это процесс преобразования текста из векторного описания (как в масштабируемых шрифтах, таких как шрифты TrueType ) в растровое или растровое описание. Часто это предполагает сглаживание текста на экране, чтобы сделать его более плавным и легким для чтения. Это также может включать в себя хинтинг — информацию, встроенную в данные шрифта, которая оптимизирует детали рендеринга для определенных размеров символов.
Виды растеризации [ править ]
Самая простая форма растеризации — это простое рисование линий без какого-либо сглаживания. В терминологии Microsoft это называется двухуровневым (или более популярным «черно-белым») рендерингом, поскольку для рисования глифов не используются промежуточные оттенки (серого). (На самом деле в качестве переднего плана и фона можно использовать любые два цвета.) [1] Эту форму рендеринга также называют псевдонимом или «зубчатым». [2] Это самый быстрый метод рендеринга в том смысле, что он требует наименьших вычислительных усилий. Однако у него есть тот недостаток, что отображаемые глифы могут потерять четкость и их станет трудно распознавать при небольших размерах. Поэтому многие файлы данных шрифтов (например, TrueType) содержат подсказки , которые помогают растеризатору решить, где визуализировать пиксели для особенно проблемных областей глифов, или наборы вручную настроенных растровых изображений для использования с определенными размерами пикселей. [1] Типичный пример: все версии Microsoft Windows до Windows 95 (например, Windows 3.1 ) предоставляли только этот тип встроенного растеризатора. [2]
Более сложный подход — использовать стандартные методы сглаживания компьютерной графики. Это можно рассматривать как определение для каждого пикселя по краям персонажа того, какую часть этого пикселя занимает персонаж, и рисование этого пикселя с определенной степенью непрозрачности. Например, при рисовании черной буквы (000000) на белом (FFFFFF) фоне, если пиксель в идеале должен быть заполнен наполовину (возможно, диагональной линией от угла к углу), он рисуется на 50% серым (BCBCBC). Слишком простое применение этой процедуры может привести к размытию глифов. Например, если буква содержит вертикальную линию, которая должна быть шириной в один пиксель, но находится точно между двумя пикселями, она отображается на экране как серая линия шириной в два пикселя. Эта размытость меняет ясность на точность. Однако современные системы часто заставляют линии попадать в целочисленные пиксельные координаты, что делает глифы более четкими, но также делает линии немного шире или тоньше, чем они выглядели бы на распечатанном листе бумаги.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/57/Subpixel-rendering-RGB.png/300px-Subpixel-rendering-RGB.png)
Большинство компьютерных дисплеев имеют пиксели, состоящие из нескольких субпикселей (обычно по одному для красного, зеленого и синего, которые объединяются для создания полного диапазона цветов). В некоторых случаях, особенно с плоскими дисплеями, это можно использовать путем рендеринга с субпиксельным разрешением, а не с использованием целых пикселей, что может увеличить эффективное разрешение экрана. Это обычно известно как субпиксельный рендеринг . Одной из запатентованных реализаций субпиксельного рендеринга является ClearType от Microsoft .
Используемые в настоящее время системы растеризации [ править ]
В современных операционных системах растеризация обычно обеспечивается общей библиотекой, общей для многих приложений. Такая общая библиотека может быть встроена в операционную систему или среду рабочего стола или добавлена позже. В принципе, каждое приложение может использовать другую библиотеку растеризации шрифтов, но на практике большинство систем пытаются стандартизировать одну библиотеку.
Microsoft Windows поддерживает субпиксельный рендеринг начиная с Windows XP . С другой стороны, стандартный растеризатор Microsoft без ClearType является примером растеризатора, который отдает приоритет шрифта ясности дизайнера ; заставляя текст занимать целые координатные позиции, следуя замыслу дизайнера шрифта в виде подсказок и даже не сглаживая определенные шрифты определенных размеров, следуя замыслу дизайнера шрифта в таблице вздохов, его становится легче читать на экране, но при печати может выглядеть несколько иначе. Ситуация изменилась с появлением Direct2D/DirectWrite в обновлении платформы Windows 7 и Windows Vista, позволяющем субпиксельное позиционирование текста до размеров 1/16 пикселя. [3]
Mac OS X в Quartz отличается использованием субпиксельного позиционирования; он не помещает глифы в точные местоположения пикселей, а использует различные методы сглаживания, [4] включая субпиксельный рендеринг , чтобы расположить символы и линии так, чтобы они отображались дальше от намека дизайнера шрифта и ближе к исходному контуру. В результате экранное изображение очень похоже на печатный результат, но иногда его трудно читать при меньшем кегле. Начиная с macOS Mojave, модуль рендеринга Quartz удалил субпиксельный рендеринг, полагаясь вместо этого исключительно на сглаживание оттенков серого. Это изменение приемлемо для экранов HiDPI «retina», но затрудняет чтение текста на внешних мониторах. [5]
Большинство других систем используют библиотеку FreeType , которая в зависимости от настроек может находиться где-то между реализациями Microsoft и Apple; он поддерживает хинтинг и сглаживание, а также дополнительно выполняет субпиксельный рендеринг и позиционирование. FreeType также предлагает некоторые функции, отсутствующие ни в одной из реализаций, такие как цветобалансированный субпиксельный рендеринг и гамма-коррекция. [6]
Приложения также могут предлагать собственные решения для рендеринга шрифтов. Графические платформы, такие как Skia Graphics Engine (используется Google Chrome ), иногда используют собственный механизм рендеринга шрифтов. Видеоиграм и другим 3D-приложениям также могут потребоваться более быстрые средства рендеринга на базе графического процессора, такие как различные средства рендеринга на основе SDF и «Slug». [7]
Ссылки [ править ]
- ^ Перейти обратно: а б Грег Хичкок (с введением Стивена Синофски ) « Инженерные изменения в ClearType в Windows 7 », блоги MSDN, 23 июня 2009 г.
- ^ Перейти обратно: а б О рендеринге текста в Windows Internet Explorer 9
- ^ Библиотека MSDN: Разработка .NET: WPF: Обзор ClearType
- ^ «[ft] Fwd: Re: Воздействие растеризации текста» . lists.gnu.org .
- ^ «MacOS Mojave удаляет субпиксельное сглаживание, что делает дисплеи без сетчатки размытыми | Hacker News» . news.ycombinator.com .
- ^ «О небольших намеках, правильной отрисовке текста, затемнении стебля и ЖК-фильтрах» . сайт freetype.org .
- ^ «Библиотека рендеринга шрифтов Slug» . sluglibrary.com .
Внешние ссылки [ править ]
![](http://upload.wikimedia.org/wikipedia/en/thumb/4/4a/Commons-logo.svg/30px-Commons-logo.svg.png)
- Возвращение к растровой трагедии при низком разрешении - онлайн-книга Бита Стамма о растеризации с упором на ClearType.
- CS 354 Компьютерная графика — рендеринг путей; Техасский университет в Остине
- Экспонирование растеризации текста
- Проблемы типографского сглаживания