Как отключить неиспользуемые азиатские шрифты?

Я настраиваю компьютеры Ubuntu 18.04 LTS для школы в Италии, и я видел, что более 200 шрифтов были установлены как зависимости пакета ubuntu-desktop.

Нам не нужно большинство из них, мы не ожидаем, что типичные пользователи будут писать или читать документы, например, на бенгальском или тайском языках. На самом деле, очень много шрифтов затрудняют выбор шрифта для наших пользователей (например, в LibreOffice), потому что им трудно найти полезные шрифты.

Есть ли способ отключить эти нелатинские шрифты в масштабе всей системы, чтобы они не появлялись в приложениях?

Я знаю, что могу удалить их вручную (например, удаляя пакеты fonts-tlwg-*). ), но я хочу оставить их установленными, чтобы отдельные пользователи могли включить их позже, если это необходимо, не затрагивая других пользователей той же системы.

1
задан 4 May 2019 в 13:36

3 ответа

Обратите внимание, что ubuntu-desktop рекомендует большинство пакетов этих шрифтов; это не зависит от них. Следовательно, вы должны быть в состоянии безопасно удалить пакеты шрифтов и при этом сохранить ubuntu-desktop.

0
ответ дан 4 May 2019 в 13:36

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

Вам просто нужно добавить несколько строк, подобных этим, в конфигурации системы или пользователя:

<selectfont>
    <rejectfont>
    <glob>/usr/share/fonts/truetype/fonts-beng-extra/*</glob>
    </rejectfont>
</selectfont>

Где разместить конфигурацию

  • Чтобы отключить эти шрифты в масштабе всей системы Вы помещаете эти инструкции в /etc/fonts/local.conf
  • Чтобы отключить эти шрифты только для одного пользователя, вы помещаете их в ~/.config/fontconfig/fonts.conf

Чтобы установить поведение по умолчанию для каждого нового пользователя, установите это конфигурация в /etc/skel/.config/fontconfig/fonts.conf.

Таким образом, нежелательные шрифты по умолчанию отключены, но пользователи по-прежнему могут разрешить им снова редактировать свой собственный файл конфигурации fontconfig (этот последний подход кажется более универсальным для моего варианта использования).

Очевидно, что если вы установите эту конфигурацию в /etc/skel/, это не повлияет на существующих пользователей. Им нужно вручную скопировать его в свои домашние каталоги, чтобы он работал.

Пример конфигурации

Вот мой полный файл fonts.conf, который отключает все нелатинские шрифты, которые мне не нужны. Он живет в ~/.config/fontconfig/fonts.conf.

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

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <!-- disable non-latin fonts -->
    <selectfont>
        <rejectfont>
        <glob>/usr/share/fonts/opentype/malayalam/*</glob>
        <glob>/usr/share/fonts/opentype/noto/*CJK*</glob>
        <glob>/usr/share/fonts/truetype/abyssinica/*</glob>
        <glob>/usr/share/fonts/truetype/fonts-beng-extra/*</glob>
        <glob>/usr/share/fonts/truetype/fonts-deva-extra/*</glob>
        <glob>/usr/share/fonts/truetype/fonts-gujr-extra/*</glob>
        <glob>/usr/share/fonts/truetype/fonts-guru-extra/*</glob>
        <glob>/usr/share/fonts/truetype/fonts-kalapi/*</glob>
        <glob>/usr/share/fonts/truetype/fonts-orya-extra/*</glob>
        <glob>/usr/share/fonts/truetype/fonts-telu-extra/*</glob>
        <glob>/usr/share/fonts/truetype/Gargi/*</glob>
        <glob>/usr/share/fonts/truetype/Gubbi/*</glob>
        <glob>/usr/share/fonts/truetype/kacst/*</glob>
        <glob>/usr/share/fonts/truetype/kacst-one/*</glob>
        <glob>/usr/share/fonts/truetype/lao/*</glob>
        <glob>/usr/share/fonts/truetype/lohit*</glob>
        <glob>/usr/share/fonts/truetype/malayalam/*</glob>
        <glob>/usr/share/fonts/truetype/Nakula/*</glob>
        <glob>/usr/share/fonts/truetype/Navilu/*</glob>
        <glob>/usr/share/fonts/truetype/padauk/*</glob>
        <glob>/usr/share/fonts/truetype/pagul/*</glob>
        <glob>/usr/share/fonts/truetype/Sahadeva/*</glob>
        <glob>/usr/share/fonts/truetype/samyak/*</glob>
        <glob>/usr/share/fonts/truetype/samyak-fonts/*</glob>
        <glob>/usr/share/fonts/truetype/Sarai/*</glob>
        <glob>/usr/share/fonts/truetype/sinhala/*</glob>
        <glob>/usr/share/fonts/truetype/tibetan-machine/*</glob>
        <glob>/usr/share/fonts/truetype/tlwg/*</glob>
        <glob>/usr/share/fonts/truetype/ttf-khmeros-core/*</glob>
        </rejectfont>
    </selectfont>
</fontconfig>

Ссылки

0
ответ дан 4 May 2019 в 13:36

@gerlos ответ отличный, но лично мне не нравится указывать отдельные папки для каждого языка. Это кажется немного громоздким и хрупким.

Альтернативным вариантом может быть исключение всех шрифтов, которые не поддерживают желаемый(е) язык(и), т.е. Английский (en) в моем случае.

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

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- $XDG_CONFIG_HOME/fontconfig/fonts.conf for per-user font configuration -->
<fontconfig>
  <selectfont>
    <!-- reject all fonts -->
    <rejectfont>
      <pattern>
      </pattern>
    </rejectfont>
    <!-- accept only fonts that support english -->
    <acceptfont>
      <pattern>
        <patelt name="lang">
          <string>en</string>
        </patelt>
      </pattern>
    </acceptfont>
  </selectfont>
</fontconfig>

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

2
ответ дан 6 November 2020 в 17:44

Другие вопросы по тегам:

Похожие вопросы: