手動手順

手動手順

私の dmenu は noto color emoji フォントを検出できません。他のフォントは検出できますが、このフォントは検出できません。どうすれば解決できますか?

➜ 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.

答え1

やなどのいくつかの suckless ツールはdmenu、フォントのレンダリングを処理するためにとst呼ばれるライブラリを使用しますlibxft。このライブラリには、カラー フォントをレンダリングできないバグがあります。幸いなことに、このバグは実際に修正されましたですが、何らかの理由でアップストリームにマージされていません。そのため、カラー フォントを機能させるには、 のパッチ バージョンをインストールしlibxft、カラー フォントを手動で無効にするチェック インを削除する必要がありますdmenu(このバグのため)。これを手動で行う手順を以下に書きましたが、より簡単な解決策として、 のフォークをインストールして、dmenuこれを実行するだけで済みます。https://github.com/valeriangalliat/dmenumoji

手動手順

libxftArch Linux では、次のパッケージを使用して、(古いバージョンを置き換えて)のパッチ適用バージョンをインストールできます。libxft-bgra他のディストリビューションではlibxftのソースをダウンロードする必要があります。パッチを適用する、その後、パッチを適用したバージョンの libxft を手動でコンパイルしてインストールします。

パッチを適用したライブラリを入手したら、dmenu のソースを編集して、(以前は壊れていた) カラー フォントを無効にするコードを削除する必要があります。このチェックは の上部近くにありdrw.c、次のようになります。

    /* 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;
    }

このコードの一部を削除して dmenu を再コンパイルすると、カラー フォントを使用できるようになります。ブログ投稿はこちら

関連情報