Font configuration (Русский)/Examples (Русский) - ArchWiki

Jump to content
Toggle the table of contents

# Font configuration (Русский)/Examples (Русский)

3 languages

- English
- 日本語
- 中文（简体）

From ArchWiki
< Font configuration (Русский)
Состояние перевода: На этой странице представлен перевод статьи Font configuration/Examples. Дата последней синхронизации: 22 октября 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Основная статья: Настройка шрифтов.

Настройки могут варьироваться в значительной степени. Пожалуйста, приводите примеры настроек 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`, поэтому для них замена шрифта на другой является единственным вариантом. Подробности смотрите в разделе Настройка шрифтов#Установка шрифтов по умолчанию или резервных шрифтов.

Примечание: Начиная с Firefox 114, настройки fontconfig вроде `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?" для более подробной информации.

## Смотрите также

- Форум Gentoo (Англ.)
- Ubuntu Wiki (Англ.)

Category:

- Fonts (Русский)