Настройте fontconfig, чтобы игнорировать растровые изображения в масштабируемых шрифтах

12

У меня установлены Microsoft C-Fonts, и они замечательные. Тем не менее, Calibri выглядит как растровый шрифт во многих размерах, которые он появляется. Как мне указать fontconfig запретить рендеринг Calibri (и Cambria, и т. Д.) Из встроенных растровых изображений? У меня уже есть 70-no-bitmaps.confв моем /etc/fonts/conf.d/каталоге.

Указанные шрифты можно извлечь из программы просмотра PowerPoint .

Пол Фишер
источник
AFAIK эти шрифты не распространяются свободно? (Поэтому я не могу их проверить.) Но вы уверены, что они используют растровые изображения, а не просто отключают сглаживание?
JanC
@JanC Шрифты действительно используют предварительно обработанные растровые изображения.
Пол Фишер

Ответы:

19

/etc/fonts/conf.d/70-no-bitmaps.confтолько отклоняет растровые шрифты, они не отключают встроенные растровые изображения, как здесь. Я не знаю, почему они не установили параметр отключения встроенных растровых изображений в одном и том же файле конфигурации. В любом случае, поместите следующее в ~/.config/fontconfig/conf.d/20-no-embedded.conf(или, для более старых версий Ubuntu, в ~/.fonts.conf.d/20-no-embedded.conf):

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit name="embeddedbitmap" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>

Это отключит встроенное растровое изображение для всех шрифтов. Если вы хотите отключить только выбранные шрифты, добавьте <test>элемент:

<test name="family" compare="contains">
  <string>Calibri</string>
  <string>Cambria</string>
</test>

перед тем <edit ....

syockit
источник
Должно ли это быть помещено в /etc/fonts/conf.d или, что лучше, в /etc/fonts/conf.avail и помещено по ссылке в conf.d, как и все другие файлы конфигурации? Это зарезервировано для файлов конфигурации, предоставляемых дистрибутивом Ubuntu? Это имеет значение?
Кн
1
@knb по умолчанию в настройках ubuntu / debian, fontconfig также будет загружать что угодно ~/.fonts.conf.d/. Поэтому я предлагаю вам поставить его там, чтобы избежать взлома системных настроек. Если вы не хотите сделать его доступным для всех пользователей, вы можете вставить его /etc/fonts/conf.dили вставить availи использовать символическую ссылку, conf.dчтобы использовать его, когда вам это нужно (вы можете удалить символическую ссылку, когда захотите включить ее, и наоборот)
syockit
3
В текущих версиях fontconfig имя файла должно быть таким, что ~/.fonts.conf.d/20-no-embedded.confоно не будет загружено, если в нем нет префикса с номером. Запустите, например, FC_DEBUG=1024 geditчтобы увидеть, загружена ли ваша конфигурация вообще, если она, кажется, не имеет никакого эффекта.
Паскаль
@pascal +1 для FC_DEBUG. И нет, номер перед именем не был необходим на 10.04 LTS, достаточно было просто назвать .fonts.configего. На какую версию fontconfig вы ссылаетесь?
LAFK сообщает, что восстановит Монику
1

В приведенном вами примере у вас есть атрибут "<string>", упомянутый дважды в разделе "<test>". Это вызывает предупреждение в Ubuntu 13.10 и 14.04. Чтобы исключить предупреждение, раздел в файле должен выглядеть следующим образом:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <test name="family" compare="contains">
       <string>Calibri</string>
    </test>
    <test name="family" compare="contains">
       <string>Cambria</string>
    </test>
    <edit name="embeddedbitmap" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
</fontconfig>
Пол Леммонс
источник