
Mein dmenu kann die Emoji-Schriftart in Noto-Farbe nicht erkennen. Es kann andere Schriftarten erkennen, aber diese nicht. Wie kann ich das Problem lösen?
➜ fc-list | grep -i "notocoloremoji"
/usr/share/fonts/truetype/noto/NotoColorEmoji.ttf: Noto Color Emoji:style=Regular
➜ dmenu -fn "Noto Color Emoji"
no fonts could be loaded.
Antwort1
Mehrere Tools von suckless dmenu
verwenden st
eine Bibliothek namens , libxft
um die Schriftartdarstellung zu handhaben. Diese Bibliothek hat einen Fehler, der die Darstellung farbiger Schriftarten verhindert.Glücklicherweise wurde dieser Fehler tatsächlich behoben, wurde aber aus irgendeinem Grund nicht upstream integriert. Um Farbschriftarten zum Laufen zu bringen, müssen Sie also diese gepatchte Version von installieren libxft
und dann eine Überprüfung entfernen, dmenu
die Farbschriftarten manuell deaktiviert (aufgrund dieses Fehlers). Ich habe die manuellen Schritte dazu unten beschrieben, aber als einfachere Lösung können Sie einfach diesen Fork von installieren, dmenu
der dies für Sie erledigt:https://github.com/valeriangalliat/dmenumoji
Manuelle Schritte
libxft
Unter Arch Linux können Sie mit diesem Paket eine gepatchte Version installieren (die die alte Version ersetzt):libxft-bgra. Bei anderen Distributionen müssen Sie den Quellcode für libxft herunterladen,das Pflaster auftragen, und kompilieren und installieren Sie dann manuell die gepatchte Version von libxft.
Sobald Sie die gepatchte Bibliothek haben, müssen Sie die Quelle von dmenu bearbeiten, um den Code zu entfernen, der (früher defekte) Farbschriftarten deaktiviert. Diese Prüfung steht ganz oben drw.c
und sieht folgendermaßen aus:
/* Do not allow using color fonts. This is a workaround for a BadLength
* error from Xft with color glyphs. Modelled on the Xterm workaround. See
* https://bugzilla.redhat.com/show_bug.cgi?id=1498269
* https://lists.suckless.org/dev/1701/30932.html
* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=916349
* and lots more all over the internet.
*/
FcBool iscol;
if(FcPatternGetBool(xfont->pattern, FC_COLOR, 0, &iscol) == FcResultMatch && iscol) {
XftFontClose(drw->dpy, xfont);
return NULL;
}
Entfernen Sie diesen Codeteil und kompilieren Sie dmenu neu. Dann können Sie Farbschriftarten verwenden!Hier ist ein Blogbeitrag.