Schriftersetzung mit ~ / .fonts.conf

18

Ich versuche mit ~ / .fonts.conf Helvetica durch Droid Sans zu ersetzen. Hier ist der Inhalt der Datei:

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

aber egal was passiert, nichts scheint zu passieren. Ich habe versucht, fc-cache auszuführen, habe eingecheckt /etc/fonts/conf.dund festgestellt, 50-user.confdass offenbar benutzerspezifische Konfigurationen explizit aufgerufen werden.

Was vermisse ich?

Vielen Dank

BEARBEITEN: Nach einer Untersuchung stellte ich fest, dass andere Regeln beim /etc/fonts/conf.dÜberschreiben der Benutzerkonfiguration, also beim Verknüpfen user.confmit, 00-user.confgeholfen haben. Trotzdem ist es nur ein Teilerfolg, da ich angeben kann, welche Schriftarten ersetzt werden sollen, aber der von mir gewählte Ersatz wird ignoriert: Mit anderen Worten, ich kann Helveticaungültig machen und das System greift auf die nächste Schrift zurück (dh im Browser, es Nimmt die nächste im Stylesheet angegebene Schriftart, wenn keine vorhanden ist, wird eine serifenlose Standardschrift angezeigt.

Matteo Riva
quelle
Ich bin hergekommen, weil ich etwas Ähnliches erreichen wollte. Hoffentlich hat jemand eine Antwort ...
Ludwig Weinzierl
immer noch auf der Suche nach einer Antwort.
Capi Etheriel

Antworten:

16

Ich denke, das Bindungsattribut fehlte in Ihrer Konfiguration. (siehe auch fonts-conf ) Abhängig von Ihrer anderen Konfiguration funktioniert möglicherweise eine Bindung von "Gleich" oder "Stark", während "Schwach" möglicherweise nicht das ergibt, was Sie möchten.

<?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
quelle
1
Hat für mich gearbeitet. Scheint, als würde das Hinzufügen des bindingAttributs den Unterschied ausmachen . Ich benutze fontconfig-2.8.0.
MaoPU,
Dies funktionierte für mich
Miloshadzic
3

Ich denke, der Alias-Mechanismus würde dafür funktionieren:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>Helvetica</family>
    <prefer>Droid Sans</prefer>
  </alias>
</fontconfig>
Geoff Reedy
quelle
1
Dient <Alias> nicht nur zum Ersetzen nicht installierter Schriftarten?
MaoPU,
@ Maopu: Ich dachte das Gleiche, aber nachdem ich die Dokumentation gelesen hatte, glaubte ich, dass dieses Verhalten konfiguriert ist. <accept>hat Vorrang, wenn die Schriftart nicht installiert ist, <prefer>unabhängig davon, ob die Schriftart installiert ist.
JM Becker
/ \ Nein, das tut es tatsächlich nicht, es sei denn, die .confDatei, die diese Regel enthält, wird zuerst gelesen.
Marc.2377,
Hmm - das heißt, es funktioniert , wenn binding="strong"es zusammen mit dem <alias>Element verwendet wird!
Marc.2377,
0

Zeigt "fc-list" tatsächlich "Helvetica"? Was sagt fc-match? Auf meiner Box (F-12) bekomme ich:

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

Möglicherweise müssen Sie auch die mit Alias ​​versehene Schriftart zu Ihrer Ersetzung hinzufügen.

Vasquez
quelle
0

Ich hatte ein ähnliches Problem, als ich versuchte, Helvetica als serifenlose Familie zu bezeichnen. Für alle, die das gleiche Problem haben, sehen Sie sich die Systemkonfiguration an, in /etc/fonts/conf.d/der Links zu Dateien von enthalten sind /etc/fonts/conf.avail. Ich musste viele dieser Aliase entfernen, um deterministisches Verhalten zu erhalten.

j605
quelle