Font configuration (Русский)/Examples (Русский)
Основная статья: Настройка шрифтов.
Настройки могут варьироваться в значительной степени. Пожалуйста, приводите примеры настроек Fontconfig с объяснением того, что они делают.
Хинтованные шрифты
~/.config/fontconfig/fonts.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<match target="font">
<edit mode="assign" name="antialias">
<bool>true</bool>
</edit>
<edit mode="assign" name="embeddedbitmap">
<bool>false</bool>
</edit>
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
<edit mode="assign" name="hintstyle">
<const>hintslight</const>
</edit>
<edit mode="assign" name="lcdfilter">
<const>lcddefault</const>
</edit>
<edit mode="assign" name="rgba">
<const>rgb</const>
</edit>
</match>
</fontconfig>
Отключение хинтинга для курсивных или жирных шрифтов
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<match target="font">
<edit mode="assign" name="autohint">
<bool>true</bool>
</edit>
<edit mode="assign" name="hinting">
<bool>false</bool>
</edit>
<edit mode="assign" name="lcdfilter">
<const>lcddefault</const>
</edit>
<edit mode="assign" name="hintstyle">
<const>hintslight</const>
</edit>
<edit mode="assign" name="antialias">
<bool>true</bool>
</edit>
<edit mode="assign" name="rgba">
<const>rgb</const>
</edit>
</match>
<match target="font">
<test name="pixelsize" qual="any" compare="more">
<double>15</double>
</test>
<edit mode="assign" name="lcdfilter">
<const>lcdlight</const>
</edit>
<edit mode="assign" name="hintstyle">
<const>hintnone</const>
</edit>
</match>
<match target="font">
<test name="weight" compare="more">
<const>medium</const>
</test>
<edit mode="assign" name="hintstyle">
<const>hintnone</const>
</edit>
<edit mode="assign" name="lcdfilter">
<const>lcdlight</const>
</edit>
</match>
<match target="font">
<test name="slant" compare="not_eq">
<double>0</double>
</test>
<edit mode="assign" name="hintstyle">
<const>hintnone</const>
</edit>
<edit mode="assign" name="lcdfilter">
<const>lcdlight</const>
</edit>
</match>
</fontconfig>
Включение сглаживания (anti-aliasing) только для больших шрифтов или определённых шрифтов
Некоторые пользователи предпочитают более чёткое отображение, которого anti-aliasing не позволяет добиться:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<match target="font">
<edit name="antialias" mode="assign">
<bool>false</bool>
</edit>
</match>
<match target="font">
<test name="size" qual="any" compare="more">
<double>12</double>
</test>
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
</match>
<match target="font">
<test name="pixelsize" qual="any" compare="more">
<double>16</double>
</test>
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
</match>
</fontconfig>
Также можно отключить сглаживание только для тех шрифтов, которые хорошо смотрятся без сглаживания. Смотрите Font configuration (Русский)/Examples (Русский)/No anti-aliasing (Русский).
Отключение жирного шрифта
Для случаев, когда шрифт в жирном начертании выглядит плохо, а отключить жирный шрифт в приложении невозможно (st, например).
...
<match target="pattern">
<test qual="any" name="family">
<string>Envy Code R</string>
</test>
<test name="weight" compare="more">
<const>medium</const>
</test>
<edit name="weight" mode="assign" binding="same">
<const>medium</const>
</edit>
</match>
...
Отключение лигатур для моноширинных шрифтов
Это предотвращает уменьшение ширины некоторых сочетаний букв, таких как "ffi", на некоторых моноширинных шрифтах. Для добавления дополнительных шрифтов необходимо продублировать весь блок <match>.
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<description>Disable ligatures for monospaced fonts to avoid ff, fi, ffi, etc. becoming only one character wide</description>
<match target="font">
<test name="family" compare="eq" ignore-blanks="true">
<string>Nimbus Mono PS</string>
</test>
<edit name="fontfeatures" mode="append">
<string>liga off</string>
<string>dlig off</string>
</edit>
</match>
</fontconfig>
Для некоторых других шрифтов также может потребоваться отключение других функций вроде calt и/или clig.
Проверить работоспособность можно с помощью такой команды:
$ echo -e "| worksheet |\n| buffering |\n| difficult |\n| finishing |\n| different |\n| efficient |" | pango-view --font="Nimbus Mono PS" /dev/stdin
Некоторые программы (например, Firefox) не поддерживают тег fontfeatures, поэтому для них замена шрифта на другой является единственным вариантом. Подробности смотрите в разделе Настройка шрифтов#Установка шрифтов по умолчанию или резервных шрифтов.
fontfeatures поддерживаются.Шрифты по умолчанию
Для согласованности шрифтов все приложения должны быть настроены на использование псевдонимов serif, sans-serif и monospace, которые сопоставляются с конкретными шрифтами на уровне fontconfig. Параметры и примеры описаны в статье Metric-compatible fonts.
Стандартные имена
Стандартными именами (standard names) являются псевдонимы serif, sans-serif и monospace. Установка пользовательских значений для этих псевдонимов изменит шрифты по умолчанию в большинстве приложений, в том числе sway, alacritty и firefox. В данном примере предпочтение отдается gnu-free-fonts для всего, кроме моноширинных шрифтов, для которых предпочтительнее Source Code Pro.
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<alias>
<family>serif</family>
<prefer><family>FreeSerif</family></prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer><family>FreeSans</family></prefer>
</alias>
<alias>
<family>monospace</family>
<prefer><family>Source Code Pro</family></prefer>
</alias>
</fontconfig>
Арабский
Пример fonts.conf, в котором указан шрифт по умолчанию для арабского языка и сохранены шрифты западного стиля для латинских букв. Для работы приведенного ниже примера вам потребуется либо ttf-arabeyes-fontsAUR, либо noto-fonts. Вы также можете установить любые другие арабские шрифты и соответственно изменить название шрифта в соответствии с вашими предпочтениями.
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<!-- Шрифт по умолчанию для арабского языка (нет шаблона fc-match) -->
<match>
<test compare="contains" name="lang">
<string>ar</string>
</test>
<edit mode="prepend" name="family">
<string>Tholoth</string>
</edit>
</match>
</fontconfig>
Приведённый выше пример должен работать в большинстве приложений, но некоторые приложения, например Chromium, не поддерживают тест на соответствие языку. Если вы обнаружите, что некоторые приложения не используют выбранные вами шрифты, вы можете использовать приведённый ниже псевдоним и предпочтительные теги, которые, похоже, работают.
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<!-- Резервные шрифты в порядке предпочтения -->
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Sans</family>
<family>Open Sans</family>
<family>Droid Sans</family>
<family>Roboto</family>
<family>Tholoth</family>
<family>Noto Sans Arabic</family>
</prefer>
</alias>
<alias>
<family>serif</family>
<prefer>
<family>Noto Serif</family>
<family>Droid Serif</family>
<family>Roboto Slab</family>
<family>Tholoth</family>
<family>Noto Sans Arabic</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Noto Sans Mono</family>
<family>Inconsolata</family>
<family>Droid Sans Mono</family>
<family>Roboto Mono</family>
</prefer>
</alias>
</fontconfig>
Японский
Пример fonts.conf, в котором также указан шрифт по умолчанию для японской локали (ja_JP) и сохранены шрифты западного стиля для латинских букв.
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<!-- Шрифт по умолчанию (нет шаблона fc-match) -->
<match>
<edit mode="prepend" name="family">
<string>Noto Sans</string>
</edit>
</match>
<!-- Шрифт по умолчанию для локали ja_JP (нет шаблона fc-match) -->
<match>
<test compare="contains" name="lang">
<string>ja</string>
</test>
<edit mode="prepend" name="family">
<string>Noto Sans CJK JP</string>
</edit>
</match>
<!-- Шрифт sans-serif по умолчанию -->
<match target="pattern">
<test qual="any" name="family">
<string>sans-serif</string>
</test>
<!--<test qual="any" name="lang"><string>ja</string></test>-->
<edit name="family" mode="prepend" binding="same">
<string>Noto Sans</string>
</edit>
</match>
<!-- Шрифты serif по умолчанию -->
<match target="pattern">
<test qual="any" name="family">
<string>serif</string>
</test>
<edit name="family" mode="prepend" binding="same">
<string>Noto Serif</string>
</edit>
<edit name="family" mode="append" binding="same">
<string>IPAPMincho</string>
</edit>
<edit name="family" mode="append" binding="same">
<string>HanaMinA</string>
</edit>
</match>
<!-- Шрифты monospace по умолчанию -->
<match target="pattern">
<test qual="any" name="family">
<string>monospace</string>
</test>
<edit name="family" mode="prepend" binding="same">
<string>Noto Sans Mono</string>
</edit>
<edit name="family" mode="append" binding="same">
<string>Inconsolatazi4</string>
</edit>
<edit name="family" mode="append" binding="same">
<string>IPAGothic</string>
</edit>
</match>
<!-- Резервные шрифты в порядке предпочтения -->
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Sans</family>
<family>Open Sans</family>
<family>Droid Sans</family>
<family>Ubuntu</family>
<family>Roboto</family>
<family>NotoSansCJK</family>
<family>Source Han Sans JP</family>
<family>IPAPGothic</family>
<family>VL PGothic</family>
<family>Koruri</family>
</prefer>
</alias>
<alias>
<family>serif</family>
<prefer>
<family>Noto Serif</family>
<family>Droid Serif</family>
<family>Roboto Slab</family>
<family>IPAPMincho</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Noto Sans Mono</family>
<family>Inconsolatazi4</family>
<family>Ubuntu Mono</family>
<family>Droid Sans Mono</family>
<family>Roboto Mono</family>
<family>IPAGothic</family>
</prefer>
</alias>
</fontconfig>
Китайский
~/.config/fontconfig/fonts.conf или /etc/fonts/local.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<match target="font">
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>
<match>
<test qual="any" name="family">
<string>serif</string>
</test>
<edit name="family" mode="prepend" binding="strong">
<string>Noto Serif</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="prepend" binding="strong">
<string>Roboto</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>monospace</string>
</test>
<edit name="family" mode="prepend" binding="strong">
<string>DejaVu Sans Mono</string>
</edit>
</match>
<match>
<test name="lang" compare="contains">
<string>zh</string>
</test>
<test name="family">
<string>serif</string>
</test>
<edit name="family" mode="prepend">
<string>Source Han Serif CN</string>
</edit>
</match>
<match>
<test name="lang" compare="contains">
<string>zh</string>
</test>
<test name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="prepend">
<string>Source Han Sans CN</string>
</edit>
</match>
<match>
<test name="lang" compare="contains">
<string>zh</string>
</test>
<test name="family">
<string>monospace</string>
</test>
<edit name="family" mode="prepend">
<string>Noto Sans Mono CJK SC</string>
</edit>
</match>
<!--Windows & Linux Chinese fonts. -->
<match target="pattern">
<test qual="any" name="family">
<string>WenQuanYi Zen Hei</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>Source Han Sans CN</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>WenQuanYi Micro Hei</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>Source Han Sans CN</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>WenQuanYi Micro Hei Light</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>Source Han Sans CN</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>Microsoft YaHei</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>Source Han Sans CN</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>SimHei</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>Source Han Sans CN</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>SimSun</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>Source Han Serif CN</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>SimSun-18030</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>Source Han Serif CN</string>
</edit>
</match>
</fontconfig>
Китайский с Noto Fonts
Apply Noto Fonts while replacing Microsoft Fonts with WenQuanYi Micro Hei
~/.config/fontconfig/fonts.conf или /etc/fonts/local.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<match target="font">
<edit name="embeddedbitmap" mode="assign">
<bool>false</bool>
</edit>
</match>
<match>
<test qual="any" name="family">
<string>serif</string>
</test>
<edit name="family" mode="prepend" binding="strong">
<string>Noto Serif</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="prepend" binding="strong">
<string>Noto Sans</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>monospace</string>
</test>
<edit name="family" mode="prepend" binding="strong">
<string>Noto Sans Mono</string>
</edit>
</match>
<match>
<test name="lang" compare="contains">
<string>zh</string>
</test>
<test name="family">
<string>serif</string>
</test>
<edit name="family" mode="prepend">
<string>Noto Serif CJK SC</string>
</edit>
</match>
<match>
<test name="lang" compare="contains">
<string>zh</string>
</test>
<test name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="prepend">
<string>Noto Sans CJK SC</string>
</edit>
</match>
<match>
<test name="lang" compare="contains">
<string>zh</string>
</test>
<test name="family">
<string>monospace</string>
</test>
<edit name="family" mode="prepend">
<string>Noto Sans Mono CJK SC</string>
</edit>
</match>
<!--WenQuanYi Zen Hei -> WenQuanYi Micro Hei -->
<match target="pattern">
<test qual="any" name="family">
<string>WenQuanYi Zen Hei</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>WenQuanYi Micro Hei</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>WenQuanYi Zen Hei Lite</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>WenQuanYi Micro Hei Lite</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>WenQuanYi Zen Hei Mono</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>WenQuanYi Micro Hei Mono</string>
</edit>
</match>
<!--Microsoft YaHei, SimHei, SimSun -> WenQuanYi Micro Hei -->
<match target="pattern">
<test qual="any" name="family">
<string>Microsoft YaHei</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>WenQuanYi Micro Hei</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>SimHei</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>WenQuanYi Micro Hei</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>SimSun</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>WenQuanYi Micro Hei</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>SimSun-18030</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>WenQuanYi Micro Hei</string>
</edit>
</match>
</fontconfig>
CJK, но с предпочтением других латинских шрифтов
Нужен noto-fonts-cjk.
Вы можете заменить PT Serif/Roboto/Cascadia Code PL на предпочитаемые вами serif/sans-serif/monospace шрифты.
~/.config/fontconfig/fonts.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<!-- Шрифт serif по умолчанию -->
<alias binding="strong">
<family>serif</family>
<prefer>
<family>PT Serif</family>
</prefer>
</alias>
<!-- Шрифт sans-serif по умолчанию -->
<alias binding="strong">
<family>sans-serif</family>
<prefer>
<family>Roboto</family>
</prefer>
</alias>
<!-- Шрифт monospace по умолчанию -->
<alias binding="strong">
<family>monospace</family>
<prefer>
<family>Cascadia Code PL</family>
</prefer>
</alias>
<!-- Шрифт system-ui по умолчанию -->
<alias binding="strong">
<family>system-ui</family>
<prefer>
<family>Roboto</family>
</prefer>
</alias>
<!-- Serif CJK -->
<!-- Шрифт serif по умолчанию для случаев, когда атрибут "lang" отсутствует -->
<!-- Можете изменить этот шрифт на нужный вам вариант языка -->
<match target="pattern">
<test name="family">
<string>serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Serif CJK SC</string>
</edit>
</match>
<!-- Японский -->
<!-- "lang=ja" или "lang=ja-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>ja</string>
</test>
<test name="family">
<string>serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Serif CJK JP</string>
</edit>
</match>
<!-- Корейский -->
<!-- "lang=ko" или "lang=ko-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>ko</string>
</test>
<test name="family">
<string>serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Serif CJK KR</string>
</edit>
</match>
<!-- Китайский -->
<!-- "lang=zh" или "lang=zh-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh</string>
</test>
<test name="family">
<string>serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Serif CJK SC</string>
</edit>
</match>
<!-- "lang=zh-hans" или "lang=zh-hans-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-hans</string>
</test>
<test name="family">
<string>serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Serif CJK SC</string>
</edit>
</match>
<!-- "lang=zh-hant" или "lang=zh-hant-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-hant</string>
</test>
<test name="family">
<string>serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Serif CJK TC</string>
</edit>
</match>
<!-- Совместимость -->
<!-- "lang=zh-cn" или "lang=zh-cn-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-cn</string>
</test>
<test name="family">
<string>serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Serif CJK SC</string>
</edit>
</match>
<!-- "lang=zh-tw" или "lang=zh-tw-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-tw</string>
</test>
<test name="family">
<string>serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Serif CJK TC</string>
</edit>
</match>
<!-- Sans CJK -->
<!-- Шрифт sans-serif по умолчанию для случаев, когда атрибут "lang" отсутствует -->
<!-- Можете изменить этот шрифт на нужный вам вариант языка -->
<match target="pattern">
<test name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK SC</string>
</edit>
</match>
<!-- Японский -->
<!-- "lang=ja" или "lang=ja-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>ja</string>
</test>
<test name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK JP</string>
</edit>
</match>
<!-- Корейский -->
<!-- "lang=ko" или "lang=ko-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>ko</string>
</test>
<test name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK KR</string>
</edit>
</match>
<!-- Китайский -->
<!-- "lang=zh" или "lang=zh-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh</string>
</test>
<test name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK SC</string>
</edit>
</match>
<!-- "lang=zh-hans" или "lang=zh-hans-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-hans</string>
</test>
<test name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK SC</string>
</edit>
</match>
<!-- "lang=zh-hant" или "lang=zh-hant-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-hant</string>
</test>
<test name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK TC</string>
</edit>
</match>
<!-- "lang=zh-hant-hk" или "lang=zh-hant-hk-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-hant-hk</string>
</test>
<test name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK HK</string>
</edit>
</match>
<!-- Совместимость -->
<!-- "lang=zh-cn" или "lang=zh-cn-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-cn</string>
</test>
<test name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK SC</string>
</edit>
</match>
<!-- "lang=zh-tw" или "lang=zh-tw-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-tw</string>
</test>
<test name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK TC</string>
</edit>
</match>
<!-- "lang=zh-hk" или "lang=zh-hk-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-hk</string>
</test>
<test name="family">
<string>sans-serif</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK HK</string>
</edit>
</match>
<!-- Mono CJK -->
<!-- Шрифт monospace по умолчанию для случаев, когда атрибут "lang" отсутствует -->
<!-- Можете изменить этот шрифт на нужный вам вариант языка -->
<match target="pattern">
<test name="family">
<string>monospace</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans Mono CJK SC</string>
</edit>
</match>
<!-- Японский -->
<!-- "lang=ja" или "lang=ja-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>ja</string>
</test>
<test name="family">
<string>monospace</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans Mono CJK JP</string>
</edit>
</match>
<!-- Корейский -->
<!-- "lang=ko" или "lang=ko-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>ko</string>
</test>
<test name="family">
<string>monospace</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans Mono CJK KR</string>
</edit>
</match>
<!-- Китайский -->
<!-- "lang=zh" или "lang=zh-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh</string>
</test>
<test name="family">
<string>monospace</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans Mono CJK SC</string>
</edit>
</match>
<!-- "lang=zh-hans" или "lang=zh-hans-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-hans</string>
</test>
<test name="family">
<string>monospace</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans Mono CJK SC</string>
</edit>
</match>
<!-- "lang=zh-hant" или "lang=zh-hant-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-hant</string>
</test>
<test name="family">
<string>monospace</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans Mono CJK TC</string>
</edit>
</match>
<!-- "lang=zh-hant-hk" или "lang=zh-hant-hk-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-hant-hk</string>
</test>
<test name="family">
<string>monospace</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans Mono CJK HK</string>
</edit>
</match>
<!-- Совместимость -->
<!-- "lang=zh-cn" или "lang=zh-cn-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-cn</string>
</test>
<test name="family">
<string>monospace</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans Mono CJK SC</string>
</edit>
</match>
<!-- "lang=zh-tw" или "lang=zh-tw-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-tw</string>
</test>
<test name="family">
<string>monospace</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans Mono CJK TC</string>
</edit>
</match>
<!-- "lang=zh-hk" или "lang=zh-hk-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-hk</string>
</test>
<test name="family">
<string>monospace</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans Mono CJK HK</string>
</edit>
</match>
<!-- System UI CJK -->
<!-- Шрифт system-ui по умолчанию для случаев, когда атрибут "lang" отсутствует -->
<!-- Можете изменить этот шрифт на нужный вам вариант языка -->
<match target="pattern">
<test name="family">
<string>system-ui</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK SC</string>
</edit>
</match>
<!-- Японский -->
<!-- "lang=ja" или "lang=ja-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>ja</string>
</test>
<test name="family">
<string>system-ui</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK JP</string>
</edit>
</match>
<!-- Корейский -->
<!-- "lang=ko" или "lang=ko-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>ko</string>
</test>
<test name="family">
<string>system-ui</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK KR</string>
</edit>
</match>
<!-- Китайский -->
<!-- "lang=zh" или "lang=zh-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh</string>
</test>
<test name="family">
<string>system-ui</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK SC</string>
</edit>
</match>
<!-- "lang=zh-hans" или "lang=zh-hans-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-hans</string>
</test>
<test name="family">
<string>system-ui</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK SC</string>
</edit>
</match>
<!-- "lang=zh-hant" или "lang=zh-hant-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-hant</string>
</test>
<test name="family">
<string>system-ui</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK TC</string>
</edit>
</match>
<!-- "lang=zh-hant-hk" или "lang=zh-hant-hk-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-hant-hk</string>
</test>
<test name="family">
<string>system-ui</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK HK</string>
</edit>
</match>
<!-- Совместимость -->
<!-- "lang=zh-cn" или "lang=zh-cn-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-cn</string>
</test>
<test name="family">
<string>system-ui</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK SC</string>
</edit>
</match>
<!-- "lang=zh-tw" или "lang=zh-tw-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-tw</string>
</test>
<test name="family">
<string>system-ui</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK TC</string>
</edit>
</match>
<!-- "lang=zh-hk" или "lang=zh-hk-*" -->
<match target="pattern">
<test name="lang" compare="contains">
<string>zh-hk</string>
</test>
<test name="family">
<string>system-ui</string>
</test>
<edit name="family" mode="append" binding="strong">
<string>Noto Sans CJK HK</string>
</edit>
</match>
</fontconfig>
Альтернативные наборы стилей для шрифтов
Некоторые шрифты поставляются с альтернативными наборами стилей для символов благодаря функции OpenType.
Обычно эти стилистические наборы называются ss0x и содержат небольшие изменения отдельных символов.
Здесь показано, как изменить ноль с точкой по умолчанию на ноль с косой чертой для моноширинной версии ttf-ibm-plex.
~/.config/fontconfig/fonts.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<match target="font">
<test name="fontformat" compare="not_eq">
<string />
</test>
<test name="family">
<string>IBM Plex Mono</string>
</test>
<edit name="fontfeatures" mode="assign_replace">
<string>ss03</string>
</edit>
</match>
</fontconfig>
Смотрите What are "Stylistic Sets?" для более подробной информации.