Подстановка шрифтов с помощью ~ / .fonts.conf

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недействительным, и система возвращается к следующему шрифту (т. Е. В браузере принимает следующий шрифт, указанный в таблице стилей, если его нет, отображается стандартный sans-serif).

Маттео Рива
источник
Я пришел сюда, потому что я собирался сделать что-то подобное. Надеюсь, у кого-то есть ответ ...
Людвиг Вайнцерль
все еще ищу ответ.
Capi Etheriel

Ответы:

16

Я думаю, что атрибут привязки отсутствовал в вашей конфигурации. (см. также 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>
frenkx
источник
1
Работал на меня. Похоже, что добавление bindingатрибута имело значение. Я использую fontconfig-2.8.0.
MaoPU
Это сработало для меня
Милошадзич
3

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

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>Helvetica</family>
    <prefer>Droid Sans</prefer>
  </alias>
</fontconfig>
Джефф Риди
источник
1
Разве <alias> не только для замены не установленных шрифтов?
MaoPU
@MaoPU: Я думал о том же, но после прочтения документации я понял, что это настроено. <accept>имеет приоритет, если шрифт не установлен, <prefer>имеет приоритет независимо от того, установлен ли шрифт.
Дж. М. Беккер
/ \ Нет, на самом деле это не так, если только .confфайл, содержащий это правило, не читается первым.
23 марта 2009 г.,
Хм - что сказал, это делает работу , если binding="strong"используется вместе с <alias>элементом!
23 марта,
0

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

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

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

Васкес
источник
0

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

j605
источник