Как я готовил шрифты в debian 10 Buster

На линукс я пересел с винды. Первый вопрос в никуда: почему в линуксе из коробки такие ужасные шрифты? Да, мне это было интересно и поначалу тревоги не вызвало, так как искренне считал, что всякие разные настройки обязательно должны быть в линуксе и их нужно просто подкрутить, чтобы получить шрифты виндового качества. Но затем эта проблема стала основной, достающей меня непрерывно. Виндо-пользователи в моем окружении ходили и едко насмехались над моими "качественными" шрифтами в линуксе. Неужели сложно нормально это всё в дистрибутиве сразу прописать и настроить для пользователя? Вообще говоря, сколько помню в линухе, в любых дистрибутивах до 2018, года шрифты были откровенное говно. Да, мыльное, унылое говно, что бы вы ни делали и какие бы то ни было блоги и рекомендации не читали. И не надо рассказывать, что это такая фича. Нет это не фича, это было просто обычное, банальное говно. И никакие настройки , никакие infinality, никакие ручные, автоматические патчи, настройки не помогали. Шрифты были мыльные, с разной толщиной (особенно доставляли буквы типа Ш и Щ). Все варировалось вокруг вопроса много ли или мало вы себе "мыла" на экран добавите и будете дальше с этим жить-поживать. То есть, выбор бинарный: вы либо получаете "мыло" и более или менее равномерную толщину глифа, либо резкие, но без хинтинга и разной рандомной толшиной глиф (даже внутри одной буквы). Особенно доставляли приколы с буквой О, которая могла превратиться в полуовал с одной стороны. В GTK приложениях на KDE десктопе, люди в панике лазали по форумам в поисках решений, так как для qt приложений какая-то реакция на изменение настроек еще просматривалась, а в Firefox, например, уже никакой реакции не было практически ни на какие настройки уровня хинтинга, и можно было биться головой о клавиатуру и монитор сколько угодно. Всё, повторяю ВСЁ, что я находил в инете на предмет настройки шрифтов, не давало возможности получить шрифты с равномерным глифом и резким переходом ink->background без муара и гребаного "мыла". Хотя, надо признать, что дистрибутив UBUNTU продвинулся в отношении шрифтов дальше других, и они при помощи забивания XYZ на все патенты, патчили свои freetype  либы, какими-то полулегальными алгоритмами или, что-то там всё же делали в настройках, что оно рисовало шрифты с использованием ихнего же шрифта "UBUNTU" на четверку с минусом. Но зато глиф у них был равномерный (даже в кириллице) по толщине и "мыла" было не так много, но оно все же было, и это был просто злобный линуксойдный замкнутый пи..ц, с которым НИЧЕГО нельзя было поделать! Глаза готовы были вытечь в стоящую рядом с клавой чашку холодного чая к концу рабочего дня.

Короче, не помогало НИЧЕГО! Как вдруг у жадного микрософта и бессовестных огрызков закончились патенты на очевидные и правильные, как топор, алгоритмы рисования шрифтов, и свершилось оно - libfreetype включил наконец все алгоритмы качественного хинтинга в компиляцию по дефолту. Без преувеличения, случилось чудо! И теперь можно получить от линукса те шрифты, которые пользователи MS Windows и MAC привыкли иметь на своих десктопах.

Сразу скажу, я привык к KDE Plasma десктопу. Унылое UNITY убунты мне не интересно как класс. Поэтому, дальше речь пойдет только о варианте, как настроить нормальные шрифты для Debian 10 Buster с десктопом KDE. Причем, сделать это так, чтобы шрифты были перфектные (идеальные) не только в родных QT приложениях, но и в тех, которые созданы и работают под GTK, Xfce и прочее графическое окружение.

 

Для того, чтобы понять какое качество шрифтов для меня перфектно, вот BMP скрины с моего текущего рабочего PLASMA десктопа QT и GTK приложений, которые получаются после настроек, приведенных в данном рекорде:

  • Текстовый редактор QT native Screenshot
  • Krusader QT native Screenshot
  • PHP Shtorm (я думаю это xfce, хотя не факт чего там ява использует для рисования, но точно уж не QT) Screenshot
  • Wine (это вообще непонятно как работает, но тем не менее) Screenshot
  • Firefox - Yandex Home Page (GTK3) Screenshot
  • Firefox - BBC News (мелкий шрифт) Screenshot

Ну вот как-то так. Это то, что я называю "мыла" нет, а местные любители винды в нашем офисе ходят теперь и завидуют молча :)

Теперь о том, как такого добиться по шагам. Эта инструкция выстрадана лично мной, для варианта Debian 10 Buster, KDE desktop, Plasma, QT5.11

После установки дебиана нам понадобятся совершить следующие действия:

1) монитор 2к и более (если не 2к а full HD, то совсем избавиться от "мыла" в шрифтах не получится, но оно снизится до приемлемого уровня)

2) Если freetype library не самой последней версии, то проапдейтить, вплоть до того, чтобы скачать исходники и накомпилять. Для Debian 10 это не требуется, но если вы будете применять эту инструкцию для Debian 9 Stretch, то обновить freetype через исходники будет необходимо. Связано это с тем, что начиная с какого-то момента (2018г или чуть ранее) закончились патенты жадных MS и огрызков. В результате, начиная с версии 2.8.1 убраны все ограничения и включены максимально профитные алгоритмы хинтинга, без которых не добиться идеальных шрифтов. Конкретно у меня стоит версия freetype-2.10.1 Из коробки Debian 10 имеет freetype-2.9.x и с ним тоже должно работать без перекомпиляции. Но в Debian 9 из коробки неправильная низкая версия этой библиотеки, поэтому качайте с github свежак и компиляйте с дефолтными параметрами - ничего особенного в ./configure включать не требуется.

3) Поставить шрифты
- Arial
- Courier
- Liberation
- Tahoma
- Verdana

apt-get install fonts-liberation fonts-liberation2 ttf-mscorefonts-installer


Может так получиться, что Tahoma и Verdana вероятно придется стырить у винды. Тырим прямо файлы ttf и закидываем в каталог со шрифтами /usr/share/fonts/что_то_еще в том случае, если ttf-mscorefonts-installer их не содержит. У меня выглядит так:

sneg@sneg:/usr/share/fonts$ find ./ -iname "Tahoma*"
./truetype/msttcorefonts/tahomabd.ttf
./truetype/msttcorefonts/tahoma.ttf

sneg@sneg:/usr/share/fonts$ find ./ -iname "Verdana*"
./truetype/msttcorefonts/verdanab.ttf
./truetype/msttcorefonts/Verdana.ttf
./truetype/msttcorefonts/Verdana_Italic.ttf
./truetype/msttcorefonts/verdana.ttf
./truetype/msttcorefonts/verdanaz.ttf
./truetype/msttcorefonts/Verdana_Bold_Italic.ttf
./truetype/msttcorefonts/Verdana_Bold.ttf
./truetype/msttcorefonts/verdanai.ttf
sneg@sneg:/usr/share/fonts$

sneg@sneg:/usr/share/fonts$ find ./ -iname "Liberation**"
./truetype/liberation
./truetype/liberation/LiberationMono-Bold.ttf
./truetype/liberation/LiberationSansNarrow-Italic.ttf
./truetype/liberation/LiberationSansNarrow-Regular.ttf
./truetype/liberation/LiberationSansNarrow-BoldItalic.ttf
./truetype/liberation/LiberationSansNarrow-Bold.ttf
./truetype/liberation/LiberationMono-Regular.ttf
./truetype/liberation/LiberationSerif-Bold.ttf
./truetype/liberation/LiberationSerif-BoldItalic.ttf
./truetype/liberation/LiberationSerif-Italic.ttf
./truetype/liberation/LiberationSans-BoldItalic.ttf
./truetype/liberation/LiberationSerif-Regular.ttf
./truetype/liberation/LiberationMono-Italic.ttf
./truetype/liberation/LiberationSans-Regular.ttf
./truetype/liberation/LiberationMono-BoldItalic.ttf
./truetype/liberation/LiberationSans-Bold.ttf
./truetype/liberation/LiberationSans-Italic.ttf
./truetype/liberation2
./truetype/liberation2/LiberationMono-Bold.ttf
./truetype/liberation2/LiberationMono-Regular.ttf
./truetype/liberation2/LiberationSerif-Bold.ttf
./truetype/liberation2/LiberationSerif-BoldItalic.ttf
./truetype/liberation2/LiberationSerif-Italic.ttf
./truetype/liberation2/LiberationSans-BoldItalic.ttf
./truetype/liberation2/LiberationSerif-Regular.ttf
./truetype/liberation2/LiberationMono-Italic.ttf
./truetype/liberation2/LiberationSans-Regular.ttf
./truetype/liberation2/LiberationMono-BoldItalic.ttf
./truetype/liberation2/LiberationSans-Bold.ttf
./truetype/liberation2/LiberationSans-Italic.ttf
sneg@sneg:/usr/share/fonts$


После установки нужно обновить кэш шрифтов:


fc-cache -f

Отдельно, на примере тахомы, обращу внимание на тот факт, что шрифт содержит отдельно файл tahoma.ttf и отдельно tahomabd.ttf То есть, надо понимать, что для того чтобы получить качественный Tahoma Bold нужен именно tahomabd.ttf, содержащий нативный правильный внутренний хинтинг. Конечно, freetype может путем вычисления попытаться отрисовать tahoma bold на базе tahoma.ttf но это будет говно шрифт. И это именно то, от чего я пытался избавиться, и оно получится, если вы все сделаете по инструкции.

4) Убеждаемся, что теперь freetype цепляет их правильно (в особенности шрифты с bold атрибутом в запросе):

sneg@sneg:/home$ fc-match "Courier"
Courier_New.ttf: "Courier New" "Обычный"
sneg@sneg:/home$ fc-match "Tahoma"
tahoma.ttf: "Tahoma" "Обычный"
sneg@sneg:/home$ fc-match "Verdana"
Verdana.ttf: "Verdana" "Обычный"
sneg@sneg:/home$ fc-match "Arial"
Arial.ttf: "Arial" "Обычный"
sneg@sneg:/home$ fc-match "Liberation Mono"
LiberationMono-Regular.ttf: "Liberation Mono" "Regular"
sneg@sneg:/home$ fc-match tahoma:bold
tahomabd.ttf: "Tahoma" "Полужирный"
sneg@sneg:/home$ fc-match verdana:bold
Verdana_Bold.ttf: "Verdana" "Полужирный"
sneg@sneg:/home$


Для моношрифтов самый качественный рендеринг у шрифта Liberation Mono. А шрифты Droids, DejaVu, Bitstream-Vera они отстойные и хинтинг у них дерьмовый. Хотя почему-то именно их пытаются дистрибутивы продвигать по дефолту (особенно в правилах подмены всяких Sans шрифтов).

Если fc-match показывает какое-то несоответствие, например на Arial говорит, что цепляет какой-то DejaVu, то идем в папку:


cd /etc/fonts/conf.d


там куча xml файлов с правилами подмены. Мы пытаемся понять, какое правило подменяет наш Arial на странное говно. Подмена осуществляется именно там в правилах. Ищите по инету правила синтаксиса этих файлов, они расписаны довольно подробно и широко.

Если там не найдено правило подмены, то еще один вариант - это в самом домашнем ~/ каталоге текущего юзера. Там есть более приоритетный файл ~/.fonts.conf возможно он содержит более приоритетное правило. Этот файл нам еще понадобится, поэтому далеко его не убираем.

файл ~/.fonts.conf должен быть symlink на ~/.config/fontconfig/fonts.conf

Или поддерживайте полную копию. Подозреваю, что некоторые приложения тупо лезут на прямую в ~/.config/fontconfig/fonts.conf, а некоторые в ~/.fonts.conf

5) после того, как все шрифты установлены, нужно задать их правильно в настройках для окружения десктопов:

- KDE
- GTK-2
- GTK-3
- Xfce

Хотя установлен только один десктоп - KDE Plasma, но жопа состоит в том, что все эти 4 среды частично используют настройки друг друга, а частично цепляют их из своих оригинальных специфичных файлов конфигов. А бывает так, что некоторые приложения целенаправленно лезут напрямую в какой-то файл конфига специфичный для того десктопа, который для них нативен, вместо того, чтобы спросить настройку через DBUS. Этот зоопарк никак не лечится, кроме как подготовкой всех возможных конфигов и костылей, которые могут быть зацеплены разными legacy приложениями в разных ситуациях в зависимости от продвинутости авторов, которые эти приложения писали. Системы унифицированного подхода для получения настроек по шрифтам, как правило, никакой нет. И каждое приложение может запросто изобрести свое собственное колесо в зависимости от той графической среды, для которой оно писано изначально. Однако, максимальный уровень полёта фантазий в любом случае находится в границах следующего списка настроечных файлов, которые представлены ниже.

Итак, для дальнейшей работы нам потребуются следующие файлы разных конфигов:

~/.gtkrc-2.0-kde4
~/.gtkrc-2.0
~/.Xresources
~/.config/gtk-3.0/settings.ini
~/.config/kdeglobals
~/.config/kcmfonts
~/.Xdefaults
~/.fonts.conf

Если каких-то файлов не существует, то мы их создаем, не стесняемся :)

Иногда отдельные упорные super-duper font-settings админы хотят подкрутить что-то в файле /etc/fonts/local.conf Ну скажу так, такая припарка затронет лишь 5% софта, из которых 90% вам на..х не нужна и вы никогда его не пользуете. Поэтому, если вам хочется, то можете сюда задублировать ~/.fonts.conf Но, как показывает практика, смысла нет.

Отдельных "теплых" слов заслуживают нано-блоггеры, которые предлагают поставить qt5ct и чего-там настроить. Механизм работы этого костыля основан на создании некоторого файла схожего по параметрам с ~/.config/kdeglobals и переменных окружения XDG_SESSION_DESKTOP, XDG_CURRENT_DESKTOP, QT_QPA_PLATFORMTHEME. У меня они показывают вот что:

sneg@sneg:/home$ env | grep -E '(KDE|QT)'
XDG_SESSION_DESKTOP=KDE
XDG_CURRENT_DESKTOP=KDE
KDE_SESSION_UID=1000
KDE_SESSION_VERSION=5
QT_AUTO_SCREEN_SCALE_FACTOR=0
QT_ACCESSIBILITY=1
KDE_FULL_SESSION=true

После qt5ct должно быть что-то такое:

XDG_SESSION_DESKTOP=KDE
XDG_CURRENT_DESKTOP=KDE
QT_QPA_PLATFORMTHEME=QT5CT

При старте QT5 приложение подхватывает из env окружения эти значения и лезет не в kdeglobals, а в новый файл настроек созданный qt5ct. Но во-первых, поддержа в коде QT5 значения QT_QPA_PLATFORMTHEME=QT5CT довольно отстойная (намного хуже, чем дефолтное KDE) и не все параметры отрабатываются так, как об этом думают создатели qt5ct. А во-вторых, зачем плодить баян, если есть штатный ~/.config/kdeglobals ?? Поэтому, зная как это работает, мы не будем идти путем bla-bla-bla блоггеров, которые даже не удосуживаются изучать некоторые полезные исходные коды, и не будем использовать qt5ct. А если вы уже поставили это г..., то ваш путь atp-get purge qt5ct и т.д. по стандартам. Верните переменные окружения XDG_SESSION_DESKTOP и XDG_CURRENT_DESKTOP в дефолтное KDE значение, а QT_QPA_PLATFORMTHEME удалите из env совсем. И идите дальше к п.6 моих рекомендаций.

6) Выясняем свой DPI. Делаем это при помощи линейки и калькулятора. Как это делать расписывать здесь не буду. Алгоритмов вычисления полно на разных форумах и блогах, поищите сами. Для доверчивых существует утилита xdpyinfo. Она печатает на экране ваш dpi. Ну по мне так линейка или штангель дает более надежную информацию.

У меня для монитора 2к получилось 118 dpi, а для full hd монитора будет скорее всего 96dpi. Но вы должны выяснить это точно перед тем, как двигаться дальше.

7) Открываем стандартные настройки KDE через меню плазмы


Меню -> Настройки -> Параметры системы -> Шрифты
Настраиваем:
Обычный текст: Verdana 10
Моноширинный: Liberation Mono 10
Маленький: Verdana 8
Панель инструментов: Verdana 9
Меню: Verdana 10
Заголовок окна: Verdana 10
Сглаживание: Вкл
Тип субпиксельной отрисовки: Как во всей системе
Стиль хинтинга: Как во всей системе
Использовать другой DPI: 118 (Это мой, у вас будет какой-то свой)


Теперь идем в меню:
Меню -> Настройки -> Параметры системы -> Оформление приложений
Выбираем закладку Стиль программ GNOME (GTK+) (Если такой закладки нет, то установите этот пакет через apt-get)
здесь выбираем шрифт: Verdana 10

Остальные настройки темы и курсоров ставьте на свой вкус. После проделанных изменений, все настройки применяем и сохраняем

8) открываем (если не существует, то создать как ссылку на ~/.config/fontconfig/fonts.conf )
редактором файл ~/.fonts.conf и заменяем полностью его содержимое на:

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<dir>~/.fonts</dir>
<match target="font">
<edit name="rgba" mode="assign">
<const>rgb</const>
</edit>
<edit name="hinting" mode="assign">
<bool>true</bool>
</edit>
<edit name="embeddedbitmap" mode="assign">
<bool>true</bool>
</edit>
<edit name="autohint" mode="assign">
<bool>false</bool>
</edit>
<edit name="hintstyle" mode="assign">
<const>hintfull</const>
</edit>
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
<edit name="lcdfilter" mode="assign">
<const>lcddefault</const>
</edit>
</match>
</fontconfig>

Сохраняем его содержимое. Желающие могут в wiki помойке найти, что там и о чём. Здесь углубляться не будем.

Отдельные представители линукс-админсткой тусовки сейчас начнут мне делать замечания о том, почему я в этом файле dpi не зафорсил через "assign" узел. Отвечаю: ни один рендер шрифтов QT5 этот параметр отсюда не читает, а GTK приложения сюда вообще не заходят. Не всё то правда, что WIKIпедия-помойка пишет. Поэтому, комментаторы по этому поводу приходят сюда только с куском исходного кода, который доказывает, что DPI из этого файла хоть на что-то влияет. Если пример конкретных строк исходников не приведёте, я вам даже отвечать не буду. Если же у вас подгорает, то можете сюда добавить assign dpi XML узел, примеров у псевдо блоггеров полно на эту тему.

9) Открываем теперь файл ~/.config/kdeglobals редактором

находим секцию:
[General]
В ней нас интересуют следующие ключи:

XftAntialias=true
XftHintStyle=
XftSubPixel=
fixed=Liberation Mono,10,-1,5,50,0,0,0,0,0,Обычный
font=Verdana,10,-1,5,50,0,0,0,0,0,Обычный
menuFont=Verdana,10,-1,5,50,0,0,0,0,0,Обычный
smallestReadableFont=Verdana,8,-1,5,50,0,0,0,0,0,Обычный
toolBarFont=Verdana,9,-1,5,50,0,0,0,0,0,Обычный

Задача - убрать в конце "Обычный". Это нужно для того, чтобы qt 5.11 не глючило при попытке нативной отрисовки Bold & Italic шрифтов. Начиная с версии qt 5.9 писатели qt вдруг обнаружили, что у них есть глюк при выборе шрифта в классе QFont который игнорировал параметр ", Regular" в строке параметров шрифта. Они "исправили" его. Да, теперь он работает, но в результате bold шрифты qt пытается рисовать теперь не нативно из файла tahomabd.ttf, а само что-то там вычисляет из файла tahoma.ttf, и вычисляет глючно. А всё потому, что ни одно приложение не просит bold шрифт по имени "Tahoma Bold", а просит его как "Tahoma", а потом говорит QFont.setBold(true). Я вот хочу спросить QT писателей, если конечно они внезапно прочитают мои дневники, вы вот, прежде чем что-то менять на эту тему, вопрос глубоко изучили? Вы все сотни тысяч уже готовых QT4/5 приложений и их авторов хотите заставить, чтобы они начали менять свои исходники только потому, что вы вдруг решили, что у вас 10 лет в коде глюк, который работает не так как вами задумано, но именно так, как всем кроме вас нравится? Вы им уведомления уже разослали, что теперь надо шрифты вызывать не просто по имени, но и доблять атрибут прямо к имени шрифта, если хотите натива в рендеринге?

Патчить qt 5.11 на предмет setBold() и прочего долго и не продуктивно, поэтому, чтобы заставить qt 5.11 брать нативные ttf файлы для bold и italic традиционными QT приложениями нужно в описании шрифтов убрать последний параметр ", Обычный" или ", Regular". Откуда такая странная и неочевидная связь между удалением этого куска текста из параметра описания шрифта и ожидаемым результатом, углубляться не буду. Особо любопытные могут отправиться изучать исходники QT5.11, а у верующих должно получиться так:

[General]
XftAntialias=true
XftHintStyle=
XftSubPixel=
fixed=Liberation Mono,10,-1,5,50,0,0,0,0,0
font=Verdana,10,-1,5,50,0,0,0,0,0
menuFont=Verdana,10,-1,5,50,0,0,0,0,0
smallestReadableFont=Verdana,8,-1,5,50,0,0,0,0,0
toolBarFont=Verdana,9,-1,5,50,0,0,0,0,0

еще одно место в секции
[WM]
activeFont=Verdana,10,-1,5,50,0,0,0,0,0,Обычный

нужно привести к виду:
[WM]
activeFont=Verdana,10,-1,5,50,0,0,0,0,0


Сохраняем ~/.config/kdeglobals

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

Теперь помним, что если мы опять в графике исправим секцию шрифтов и сохраним изменения,
то параметр ", обычный" вернется и тогда снова идем в файл ~/.config/kdeglobals
и удаляем его вновь.

10) Заставляем приложения GTK-2.0 работать с человеческим шрифтом


Для этого открываем файл ~/.gtkrc-2.0-kde4 или создаем его, если он не создан.

Внутри должно быть примерно такое:

# File created by KDE Gtk Config
# Configs for GTK2 programs

include "/usr/share/themes/Breeze/gtk-2.0/gtkrc"
style "user-font"
{
font_name="Verdana"
}
widget_class "*" style "user-font"
gtk-font-name="Verdana 10.5"
gtk-theme-name="Breeze"
gtk-icon-theme-name="oxygen"
gtk-fallback-icon-theme="Adwaita"
gtk-cursor-theme-name="Classic-Flat-White"
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-menu-images=1
gtk-button-images=1
gtk-primary-button-warps-slider=0

Основное здесь: font_name="Verdana" и gtk-font-name="Verdana 10.5"
Если просматривается что-то типа "Обычный" или "Regular", то убираем их. Остальные ключи ставим по своему вкусу. Размер 10.5 влияет на размер шрифта по умолчанию. Помним об этом и правим его, если в GTK приложениях меню слишком мелкое. И да, дробное выражение тоже поддерживается!


Еще один файл для gtk-2.0:
~/.gtkrc-2.0

Если его нет, то создаем его. Его содержимое должно в точности повторять содержимое файла ~/.gtkrc-2.0-kde4
Можно просто создать symlink, если редактировать в лом.

11) GTK-3.0

Для таких приложений нужно открыть или создать файл ~/.config/gtk-3.0/settings.ini
Проконтролировать, чтобы его содержимое было таким:

[Settings]
gtk-application-prefer-dark-theme=false
gtk-button-images=1
gtk-cursor-theme-name=Classic-Flat-White
gtk-fallback-icon-theme=Adwaita
gtk-font-name=Verdana 10.5
gtk-icon-theme-name=oxygen
gtk-menu-images=1
gtk-primary-button-warps-slider=0
gtk-theme-name=Breeze
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-xft-hinting=1
gtk-xft-hintstyle=hintfull
gtk-xft-rgba=rgb

Основные ключи, которые нужно проконтроллировать: gtk-font-name, gtk-xft-hinting, gtk-xft-hintstyle, gtk-xft-rgba
Остальные ставьте по своему вкусу. Мой размер 10.5 можете исправить под себя.

12) обучаем шрифтам приложения XFCE:

Открываем или создаем файл ~/.Xresources
Его содержимое должно быть таким:

Xft.autohint: 0
Xft.hinting: 1
Xft.lcdfilter: lcddefault
Xft.hintstyle: hintfull
Xft.antialias: 1
Xft.dpi: 118
Xft.rgba: rgb

Xft.dpi - ставим своё, вычисленное


открываем или создаем файл ~/.Xdefaults
Его содержимое должно быть таким:

Xft.autohint: 0
Xft.hinting: 1
Xft.lcdfilter: lcddefault
Xft.hintstyle: hintfull
Xft.antialias: 1
Xft.dpi: 118
Xft.rgba: rgb

Xft.dpi - ставим своё, вычисленное


13) Отдельные странные приложения пытаются узнать dpi напрямую из такого файла: ~/.config/kcmfonts

Поэтому мы редактируем его, и создаем с содержимым таким:


[General]
dontChangeAASettings=false
forceFontDPI=118

forceFontDPI - устанавливаем своё

14) После всех этих изменений делаем reboot.


После ребута убеждаемся, что мы видим следующие настройки:

sneg@sneg:/etc/fonts/conf.d$ xrdb -query | grep Xft
Xft.antialias: 1
Xft.autohint: 0
Xft.dpi: 118
Xft.hinting: -1
Xft.hintstyle: hintfull
Xft.lcdfilter: lcddefault
Xft.rgba: rgb
sneg@sneg:/etc/fonts/conf.d$

Xft.hinting=-1 <- Это означает "по умолчанию". Похоже .Xdefaults не читается автоматически.
Тогда можно попробовать насильно затолкать:


xrdb -merge ~/.Xresources

После этого Xft.hinting должно показывать =1 На самом деле, -1 или +1 я разницы для приложений не заметил. 99%, что все приложения -1 воспринимают как 1

Теперь убеждаемся, что gtk подхватило настройки:

sneg@sneg:~$ gtk-query-settings | grep xft
gtk-xft-antialias: 1
gtk-xft-hinting: 1
gtk-xft-hintstyle: "hintfull"
gtk-xft-rgba: "rgb"
gtk-xft-dpi: 120832
sneg@sneg:~$


gtk-xft-dpi у вас будет свое. В моем случае 120832 = 118dpi


15) Теперь во всех своих любимых приложениях в настройках выбирайте шрифты:
- Liberation Mono
- Liberation Sans
- Verdana
- Courier

Для Wine хорошо смотрятся Arial и Liberation Sans

enjoy :))))

P.S.

И помним, что если поковыряли настроки в визульном редакторе
Меню -> Настройки -> Параметры системы -> Шрифты
Меню -> Настройки -> Параметры системы -> Оформление приложений

То идем и заново проверяем файл ~/.config/kdeglobals как минимум, а
возможно еще поехал файл ~/.fonts.conf