» » » FreeType 2.7 — превосходное качество шрифтов Linux

 

FreeType 2.7 — превосходное качество шрифтов Linux

Автор: admin от 2-10-2016, 00:30, посмотрело: 782

В первой декаде сентября без фанфар и шумихи вышел FreeType версии 2.7, и это событие, без сомнения, можно назвать праздником на улице пользователей Linux, FreeDBS, NetBSD, ReactOS и других товарищей. Попробуем разобраться, от чего у нас такое безудержное веселье.
FreeType — библиотека с открытым кодом на Си, которую используют для растеризации шрифтов и операций над ними. В новой версии по-умолчанию используется алгоритм обработки инструкций TrueType v40.


FreeType 2.7 — превосходное качество шрифтов Linux


Это позволило добиться качественного субпиксельного сглаживания шрифтов, как в майкрософтовском DirectWrite/ClearType, но на самом деле никакого субпиксельного сглаживания не используется. Кроме того, алгоритм v40 рендерит быстрее Infinality, который использовался в предыдущем алгоритме v38, при этом конечный результат не хуже.


Infinality, патенты и ШГ


Исторически, было две проблемы со шрифтами в Linux. Во-первых, это минное поле патентов Microsoft и Apple, из-за чего разработчики мучительно шли обходными путями. Частично, эту проблему решал набор патчей Infinality, но ценой была низкая скорость и чересчур усложненный код. К тому же, по словам мейнтейнера, FreeType разработчик Infinality потерял интерес к своему проекту.


Давайте приглядимся к этим патентам чуть подробнее. С 10-го мая 2010-года истекли три патента Apple на байткодное сглаживание TrueType шрифтов. Теперь нет необходимости отключать его использование по-умолчанию.


Patent US5155805:
Method and apparatus for moving control points in displaying digital typeface on raster output devices


Patent US5159668:
Method and apparatus for manipulating outlines in improving digital typeface on raster output devices


Patent US5325479:
Method and apparatus for moving control points in displaying digital typeface on raster output devices


Но еще 9 патентов на ClearType Майкрософт остаются в силе.



Эти патенты можно разделить на три условные категории:



  • показ рисунков, когда информация отображается на уровне отдельных LCD субпикселей, вместо цельных пикселей

  • показ тех же рисунков после применения разнообразных фильтров, например для подавления артефактов цветного окаймления

  • обработка размеров и расстояний в красочном мире субпикселей


И это еще не все, есть и другие патенты. Прелесть ситуации еще в том, что Microsoft и Apple подписали соглашение о кросс-лицензировании в то время, как разработчики FreeType и их коллеги по цеху открытого ПО должны героически преодолевать ШГ препятствия.


Ценность этих патентов весьма сомнительна. Сразу же после того, как Майкрософт запатентовала ClearType, появились сомнения относительно их правомочности и новизны, причем писали об этом в газете Нью-Йорк Таймс, не на безызвестном случайном форуме. Один из активных разоблачителей Стив Гибсон на свой интернет страничке пишет, что ClearType — хорошо забытые технологии, которые Стив Возняк запатентовал 20 лет назад для Apple II. Никакого существенного прорыва технической мысли нет и в помине, а значит и интеллектуальной собственности нет.


Thus, Microsoft's ‘ClearType’ application of sub-pixel text rendering does not represent the dramatic breakthrough that they claim and it can not be the valid subject for intellectual property acquisition.

К сожалению, американское патентное право устроено таким образом, что все это остается разговором в пользу бедных. Хорош он или плох, но патент есть, и значит, остальным надо платить денежки за его использование.


FreeType 2.7 — превосходное качество шрифтов Linux


Позволю себе немного пафоса. Пока что Майкрософт не спешит дарить патенты на ClearType сообществу открытого ПО, как это сделала компания Adobe с OpenType/CFF движком. Об этом неплохо помнить, когда мы очередной раз видим слоган Microsoft сердечко Linux. По примеру американского президента Рейгана хочется воскликнуть: «Господин Наделла, если Майкрософт любит Linux, разрушьте эти патентные стены!».


Новый рендеринг для TrueType


Наследие программных алгоритмов рендеринга шрифтов для ЭЛТ мониторов 90-х гг. прошлого столетия — это вторая проблема Linux со шрифтами. Семейство TrueType шрифтов появилось на свет в эпоху зернистых мониторов с электронно-лучевыми трубками. В снимках экрана Windows 95 из текста так и лезут пиксели. Каждый отдельный глиф намертво вколачивался в сетку из пикселей. Майкрософт вложила в это дело уйму человеко-часов, обсчитывая и оптимизируя глифы для всевозможных размеров, чтобы т. н. основные вэб шрифты (Arial, Times New Roman, Courier New и т. д.) на экране выглядели достойно.


Сизифов труд однако возымел последствия. Настала новая эпоха ЖК-мониторов и тут оказалась, что старые TrueType инструкции надо перепрогроммировать для того, чтобы использовать эти новые возможности или хотя бы для того, чтобы шрифты отображались корректно. Нет необходимости пристегивать каждый глиф к сетке полных пикселей, вместо этого надо их можно пристегнуть к одному из трех субпикселей, даже к части их и добиться гораздо более качественного изображения, благодаря такому субпиксельному сглаживанию. Здраво рассудив, что переписать весь старый багаж TrueType инструкций нереально, в MS придумали асимметрическую сверх-дискретизацию и режим совместимости, в котором использовали много лихих приемчиков и костылей из инструкций старых шрифтов. Таким образом, и старые шрифты могли в некоторой степени воспользоваться увеличенным кратно горизонтальным разрешением.


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


FreeType 2.7 — превосходное качество шрифтов Linux



Впрочем, нашелся герой, который пошел трудным путем и реализовал в Infinality все вышеназванное спагетти старых и новых инструкций. Какое-то время FreeType включал в себя интерпретатор v38 — набор патчей Infinality, но затем код был удален в пользу интерпретатора v35. Разработчик Infinality поистине взялся за невыполнимую миссию — сделать так, чтобы шрифты выглядели лучше чем в Windows, и чтобы их можно было тонко настроить.


Here is the core secret to making fonts render like through DirectWrite/ClearType on Windows: There actually is no subpixel hinting going on here. Shock. The code simply ignores all horizontal hinting instructions.

В итоге, удалив Infinality, мейнтейнер FreeType сделал выбор в пользу простоты и чистоты кода. Так появился алгоритм обработки инструкций TrueType v40. Его принцип прост как копейка — полное игнорирование всех инструкций горизонтального сглаживания. Никакого субпиксельного сглаживания. Гораздо меньше труда, а результат практический одинаковый. Заодно решается проблема с шагом глифа и меж-символьными расстояниями в старых не обученных шрифтах.


Как достичь гармонии шрифтов с FreeType 2.7


Хорошая новость в том, что для этого ничего делать не нужно, обновления сами появятся в репозитарии вашего Linux или BSD дистрибутива. Просто обновитесь до новой версии и перезагрузите X.Org Server. Настройте FontConfig по вкусу. А плохая новость в том, что хочется прям сейчас, а ждать несколько дней или недель иногда тяжко. Ну а особо нетерпеливые пользователи могут сами собрать новую версию из исходников или установить с помощью штатного установщика пакетов. В моем Gentoo FreeType 2.7 пока не стабилизировался.


$ eix freetype
$ [I] media-libs/freetype
     Доступные версии:      (2) 2.5.5^d 2.6.3-r1^d ~2.6.5^d ~2.7-r1^d
       {X +adobe-cff auto-hinter bindist bzip2 (+)cleartype_hinting debug doc fontforge harfbuzz infinality png static-libs utils ABI_MIPS="n32 n64 o32" ABI_PPC="32 64" ABI_S390="32 64" ABI_X86="32 64 x32"}

Для консервативного Debian, наверное придется ждать следующего релиза, а у пользователей Ubuntu и так все хорошо со шрифтами, им торопится некуда.



Источник: Хабрахабр

Категория: Операционные системы » Linux

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *