
私の 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
手動手順
libxft
Arch 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 を再コンパイルすると、カラー フォントを使用できるようになります。ブログ投稿はこちら。