Заміна шрифту ~ / .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-кеш, я зареєструвався /etc/fonts/conf.dі виявив, 50-user.confщо, схоже, явно викликає конкретні для користувача конфігурації.

Що я пропускаю?

Спасибі

EDIT: після розслідування я з'ясував, що інші правила /etc/fonts/conf.dперезаписують конфігурацію користувача, тому посилання user.confна 00-user.confдовідку. Все-таки це лише частковий успіх, оскільки я можу вказати, які шрифти потрібно замінити, але заміни на мій вибір ігноруються: іншими словами, я можу зробити Helveticaнедійсним і система повернеться до наступного шрифту (тобто в браузері, це приймає наступний шрифт, вказаний у таблиці стилів, якщо його немає, він відображає стандартний sans-serif).


Я прийшов сюди, бо збирався здійснити щось подібне. Сподіваємось, у когось є відповідь ...
Людвіг Вайнцирль

все ще шукаю відповіді.
Capi Etheriel

Відповіді:


16

Я думаю, що у вашій конфігурації відсутній атрибут прив'язки. (див. також шрифти-конф ). Залежно від іншої конфігурації, прив’язка "того ж" або "сильного", можливо, може працювати, тоді як "слабка" може не дати тобі, що ти хочеш.

<?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>

1
Працювали для мене. Схоже, додавання bindingатрибуту змінило значення. Я використовую fontconfig-2.8.0.
MaoPU

Це працювало для мене
miloshadzic

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спочатку не буде прочитано файл, що містить це правило.
Марк.2377

Хм - що сказав, це робить роботу , якщо binding="strong"використовується разом з <alias>елементом!
Марк.2377

0

Чи фактично "fc-list" показує "Helvetica"? Що говорить fc-match? У своєму ящику (F-12) я отримую:

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

Можливо, вам доведеться також додати псевдонім шрифту до своєї заміни.


0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.