Konfigurieren Sie fontconfig so, dass Bitmaps in skalierbaren Schriftarten ignoriert werden

12

Ich habe die Microsoft C-Fonts installiert und sie sind wunderbar. Calibri wird jedoch in vielen Größen als Bitmap-Schriftart angezeigt. Wie kann ich fontconfig anweisen, das Rendern von Calibri (und Cambria usw.) Aus den eingebetteten Bitmaps zu verbieten? Ich habe bereits 70-no-bitmaps.confin meinem /etc/fonts/conf.d/Verzeichnis.

Die betreffenden Schriftarten können aus dem PowerPoint Viewer extrahiert werden .

Paul Fisher
quelle
AFAIK diese Schriften sind nicht frei verteilbar? (Also kann ich sie nicht testen.) Aber sind Sie sicher, dass sie Bitmaps verwenden und nicht nur Antialiassing deaktivieren?
Jan.,
@ JanC Die Schriften verwenden in der Tat vorgerenderte Bitmaps.
Paul Fisher

Antworten:

19

/etc/fonts/conf.d/70-no-bitmaps.conflehnt nur Bitmap-Schriften ab, deaktiviert eingebettete Bitmaps nicht, was hier der Fall ist. Ich weiß nicht, warum sie nicht die Einstellung zum Deaktivieren von eingebetteten Bitmaps in derselben Conf-Datei gesetzt haben. Wie auch immer, fügen Sie Folgendes in Ihr ~/.config/fontconfig/conf.d/20-no-embedded.conf(oder, für ältere Versionen von Ubuntu, in ~/.fonts.conf.d/20-no-embedded.conf) ein:

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

Dadurch wird die eingebettete Bitmap für alle Schriftarten deaktiviert. Wenn Sie nur für ausgewählte Schriftarten deaktivieren möchten, fügen Sie ein <test>Element hinzu:

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

vorher <edit ....

syockit
quelle
Sollte dies in /etc/fonts/conf.d oder besser in /etc/fonts/conf.avail abgelegt und wie alle anderen Konfigurationsdateien mit conf.d verknüpft werden? Ist dies für die Konfigurationsdateien reserviert, die von der Ubuntu-Distribution bereitgestellt werden? Ist das wichtig?
Knb
1
@knb standardmäßig Ubuntu / Debian-Einstellungen, FontConfig wird auch alles laden ~/.fonts.conf.d/. Also schlage ich vor, dass Sie es dort ablegen, um nicht mit den Systemkonfigurationen herumzuspielen. Sofern Sie es nicht allen Benutzern zur Verfügung stellen möchten, können Sie /etc/fonts/conf.des availeinfügen oder einfügen und verknüpfen conf.d, um es bei Bedarf zu verwenden (Sie können den Symlink löschen, wenn Sie es aktivieren möchten, und umgekehrt).
Syockit
3
Bei aktuellen Versionen von fontconfig muss der Dateiname so sein, dass ~/.fonts.conf.d/20-no-embedded.confer nicht geladen wird, wenn ihm keine Nummer vorangestellt wird. Führen Sie zum Beispiel aus FC_DEBUG=1024 gedit, ob Ihre Konfiguration überhaupt geladen ist, wenn sie keine Auswirkungen zu haben scheint.
Pascal
@pascal +1 für FC_DEBUG. Und nein, die Nummer vor dem Namen war bei 10.04 LTS nicht erforderlich, es .fonts.configgenügte , sie nur zu benennen . Auf welche Version von fontconfig verweisen Sie?
LAFK sagt Reinstate Monica
1

In dem von Ihnen angegebenen Beispiel haben Sie das Attribut "<string>", das in der Zeilengruppe "<test>" zweimal erwähnt wurde. Dies führt unter Ubuntu 13.10 und 14.04 zu einer Warnung. Um die Warnung zu beseitigen, sollte die Zeilengruppe in der Datei folgendermaßen aussehen:

<?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>
Paul Lemmons
quelle