Настройка сглаживания шрифтов linux
С выходом FreeType2.7, настройки шрифтов несколько поменялись. Тут опишу как настроено у меня. Вкусы у всех конечно разные, но новичкам думаю будет интересно, + не напрягайте своё зрение, сделайте так как вам комфортно. В целом же обычно вкусы делятся на два лагеря: пухловатые шрифты (как у меня) и тонкие. Разница в настройках одна, если вам по душе тонкие, - поставьте вместо hintslight - hintfull.
Если у вас дисплей а-ля "Retina", поздравляю, - со шрифтами должно быть всё в полном порядке ;-)
Настройка шрифтов в три этапа:
1. Установка шрифтов.
2. Выбор рендеринга.
3. Изменение/создание файлов настроек ( /etc/fonts/local.conf .Xresources ).
1. Установить шрифты из репозитория: (Bitstream не ставлю, т.к. cемейство шрифтов DejaVu это модификация шрифтов Bitstream Vera).
Пакет - описание
ttf-croscore - шрифты из ChromeOs, они метрически совместимы с MS, и хорошо смотрятся, содержат Arimo, Tinos, Cousine и тп.
ttf-dejavu - базовые, возможно уже стоят у вас.
ttf-ubuntu-font-family - красивые, не вырвиглазные шрифты без засечек, использую в DE и текстовых документах.
ttf-inconsolata - шрифт для "коддинга", - можно не ставить.
ttf-liberation - базовые, возможно уже стоят у вас.
Пакет - описание
ttf-carlito - метрически совместим с MS Calibri
ttf-caladea - - метрически совместим с MS Cambria
ttf-droid-sans-mono-slashed-powerline-git - шрифт с "треугольником" для powerline, использую в ZSH prompt
По желанию: yaourt -S ttf-ms-win8 (содержит в себе ttf-ms-fonts, ttf-vista-fonts и ttf-win7-fonts, т.е. всё что надо включая Calibri и .т.п.)
Если устанавливаем свои шрифты:
скопируйте их в папку /usr/share/fonts/Мои_Шрифты
и выполните
2. Выбрать метод рендеринга:
Выполните
И приведите строку к такому виду:
3. Изменение файла настроек
создайте файл /etc/fonts/local.conf c таким содержимым (тут мы настроим отоброжение шрифтов, а также подменим MS шрифты на Chrome OS):
В файл
/.Xresources внесём следующие строки:
и выполним:
Также в настройках вашего DE поставьте сглаживание RGBa, вместо grayscale (такое доступно в Gnome и Cinnamon, в остальных не проверял).
Если используете приложения Java, то в файле /etc/environment добавьте следующую строку:
- это нужно для того, чтобы приложения Java ощущались и выглядели как GTK
Немного занудства:
Существует три основных семейства используемых в ОС/WEB шрифтов. Для более приятного восприятия можно одни шрифты заменить другими шрифтами из этого же семейства. Как например в случае отказа от использования шрифтов от MS, или в поиске наиболее хорошо отоброжаемых.
Семейство шрифтов - пример таких шрифтов
Serif (с засечками) - Times New Roman, Liberation Serif, Tinos, DejaVu Serif, Noto Serif
Sans-serif (без засечек) - Arial, Liberation Sans, Arimo, DejaVu Sans, Noto Sans
Monospace (моноширинные шрифты, - ширина каждого символа в таком семействе одинакова) - Courier New, Liberation Mono, Cousine, DejaVu Sans Mono, Noto mono
Пара скриншотов с настройками браузера, системы, и что получилось (смотрите в масштабе 1:1, на небольшом мониторе браузер не даёт просмотреть в масштабе 1:1, сохраните картинки для просмотра во вьювере (eog и т.п.)).
Скриншоты актуальны, если у вас такойже DPI как и у меня, - 96. В иныхслучах будет искажённое представление.
Превьюшки:
Написано опираясь на следующие статьи/форумы:
FreeType2 - изменён метод хинтинга по-умолчанию (использовано в разделе "Выбрать метод рендеринга")
Font configuration (использовано в разделе "Изменение файла настроек")
Metric-compatible fonts (использовано в разделе "Изменение файла настроек")
Improve Font Rendering (использовано в разделе "Изменение файла настроек")
Java Runtime Environment fonts (использовано в разделе "Изменение файла настроек")
Microsoft fonts (использовано в разделе "установить шрифты из репозитория")
Доброго времени суток, Хабр. Увидел я недавно новую 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. Можно еще поэксперементировать с ихними патчами, и добится лучшего результата.
На этом у меня все. Спасибо всем, надеюсь кому-то это пригодилось.
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-м скрином, где Опера.
К счастью, немного погуглив в интернете, я наткнулся на замечательный проект 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 .shecho - e '. /etc/infinality-settings.sh' >>
Если вы используете Linux Mint, обязательно выполните команды, написанные выше. Если любой другой дистрибутив, не использующий mdm, просто проигнорируйте их.
После всего этого можно перезагрузить систему и увидеть новое сглаживание, максимально приближенное к технологии ClearType, использующейся в Windows 7.
Результаты
Посмотреть на получившиеся результаты и сравнить их между собой можно в этой таблице:
Удаление infinality
Для удаления infinality и его репозитория следует выполнить следующие команды:
Улучшаем отображение шрифтов в Ubuntu Linux с помощью Infinality
Если вам кажется, что шрифты в графической среде Ubuntu Linux несколько размыты, и это вызывает повышенную утомляемость глаз, то можно попробовать улучшить отображение шрифтов с помощью пакета Infinality. Данный метод был проверен мной на графической оболочке Unity в составе Ubuntu 16.04 LTS а также на KDE Plasma в составе Kubuntu 16.04 LTS.
Добавляем репоризиторий, выполняем обновление кеша пакетов, обновляем систему и устанавливаем пакет:
После установки перезагружаем систему и запускаем скрипт выбора типа рендеринга шрифтов:
В данном случае я выбираю третий вариант: Linux шрифты.
Для любителей Windows шрифтов (6-8 варианты) для корректного отображения потребуется дополнительно установить базовый набор шрифтов Microsoft:
Ставим wine:
Копируем 2 шрифта Tahoma из каталога /usr/share/wine/fonts/ в каталоги:
Если ставить wine только из-за пары файлов шрифтов нет желания, можно попробовать сделать так:
В конечном итоге у меня после установки Infinality и и подгруженными Microsoft шрифтами даже даже со стилем Linux в Mozilla Firefox сайты ориентированные на Win-шрифты стали отображаться также, как они выглядят на Windows-системе в Internet Explorer
Например, изначально отображение одного из сайтов было таким:
После изменилось на аналогичное тому, как оно отображается в Windows:
Если эффект от Infinality не дал вам желаемого результата, что можно его удалить:
Fontconfig - это библиотека, разработанная для предоставления списка доступных шрифтов приложениям, а также для настройки того, как шрифты будут отображены: смотрите Wikipedia:Fontconfig. Библиотека FreeType freetype2 отображает (рендерит) шрифты, основываясь на этих настройках.
Хотя Fontconfig является стандартом в современном Linux, некоторые приложения полагаются на оригинальном способе отбора шрифтов и отображения, в X Logical Font Description.
Contents
Пути шрифтов
Шрифты, которые будут известны приложениям, должны быть каталогизированы для лёгкого и быстрого доступа.
Пути шрифтов изначально известные Fontconfig находятся в: /usr/share/fonts/ ,
/.fonts/ , - в настоящее время не рекомендуется). Fontconfig будет сканировать эти каталоги рекурсивно. Для простоты организации и установки, рекомендуется использовать эти пути шрифтов, когда добавляете шрифты.
Чтобы увидеть список известных Fontconfig шрифтов:
Для больших выводных форматов, смотрите fc-list(1) .
Проверьте известные пути шрифтов Xorg, посмотрев свой журнал:
- Вы также можете проверить список Xorg'а на наличие известных путей шрифтов с помощью команды xset q .
- Используйте /var/log/Xorg.0.log если Xorg запускается с правами суперпользователя.
Имейте в виду, что Xorg не ищет рекурсивно в каталоге /usr/share/fonts/ как это делает Fontconfig. Чтобы добавить путь, нужно указать полный путь:
Если вы хотите установить пути шрифтов на уровне пользователя, вы можете добавлять и удалять пути шрифтов по умолчанию, добавив следующую строку(и) в
Чтобы увидеть список известных шрифтов Xorg используйте xlsfonts , из пакета xorg-xlsfonts .
Настройка Fontconfig
Fontconfig описан на странице man fonts-conf.
Настройка может быть сделана для каждого пользователя отдельно, с помощью $XDG_CONFIG_HOME/fontconfig/fonts.conf , и на глобальном уровне с помощью /etc/fonts/local.conf . Установки в настройках для каждого пользователя, имеют приоритет над глобальной настройкой. Оба эти файла используют тот же синтаксис.
Примечание: Файлы настроек и каталоги:/.fontconfig/*.cache-* являются устаревшими с версии fontconfig 2.10.1 (переданной в апстрим) и не будут прочитаны по умолчанию в будущих версиях пакета. Новые пути в $XDG_CONFIG_HOME/fontconfig/fonts.conf , $XDG_CONFIG_HOME/fontconfig/conf.d/NN-name.conf и $XDG_CACHE_HOME/fontconfig/*.cache-* соответственно. Если используется второе расположение, убедитесь в правильном названии файла (где NN состоит из двух цифр, как 00 , 10 , или 99 ).
Fontconfig собирает все свои настройки в центральном файле ( /etc/fonts/fonts.conf ). Этот файл заменяется в ходе обновления fontconfig и не должен быть отредактирован. Fontconfig-совместимые приложения читают этот файл, чтобы узнать о доступных шрифтах и как они будут отображены. Этот файл представляет собой конгломерат из правил глобальных настроек ( /etc/fonts/local.conf ), настроенные предустановки в /etc/fonts/conf.d/ , и пользовательском файле настроек ( $XDG_CONFIG_HOME/fontconfig/fonts.conf ). fc-cache может быть использован для восстановления настроек fontconfig, хотя изменения будут видны только в недавно запущенных приложениях.
Примечание: Для некоторых рабочих сред (например GNOME и KDE) используется Панель Управления Шрифтами которая будет автоматически создавать или перезаписывать файл настроек шрифта пользователя. Для этих рабочих сред, лучше чтобы настройки соответствовали вашим уже определённым настройкам шрифтов, чтобы получить ожидаемое поведение.Файлы настроек Fontconfig используют формат XML и обязательный заголовок:
Примеры настроек в этой статье, пропускают эти тэги.
Предварительные установки
Предварительные установки есть в каталоге /etc/fonts/conf.avail . Они могут быть включены созданием символьной ссылки на них, для каждого пользователя и глобально, как описано в /etc/fonts/conf.d/README . Эти предварительные установки переопределят соответствие параметров в соответствующих файлах настроек.
Например, для включения sub-pixel (суб-пиксельного) RGB отображения глобально:
Тоже самое, но для настройки каждому пользователю:
Anti-aliasing (сглаживание)
Растеризация шрифтов преобразует данные векторного шрифта в растровые, так что они могут быть отображены. В результате могут появиться ступеньки/зубцы, из-за наложения (алиасинга). Методика известна как Анти-алиасинг/сглаживание (Anti-aliasing), и может быть использована для повышения разрешения видимых краев шрифта. Сглаживание включено (true) по умолчанию. Для того, чтобы отключить его:
Примечание: некоторые приложения, такие как GNOME могут переопределить настройки сглаживания по умолчанию.Hinting (Хинтинг)
Хинтование шрифта (также известное как инструктаж) - это использование математических инструкций для настройки отображения контура шрифта так, чтобы он был на одной линии с растрировой сеткой (т.е. пиксельной сеткой экрана). Ожидаемый эффект, - сделать шрифты на вид более чёткими, чтобы они были более читабельные. Шрифты выравниваются правильно без хинтинга, когда экран имеет 300 DPI. Доступно два типа Хинтинга.
Байт-код Переводчик (Byte-Code Interpreter, BCI)
Использование хинтинга BCI. Инструкции в шрифтах TrueType предоставляются в соответствии с интерпретатором FreeTypes. Хинтинг BCI прекрасно работает со шрифтами с хорошими инструкциями хинтинга. По умолчанию хинтинг включен (enabled). Для его отключения:
Autohinter (Авто Хинтинг)
Autohinter пытается сделать автоматический хинтинг и игнорирует существующую информацию хинтинга. Первоначально это было по умолчанию, поскольку шрифты TrueType2 были защищены патентом, но теперь срок патентов истёк, и там очень мало оснований, чтобы использовать Авто Хинтинг. Это лучше работает со шрифтами, которые поломанные или не содержат информацию по хинтингу, но это будет не оптимально для шрифтов с хорошей информацией хинтинга. К распространённым шрифтам Авто Хинтинг в дальейшем не будет полезным. По умолчанию автохинтинг отключен (disabled). Чтобы его включить:
Hintstyle (Стиль Хинтинга)
Hintstyle это сумма изменений шрифта, сделанных чтобы выстроить его по пиксельной сетке. Значения хинтинга: hintnone (без хинтинга), hintslight (лёгкий хинтинг), hintmedium (средний хинтинг), и hintfull (полный хинтинг). hintslight сделает шрифт более нечётким выстраивая по сетке, но сохранит лучше форму шрифта, в то время как hintfull сделает чётким шрифт, выровняет хорошо по пиксельной сетке, но больше потеряет форму шрифта. hintslight установлен по умолчанию. Для того, чтобы изменить его:
Примечание: некоторые приложения, такие как GNOME могут переопределить настройки хинтинга по умолчанию.Субпиксельное отображение
Большинство мониторов производятся сегодня используя спецификацию RGB (Red, Green, Blue, - Красный, Зелёный, Синий). Fontconfig'у нужно знать свой тип монитора, чтобы иметь возможность отображать шрифты правильно. Мониторы могут быть: RGB (наиболее распространенный), BGR, V-RGB (вертикальный), или даже V-BGR. Тест монитора можно найти здесь.
Чтобы включить субпиксельное отоброжение:
Примечание: Subpixel rendering effectively triples the horizontal (or vertical) resolution for fonts by making use of subpixels. The default autohinter and subpixel rendering are not designed to work together, hence you will want to enable the subpixel autohinter. Prior to freetype2 2.7, the subpixel hinting mode was configurable with the FT2_SUBPIXEL_HINTING environment variable. Possible values were 0 (disabled), 1 (Infinality) and 2 (minimal). From freetype2 2.7, subpixel hinting uses upstream's configuration method, which has a different syntax. Subpixel hinting mode configured in the file /etc/profile.d/freetype2.sh which includes a brief documentation. Possible values are truetype:interpreter-version=35 (classic mode/2.6 default), truetype:interpreter-version=38 ("Infinality" mode), truetype:interpreter-version=40 (minimal mode/2.7 default).LCD filter (ЖК-фильтр)
Фильтр lcddefault будет работать для большинства пользователей. Другие доступные фильтры, которые могут использоваться в особых случаях: lcdlight ; фильтр идеально подходит для шрифтов, которые выглядят слишком жирными или нечеткими, lcdlegacy , оригинальный фильтр Cairo; и lcdnone чтобы отключить его полностью.
Расширенная спецификация ЖК-фильтра (LCD filter)
Если налицо, встроенные ЖК-фильтры не являются удовлетворительными, можно настроить отображение шрифта очень особенно, путем создания пользовательского пакета freetype2 и модификации жестко закодированных фильтров. Система сборки Arch может быть использована для создания и установки пакетов из исходников.
Совет: С пакетами Infinality, ЖК-фильтр может быть изменён без пересборки.Во-первых, обновите freetype2 PKGBUILD как root:
Этот пример использует /var/abs/build в качестве каталога сборки, замените его в соответствии с вашей личной настройкой ABS. Загрузите и извлеките пакет freetype2 как обычный пользователь:
Отредактируйте файл src/freetype-VERSION/src/base/ftlcdfil.c и найдите определённые константы default_filter[5] :
Эта константа определяет применение низкочастотного фильтра к отоброжению символа. Изменить его по мере необходимости. Сохраните файл, соберите и установите пользовательский пакет:
Перезагрузитесь или перезапустите X. Теперь фильтр lcddefault должен отобразить шрифты по-другому.
Отключение авто хинтинга (auto-hinter) для жирных (bold) шрифтов
Авто хинтинг использует сложные методы для отображения шрифтов, но часто делает жирные шрифты слишком широкими. К счастью, решение может быть найдено в отключении авто хинтинга для жирных шрифтов, оставляя авто хинтинг для остальных:
Заменить или установить шрифты по умолчанию
Самый надёжный способ сделать это, добавить фрагмент XML, похожий на тот, как показано ниже. Использование атрибута "binding" (связывания) даст вам лучший результат, например, в Firefox где вы не можете изменить замену шрифтов. Это приведёт к использованию Ubuntu, вместо того чтобы использовать Georgia:
Альтернативный подход состоит в установке "предпочтительного" шрифта, но это работает только если оригинального шрифта нет в системе, в этом случае заданный шрифт будет заменен:
Белый список и чёрный список шрифтов
Элемент <selectfont> используется в сочетании с элементами выбора: <acceptfont> и <rejectfont> , - белого списка или черного списка шрифтов, для принятия перечня и согласования запросов. Самый простой и наиболее типичным случай использования его для <rejectfont> (отклонения) одного шрифта, который должен быть установлен, однако выходит сопоставимым со стандартным запросом шрифту, который вызывает проблемы в пользовательских интерфейсах. Во-первых, получите имя Family (семейства) как указано в самом шрифте:
Затем используйте это имя Family в строфе <rejectfont> :
Обычно, когда оба элемента объединены, <rejectfont> сначала используется в более общем согласовании glob для reject (отклонения) большой группы (таких, как целый каталог), затем после него используется <acceptfont> белый список отдельных шрифтов из большой группы чёрного списка.
Отключение растровых шрифтов
Чтобы отключить растровые шрифты (которые иногда используются в качестве «резерва» вместо отсутствующих шрифтов, в результате чего текст будет отображён некачественно), используйте 70-no-bitmaps.conf (который не размещается в FontConfig по умолчанию):
Чтобы отключить встроенные растровые шрифты у всех шрифтов:Чтобы отключить встроенные растровые шрифты для определенного шрифта:
Отключить масштабирование растровых шрифтов
Чтобы отключить масштабирование растровых шрифтов (которое часто делает их размытыми), удалите /etc/fonts/conf.d/10-scale-bitmap-fonts.conf .
Создать стили для жирных и курсивных «некомплектных» шрифтов
FreeType имеет возможность автоматически создавать italic (курсивные) и bold (жирные) стили для шрифтов, которые не имеют их, но только если это явно требуется приложению. Данные программы редко отправляют эти запросы. В этом разделе охватывается принуждение «вручную» генерировать отсутствующие стили.
Начните редактировать /usr/share/fonts/fonts.cache-1 как описано ниже. Храните изменённые копии в другом файле, поскольку обновление шрифтов с помощью fc-cache будет перезаписывать /usr/share/fonts/fonts.cache-1 .
Предположим что шрифт Dupree установлен:
Дублируйте строку, измените style=Regular на style=Bold или любой другой стиль. Также измените slant=0 на slant=100 для italic (курсива), weight=80 на weight=200 для bold (жирного), или объедините их для bold italic (жирного курсива):
Теперь добавьте необходимые изменения в $XDG_CONFIG_HOME/fontconfig/fonts.conf :
Совет: Используйте значение 'embolden' для существующих bold (жирный) шрифтов, для того чтобы сделать их ещё жирнее.Изменение главного правила
Эта статья или раздел нуждается в переводе
Fontconfig обрабатывает файлы /etc/fonts/conf.d в числовом порядке. Это позволяет правилам или файлам переопределять друг друга, но часто сбивает пользователей с толку о том, какой файл будет анализарован последним.
Чтобы гарантировать, что персональные настройки имеют приоритет над любыми другими правилами, измените их порядок:
Это изменение окажется ненужным в большинстве случаев, так как пользователь получит достаточно контроля по умолчанию, чтобы установить собственные предпочтения шрифта. Такие как: хинтинг, свойства сглаживания, псевдонимы новых шрифтов в общих семействах шрифтов и т. д.
Запрос текущих настроек
Чтобы узнать, какие настройки вступили в силу, используйте fc-match --verbose . К примеру:
Приложения без поддержки fontconfig
Некоторые приложения, как Urxvt игнорируют настройки fontconfig. Вы можете обойти эту проблему с помощью
Убедитесь, что настройки загружаются должным образом, когда запускается X с xrdb -q (для получения дополнительной информации смотрите статью Ресурсы Х).
Решение проблем
Искаженные шрифты
Примечание: 96 DPI не является стандартом. Вы должны использовать фактическое DPI монитора, чтобы получить надлежащее отображение шрифтов, особенно при использовании субпиксельного отображения.Если шрифты еще неожиданно большие или маленькие, с плохими пропорциями или просто отображаются плохо, то Fontconfig может использовать неверный DPI.
Fontconfig должен быть в состоянии определить параметры DPI, обнаруженные сервером Xorg. Вы можете проверить автоматическое обнаружение DPI с помощью xdpyinfo (предоставляется пакетом xorg-xdpyinfo ):
Если DPI определяется некорректно (обычно из-за неправильного EDID монитора), вы можете указать его вручную в настройках Xorg, смотрите Размер дисплея/DPI. Это рекомендуемое решение, но оно не может работать c драйверами, в которых есть баги/ошибки.
Fontconfig пользуется по умолчанию переменной Xft.dpi, если она установлена. Xft.dpi обычно устанавливается окружением рабочего стола (обычно в настройках DPI Xorg'а) либо вручную в
/.Xresources . Воспользуйтесь xrdb для получения значения:
Те, кто еще имеют проблемы, могут вернуться к ручной установке DPI используя FontConfig:
Calibri, Cambria, Monaco, и т. д. не отображаются правильно
Некоторые масштабируемые шрифты имеют встроенные растровые версии, которые предоставляются, главным образом, при меньших размерах. В этом случае использование Metric-compatible fonts в качестве замены, может улучшить отображение.
You can also force using scalable fonts at all sizes by disabling embedded bitmap, sacrificing some rendering quality.
Приложения переопределяют hinting
Некоторые приложения или окружения рабочего стола, по умолчанию, могут переопределять настройки fontconfig, такие как хинтинг и сглаживание. Это может случится с GNOME 3, например когда вы используете приложения Qt, как vlc или smplayer . В таких случаях используйте специальную программу для применения настроек. Для GNOME, попробуйте gnome-tweaks и установите сглаживание в Rgba вместо установленного по умолчанию Grayscale .
Приложения не используют hinting из настроек DE
Например, в GNOME иногда случается, что Firefox применяет полный хинтинг (full hinting) даже если он установлен на "none" в настройках GNOME, что в результате приводит к резким и широким шрифтам. В этом случае вам придётся добавить настройку хинтинга в ваш файл fonts.conf :
В этом примере хинтинг установлен на "grayscale".
Неправильный hinting в приложениях GTK на НЕ-Gnome системах
Эта статья или раздел нуждается в переводе
GNOME использует систему настройки отображения шрифтов XSETTINGS. Без gnome-settings-daemon, приложения GTK полагаются на fontconfig, но некоторые шрифты получают неправильный хинтинг, заставляя их выглядеть слишком жирными или светлыми.
Простым решением, в качестве замены gnome-settings-daemon, будет использование xsettingsd-git AUR чтобы предоставить настройки, например:
Или вы можете написать настройки шрифтов, как директивы Xft.* в
/.Xresources без использования настроек демона.
Проблема шрифтов в Сгенерированных файлах PDF
Если следующая команда
то, скорее всего, растровый шрифт обеспечивается xorg-fonts-75dpi , шрифт будет встроен в PDF сгенерированный каким-либо приложением с помощью "Печать в файл" или "Экспорт". Скорее всего растровый шрифт был установлен в результате установки всей группы xorg (что обычно НЕ рекомендуется). Чтобы решить проблему растровых шрифтов, вы можете удлить пакет. Установите gsfonts (Type 1) или tex-gyre-fonts (OpenType) для соответствующей свободной замены Helvetica (и других шрифтоф на основе PostScript/PDF).
Также эта проблема может появится при открытии PDF, которому требуется Helvetica, и он не встроен для просмотра.
Читайте также: