ClearType-згладжування в Linux, або шрифти в Mandriva як в Ubuntu
бачив я недавно нову Ubuntu і стало мені завидно, що у неї шрифти красивіше, ніж в моїй Mandriva (GNOME). І став я копати. Копав і експериментував я довго, але в підсумку я домігся потрібного результату. Хочу тепер вам розповісти як це у мене вийшло. Зробив я це шляхом пересборки бібліотек, які відповідають за рендеринг шрифтів, з підтримкою ClearType -сглажіванія. Не знаю, красивіше ніж в Ubuntu чи ні, але мені подобаються. Отже, приступимо.
бібліотеки
Для відтворення шрифтів використовуються такі бібліотеки:
Cairo - бібліотека, призначена для рендеринга векторної графіки.
Xft - вільна бібліотека, призначена щоб використовувати Freetype растерізер з X-розширенням X Rendering Extension; зазвичай це потрібно для для використання шрифтів FreeType з X Window System.
FreeType - бібліотека, яка використовується для растеризації шрифтів і операцій над ними.
Вихідні тексти бібліотек
Основні патчі
За патчі величезне спасибі спільноті користувачів Arch Linux, у яких я їх всіх і знайшов.
Кожен патч нічого складного не робить, просто вносить деякі зміни в вихідні бібліотек. Для їх застосування потрібен пакет «patch» який знайдете в репозиторіях. Про його використанні і про його параметрах і ключах можна почитати тут. Коди патчів оновлені для роботи з новими версіями бібліотек. Якщо подивитися код будь-якого з них, то можна робити все це вручну шляхом додавання і заміни коду в исходниках.
Cairo:
cairo-1.2.4-lcd-cleartype-like.diff - ClearType рендеринг шрифтів. Подібне згладжування і застосовується в Убунту (виходячи з порівняння). Нагадаю що даний метод зареєстрований компанією Microsoft.
Xft:
libXft-2.1.14-lcd-cleartype.patch - те ж саме що і для cairo. Це вплинуло у мене на шрифти в Opera, Lotus Symphony.
У них ще є патчі для згладжування від Canonical - freetype2-ubuntu, libxft-ubuntu, cairo-ubuntu, але вони мені особливо не допомогли, навіть гірше зробили. Тим більше що вони не для нових версій бібліотек.
збірка бібліотек
Всі залежності для компіляції встановіть в процесі, бо я вже не пам'ятаю їх усіх.
Для початку собeрем Cairo. Переходимо в папку з вихідними кодами cairo-1.8.8 /. Кидаємо туди патч (мені було так зручніше), і в консолі виконуємо:
$ Patch -Np1 -i cairo-1.2.4-lcd-cleartype-like.diff
$ ./configure --prefix = / usr
$ make make install
Природно для команди make install будуть потрібні права root'а, тому або виконуйте все в консолі від рута або до make install прменяются sudo.
Якщо перезавантажити ікси, ми побачимо значну різницю в відображенні шрифтів.
Далі збираємо Xft. Стаємо в libXft-2.1.14 /:
$ Patch -Np1 -i libXft-2.1.14-lcd-cleartype.patch
$ ./configure --prefix = / usr
$ make make install
Тепер FreeType. Якщо ви хочете використовувати рендеринг Apple, тоді накладаємо bytecode.patch. freetype-2.3.11 /:
$ Patch -Np0 -i bytecode.patch
І ще додаткові зміни які можна застосовувати і без bytecode. Це вже треба дивитися самим, краще з ними чи ні:
$ Patch -Np1 -i freetype-2.2.1-subpixel-disable-quantization.diff
$ Patch -Np1 -i freetype-2.3.0-enable-spr.patch
$ Patch -Np1 -i freetype-2.2.1-enable-valid.patch
$ Patch -Np1 -i freetype-2.2.1-memcpy-fix.patch
$ ./configure --prefix = / usr
$ make make install
Після цього можна перезапускати ікси.
Наведу вам свої скріни щоб ви бачили різницю:
Всі шрифти додатків, документів, заголовків і робочого столу у мене в налаштуваннях за замовчуванням - Sans. Ось так у виглядав Firefox у мене з «недоторканими» бібліотеками:
Firefox, пропатчений Cairo:
Тепер стало схоже на Убунту.
Повний (Full) уточнення (Hinting) шрифтів (в настройках шрифтів в GNOME):
Слабке (Slight) уточнення (Hinting) шрифтів, яке в Убунту варто завжди за замовчуванням:
Opera, пропатчений Xft:
Слабке (Slight) уточнення (Hinting) шрифтів:
Firefox, пропатчений FreeType з bytecode.patch:
Повний (Full) уточнення (Hinting) шрифтів:
Слабке (Slight) уточнення (Hinting) шрифтів:
До речі це теж виглядає як в Убунту.
На останок рекомендую погратися в налаштуваннях шрифтів в GNOME (або KDE), особливо з dpi. Можна ще поексперементувати з їхніми патчами, і добится найкращого результату.