Windows сглаживание как в ubuntu

Обновлено: 05.07.2024

К счастью, немного погуглив в интернете, я наткнулся на замечательный проект infinality, энтузиасты из которого разрабатывают патчи для библиотеки freetype. Благодаря этому проекту можно не только улучшить качество рендеринга шрифтов, но и тонко настроить способ субпиксельного сглаживания: имеется несколько предустановленных схем, которые имитируют популярные технологии рендеринга текста в различных операционных системах.

Установка infinality

Установка патчей от infinality в debian-based дистрибутив довольно проста. С помощью команд, опубликованных ниже, добавляется репозиторий с патченными библиотеками, обновляется список доступных пакетов, устанавливается fontconfig-infinality и обновляется библиотека libfreetype6.

sudo add - apt - repository ppa : no1wantdthisname / ppa

Инструкции по установке infinality в другие GNU/Linux дистрибутивы можно найти здесь:

После установки infinality, система нуждается в настройке. Для этого выполняем следующую команду:

sudo bash / etc / fonts / infinality / infctl . sh setstyle

После её выполнения вам будет предложено сменить стиль сглаживания шрифтов:

sudo vim / etc / profile . d / infinality - settings . sh

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

sudo mv / etc / profile .d / infinality - settings .sh / etc / infinality - settings .sh

echo - e '. /etc/infinality-settings.sh' >>

Если вы используете Linux Mint, обязательно выполните команды, написанные выше. Если любой другой дистрибутив, не использующий mdm, просто проигнорируйте их.

После всего этого можно перезагрузить систему и увидеть новое сглаживание, максимально приближенное к технологии ClearType, использующейся в Windows 7.

Результаты

Посмотреть на получившиеся результаты и сравнить их между собой можно в этой таблице:

Удаление infinality

Для удаления infinality и его репозитория следует выполнить следующие команды:

Доброго времени суток, Хабр. Увидел я недавно новую Ubuntu и стало мне завидно, что у нее шрифты красивее, чем в моей Mandriva (GNOME). И стал я копать. Копал и экспериментировал я долго, но в итоге я добился нужного результата. Хочу теперь вам рассказать как это у меня получилось. Сделал я это путем пересборки библиотек, которые отвечают за рендеринг шрифтов, с поддержкой ClearType-сглаживания. Не знаю, красивее чем в Ubuntu или нет, но мне нравятся. Итак, приступим.

Библиотеки

Для отрисовки шрифтов используются такие библиотеки:
Cairo — библиотека, предназначенная для рендеринга векторной графики.
Xft — свободная библиотека, предназначена чтобы использовать Freetype растеризер с X-расширением X Rendering Extension; обычно это нужно для для использования шрифтов FreeType с X Window System.
FreeType — библиотека, которая используется для растеризации шрифтов и операций над ними.

Исходники библиотек

Дело было с последними стабильными версиями, на сегодня это:
Cairo 1.8.8
Xft 2.1.14
FreeType 2.3.11

Основные патчи

За патчи огромное спасибо сообществу пользователей Arch Linux, у которых я их всех и нашел.
Каждый патч ничего сложного не делает, просто вносит некоторые изменения в исходники библиотек. Для их применения нужен пакет «patch» который найдете в репозиториях. Об его использовании и о его параметрах и ключах можно почитать здесь. Коды патчей обновлены для работы с новыми версиями библиотек. Если посмотреть код любого из них, то можно делать все это вручную путем добавления и замены кода в исходниках.

Xft:
libXft-2.1.14-lcd-cleartype.patch — то же самое что и для cairo. Это повлияло у меня на шрифты в Opera, Lotus Symphony.

FreeType:
bytecode.patch -включает рендеринг шрифтов, запатентованный компанией Apple, поэтому он выключен изначально. Это опционально, можно и не включать.
freetype-2.2.1-subpixel-disable-quantization.diff — название говорит само за себя, выключает квантование.
freetype-2.3.0-enable-spr.patch — включение субпиксельного рендеринга
freetype-2.2.1-enable-valid.patch
freetype-2.2.1-memcpy-fix.patch

У них еще есть патчи для сглаживания от 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 у меня с «нетронутыми» библиотеками:
1.

Firefox, пропатчен Cairo:
Теперь стало похоже на Убунту.
Полное (Full) уточнение (Hinting) шрифтов (в настройках шрифтов в GNOME):
2.
Слабое (Slight) уточнение (Hinting) шрифтов, которое в Убунту стоит всегда по умолчанию:
3.


Opera, пропатчен Xft:
Слабое (Slight) уточнение (Hinting) шрифтов:
4.

Firefox, пропатчен FreeType с bytecode.patch:
Полное (Full) уточнение (Hinting) шрифтов:
5.
Слабое (Slight) уточнение (Hinting) шрифтов:
Кстати это тоже выглядит как в Убунту.
6.

На последок рекомендую поигратся в настройках шрифтов в GNOME (или KDE), особенно с dpi. Можно еще поэксперементировать с ихними патчами, и добится лучшего результата.
На этом у меня все. Спасибо всем, надеюсь кому-то это пригодилось.

image

UPDATE:
По просьбам выкладываю сводную картину со всех 6-ти выше показаных сриншотов:

Отмечу, что в настройках шрифтов GNOME у меня все время было включено сглаживание «Субпиксельное (ЖК-мониторы)».
Также отмечу, что по скринам видно, что в Опере шрифты чуть темнее. Но это потому что Опера использует Xft, в то время как Фаерфокс (да и весь гном) — cairo. Отсюда вывод — разница в рендеринге libxft-cleartype и cairo-cleartype есть.

еще UPDATE:
Покопал я глубже, в исходниках патчей. Сравнил патч для Cairo и патч Xft. В них нашел весьма интересные и похожые строчки:
В патче Xft:
+static const int fir_filter[5] = < 0x10, 0x40, 0x70, 0x40, 0x10 >;
В патче Cairo:
+static const int fir_filter[5] = < 0x1C, 0x38, 0x55, 0x38, 0x1C >;
С комментария для этой строчки в Xft (/* note: keep the filter symetric, or bad things will happen */) я понял что это, какбы, массив размеров каких-то, частот или что-то в этом роде. Ну откуда мне знать-то?)) Но по названию массива можна подумать что там применялся алгоритм вот этой штуковины. )) Но все-же, откуда мне знать? Долго я не думал, и установил в патче для Cairo такие же шестнадцатиричные числа (размера, частоты?) в этом массиве как и в патче для Xft, пересобрал. И, о чудо, у меня везде теперь такие же темненькие и четкие шрифты как в Опере (Qt).
Firefox, пропатчены все библиотеки, полное (Full) уточнение (Hinting) шрифтов:
7.

Сравните с 5-м скрином.

Firefox, пропатчен только Cairo, слабое (Slight) уточнение (Hinting) шрифтов:
8.

Сравните с 3-м скрином и с 4-м скрином, где Опера.

Многие пользователи Windows при переходе на Ubuntu сразу же замечают разницу в шрифте и хотят установить те, к которым они привыкли.

Для корректного отображения шрифтов необходимо выбрать правильное разрешение экрана для вашего монитора

Это легко и просто делается. Для начала нужно установить сами шрифты.

Установка шрифтов

Копирование шрифтов

Если у Вас имеется параллельно установленная операционная система Windows, Вы можете скопировать используемые в ней шрифты.

Убедитесь, что локальный диск на котором установлена операционная система Windows примонтирован в вашей системе

Смысл операции заключается в том, чтоб скопировать шрифты в соответствующие каталоги, есть 2 варианта:

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

Все шрифты операционной системы Windows хранятся в папке: C:\WINDOWS\Fonts, что бы скопировать шрифты можно воспользоваться терминалом и следующими командами:

Здесь подразумевается, что локальный диск с операционный системой Windows примонтирован в папку /media/disk-1

Так же скопировать шрифты можно вручную, используя Файловый менеджер nautilus.

Установка из репозитория

Если установленной операционной системы Windows у Вас нет, то можно просто установить набор стандартных шрифтов Microsoft из репозитория командой:

Чтоб система увидела шрифты, нужно выполнить следующую команду в консоли:

На этом инсталляция шрифтов завершена.

Настройка шрифтов

Шрифты настраиваются там же, где и темы gnome. Заходим в меню Система→Параметры→Внешний вид, затем закладка «Шрифты». В списке должны были появиться шрифты из операционной системы Windows.
Устанавливаем все шрифты (кроме моноширинного) - tahoma 8, отрисовка - монохромная. Нажимаем кнопку «Подробнее» и устанавливаем следующие параметры:

На этом настройка шрифтов в системе закончена. При необходимости Вы можете настроить шрифты для отдельных приложений.

Ссылки

Форум - тема, посвященная установке и настройке шрифтов
Шрифты Windows - Убунтология

29 июн 2019, 11:07

Хочу LM 19.1 x64что касается интерфейса по аналогии с XP настроить.Шрифты все установил из Windows.Выставляю так:
Шрифт приложения - Tahoma Обычный 12
Шрифта документа - Tahoma Обычный 12
Шрифт рабочего стола - Tahoma Обычный 12
Шрифт заголовка окна - Tahoma Обычный 12
Моноширинный шрифт - Courier New 12

Так в XP у меня настроено,но что-то всё какое-то жирное выходит и непривычное.Скриншот дать не могу,щас в Windows сижу.Поискал решение,ничего путного не нашёл.Правда вот в этой статье автор чё то с настройками колдует:для маленьких шрифтов отключает сглаживание,как XP это делала.Кто понимает в этом, подскажите как мне тоже самое у себя сделать.Ну или вообще какие соображения может есть на этот счёт?

Сглаживание шрифтов

29 июн 2019, 17:51

Если разработчики посчитали, что по шрифты по умолчанию не должен быть как в Windows, то, полагаю, не из-за желания "выделиться", а действительно потому, что не графика не будeт выглядеть коряво. Не являюсь специалистом, но рискну предположить, что это может быть объяснимо разными механизмами прорисовки графического окружения в Windows и Linux. Автор упоминаемой статьи описывает свой путь решения по состоянию на январь 2013 года, а за 6 лет "много воды утекло" и то, что срабатывало ранее, сейчас может не срабатывать. К тому же, такая настройка является изменением штатного режима отображения и, соответственно, осуществляется на свой страх и риск без предоставления каких-либо гарантий. Может быть стоило бы попробовать взять эти шрифты не из Windows XP, а из Windows 7 или Windows 10 из робкого предположения, что за прошедшее время шрифты могли быть чуточку изменены. Да и механизм сглаживания в Windows и Linux, думаю, работает по-разному. Но это число личная точка зрения.

Сглаживание шрифтов

29 июн 2019, 18:05

Я тоже самое и там делал,и даже больше и нужного эффекта не достиг. Да и механизм сглаживания в Windows и Linux, думаю, работает по-разному Так что ничего нельзя сделать с таким разнобросом? Не может быть.

Последний раз редактировалось пользователем 1 Dja; всего редактировалось раз: 1
Причина: убрал урлы

Сглаживание шрифтов

29 июн 2019, 18:45

Так что ничего нельзя сделать с таким разнобросом? Не может быть.

В принципе, наверное, можно - если отключить сглаживание вообще. Но я, если честно, не представляю как можно жить со шрифтами с нижнего скриншота (windows) - это ж только глаза ломать все время. Вообще-то да, сразу после windows шрифты в линуксе кажутся несколько непривычными, но по прошествию небольшого времени привыкаешь, и загрузив обратно винду ужасаешься - как только раньше мог считатьее шрифты удобными. Ладно еще на Win7 - там субпиксельное сглаживание очень удачно скрывает угловатости. Но в более новых версиях винды этот механизм переработали, и на шрифты win10 в интерфейсе я уже без слез смотреть не могу.

Читайте также: