18

Я пытаюсь использовать ~/.fonts.conf, чтобы заменить Helvetica на Droid Sans, вот содержимое файла:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test qual="any" name="family"><string>Helvetica</string></test>
    <edit name="family" mode="assign"><string>Droid Sans</string></edit>
  </match>
</fontconfig>

но, несмотря ни на что, ничего не происходит. Я попытался запустить fc-cache, я проверил /etc/fonts/conf.d и обнаружил 50-user.conf который явно вызывает специфичные для пользователя конфигурации.

Что мне не хватает?

Спасибо

РЕДАКТИРОВАТЬ: после исследования я обнаружил, что другие правила в /etc/fonts/conf.d перезаписывают пользовательскую конфигурацию, поэтому помогло связывание user.conf с 00-user.conf . Тем не менее, это лишь частичный успех, так как я могу указать, какие шрифты следует заменить, но замена, которую я выбрал, игнорируется: другими словами, я могу сделать Helvetica недействительной, и система вернется к следующему шрифту (то есть в браузере, он принимает следующий шрифт, указанный в таблице стилей, если его нет, он отображает стандартный шрифт без засечек).

4 ответа4

14

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

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test qual="any" name="family"><string>Helvetica</string></test>
    <edit name="family" mode="assign" binding="same"><string>Droid Sans</string></edit>
  </match>
</fontconfig>
4

Я думаю, что механизм псевдонима будет работать для этого:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>Helvetica</family>
    <prefer>Droid Sans</prefer>
  </alias>
</fontconfig>
0

Я столкнулся с подобной проблемой, когда пытался использовать псевдоним Helvetica как семью без засечек. Для всех, кто столкнулся с той же проблемой, посмотрите конфигурацию системы в /etc/fonts/conf.d/ которая будет содержать ссылки на файлы из /etc/fonts/conf.avail . Мне пришлось удалить много этих псевдонимов, чтобы получить детерминированное поведение.

0

Действительно ли "fc-list" показывает "Helvetica"? Что говорит fc-match? На моей коробке (F-12) я получаю:

 >fc-match Helvetica
n019003l.pfb: "Nimbus Sans L" "Regular"

Может быть, вы должны добавить псевдоним шрифта к вашей замене.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .