FreeType 2.7 — чудова якість шрифтів Linux

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

Це дозволило добитися якісного субпиксельного згладжування шрифтів, як в майкрософтовском
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
Майкрософт залишаються в силі.
список майкрософтовских патентівPatent US6239783:
Weighted mapping of image data samples to pixel sub-components on a display device
Patent US6243070:
Method and apparatus for detecting and reducing color artifacts in images
Patent US6282327:
Maintaining advance widths of existing characters that have been resolution enhanced
Patent US6307566:
Methods and apparatus for performing image and rendering rasterization operations
Patent US6393145:
Methods and apparatus data structures for enhancing the resolution of images to be rendered on patterned display devices
Patent US6421054:
Methods and apparatus for performing grid fitting and hinting operations
Patent US6624828:
Method and apparatus for improving the quality of displayed images through the use of user reference information
Ці патенти можна розділити на три умовні категорії:
  • показ малюнків, коли інформація відображається на рівні окремих LCD рендерінгу, замість цілісних пікселів
  • показ тих же малюнків після застосування різноманітних фільтрів, наприклад для придушення артефактів кольорової облямівки
  • обробка розмірів і відстаней у барвистому світі рендерінгу
І це ще не все, є й інші патенти. Принадність ситуації ще в тому, що Microsoft і Apple підписали угоду про крос-ліцензування в той час, як розробники
FreeType
і їхні колеги по цеху відкритого ПЗ повинні героїчно долати ШГ перешкоди.
Цінність цих патентів вельми сумнівна. Відразу ж після того, як Microsoft запатентувала ClearType, з'явилися сумніви щодо їх правомірності і новизни, причому писали про це в газеті Нью-Йорк Таймс, не на безызвестном випадковому форумі. Один з активних викривачів Стів Гібсон на свій інтернет сторінці пише, що ClearType — добре забуті технології, які Стів Возняк запатентував 20 років тому для Apple II. Ніякого істотного прориву технічної думки немає і в помині, а значить і інтелектуальної власності ні.
Thus, microsoft's 'Майкрософт' 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.
На жаль, американське патентне право влаштовано таким чином, що все це залишається розмовою на користь бідних. Хороший він чи поганий, але патент є, і значить, іншим треба платити гроші за його використання.

Дозволю собі трохи пафосу. Поки що Майкрософт не поспішає дарувати патенти на ClearType спільноти відкритого ПЗ, як це зробила компанія Adobe
OpenType/CFF
движком. Про це непогано пам'ятати, коли ми вкотре бачимо слоган Microsoft сердечко Linux. За прикладом американського президента Рейгана хочеться вигукнути: «Пан Наделла, якщо Microsoft любить Linux, зруйнуйте ці патентні стіни!».
Новий рендеринг для TrueType
Спадщину програмних алгоритмів візуалізації шрифтів для ЕПТ моніторів 90-х рр. минулого століття — це друга проблема Linux зі шрифтами. Сімейство
TrueType
шрифтів з'явилося на світ в епоху зернистих моніторів з електронно-променевими трубками. У знімках екрану Windows 95 з тексту так і лізуть пікселі. Кожен окремий гліф намертво вколачивался у сітку пікселів. Microsoft вклала в цю справу багато людино-годин, обсчитывая і оптимізуючи гліфи для всіляких розмірів, щоб т. н. основні веб шрифти (
Arial, Times New Roman, Courier New
і т. д.) на екрані виглядали гідно.
Сізіфова праця однак мав наслідки. Настала нова епоха РК-моніторів і тут виявилося, що старі
TrueType
інструкції треба перепрогроммировать для того, щоб використовувати ці нові можливості або хоча б для того, щоб шрифти відображення коректно. Немає необхідності користуватися кожен гліф сітці повних пікселів, замість цього треба їх можна пристебнути до одного з трьох рендерінгу, навіть до частини їх і домогтися набагато більш якісного зображення, завдяки такому субпиксельному згладжування. Здраво розсудивши, що переписати весь старий багаж
TrueType
інструкцій нереально, MS придумали асиметричну понад-дискретизацію і режим сумісності, в якому використовували багато лихих прийомчиків і милиць з інструкцій старих шрифтів. Таким чином, і старі шрифти могли певною мірою скористатися збільшеним кратно горизонтальним роздільною здатністю.
Розробники
FreeType
вирішили не городити цей город і проігнорували режим сумісності. Це звичайно ж мало наслідки. Нові шрифти, натасканные на костыльный режим сумісності і асинхронну понад-дискретизацію, виглядали кривувато.


Втім, знайшовся герой, який пішов важким шляхом і реалізував в
Infinality
все вищеназване спагетті старих і нових інструкцій. Якийсь час
FreeType
включав в себе інтерпретатор v38 — набір патчів
Infinality
, але потім код був вилучений на користь інтерпретатора v35. Розробник
Infinality
справді взявся за нездійсненну місію — зробити так, щоб шрифти виглядали краще ніж в Windows, і щоб їх можна було тонко налаштувати.
Here is the core secret to making fonts render like through DirectWrite/ClearType on Windows: There is actually 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 і так все добре зі шрифтами, їм поспішати нікуди.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.