Manuelle Schritte

Manuelle Schritte

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 dmenuverwenden steine Bibliothek namens , libxftum 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 libxftund dann eine Überprüfung entfernen, dmenudie 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, dmenuder dies für Sie erledigt:https://github.com/valeriangalliat/dmenumoji

Manuelle Schritte

libxftUnter 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.cund 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.

verwandte Informationen