Auf den ersten Blick sieht es für mich nach einem echten fontconfig-Fehler aus, da es hier richtig funktioniert und ich sowohl DejaVu als auch Unifont installiert habe:
$ fc-match Sans
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match "Sans"
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match "Sans "
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match "Sans 9"
DejaVuSans.ttf: "DejaVu Sans" "Book"
Bei näherer Betrachtung können wir jedoch einige Details erkennen. Möglicherweise ist irgendwo immer noch ein fontconfig-Fehler aufgetreten, es wird jedoch fc-match
anscheinend ein Standardwert zurückgegeben, wenn nichts gefunden wird. Es ist nur die Standardeinstellung DejaVu auf meinem System:
$ fc-match uni
DejaVuSans.ttf: "DejaVu Sans" "Book"
$ fc-match unifont
Unifont.ttf: "unifont" "Medium"
$ fc-match 4e5zedrkbxp
DejaVuSans.ttf: "DejaVu Sans" "Book"
Auf der Manpage wird fc-match(1)
bestätigt, dass der Befehl keine exakten Übereinstimmungen ausführt, sondern die nach seiner Ansicht besten Übereinstimmungen zurückgibt. Sie können sie alle mit -a
oder prägnanter sehen -s
:
$ fc-match -s uni # now it also finds unifont
DejaVuSans.ttf: "DejaVu Sans" "Book"
DejaVuSans-Bold.ttf: "DejaVu Sans" "Bold"
DejaVuSans-Oblique.ttf: "DejaVu Sans" "Oblique"
DejaVuSans-BoldOblique.ttf: "DejaVu Sans" "Bold Oblique"
n019003l.pfb: "Nimbus Sans L" "Regular"
helvR12-ISO8859-1.pcf.gz: "Helvetica" "Regular"
FreeSans.ttf: "FreeSans" "нормален"
KanjiStrokeOrders.ttf: "KanjiStrokeOrders" "Medium"
Eadui.ttf: "Eadui" "Medium"
Unifont.ttf: "unifont" "Medium"
FreeSerif.ttf: "FreeSerif" "нормален"
cu12.pcf.gz: "ClearlyU" "Regular"
cu-pua12.pcf.gz: "ClearlyU PUA" "Regular"
10x20.pcf.gz: "Fixed" "Regular"
Darauf können Sie einfach "Schraube Sie" sagen und eine weitere Suche hinzufügen, um eine Übereinstimmung zu erhalten, wie Sie es erwarten:
$ fc-match -s uni | grep -i uni
Unifont.ttf: "unifont" "Medium"
Ihre Frage ist jedoch, wie genau das Matching durchgeführt wird. FcFontMatch(3)
und bestätigen Sie grob, dass ein Standard- / konfigurierter Wert verwendet wird, und bestätigen Sie definitiv, dass der von Ihnen übergebene Suchbegriff zuerst geändert wird. Für alles, was noch tiefer geht, müssen Sie den Code überprüfen (beginnen Sie mit der oben genannten Funktion).