是否有诸如 xwininfo、xdpyinfo、xprop 或 xlsclient 之类的命令可以告诉我 X 客户端窗口正在使用什么字体?

slm*_*slm 7 command-line fonts x11

我试图找到一个命令来报告给定 X 窗口配置使用的字体。有这样的命令吗?

通过这些工具,我没有看到一个可以给我这个的选项:

  • 微信
  • xdpy信息
  • 道具
  • 客户端

查看输出,lsof我看到似乎正在使用的字体文件,但是不清楚给定窗口实际上正在使用哪些字体文件(如果有的话)。

例子

$ lsof |grep gnome-ter|grep font | head -8
gnome-ter  3282      saml  mem       REG              253,0    223040    1180775 /usr/lib64/libfontconfig.so.1.4.4
gnome-ter  3282      saml  mem       REG              253,0   3656228    1588238 /usr/share/fonts/un-core/UnDotum.ttf
gnome-ter  3282      saml  mem       REG              253,0    585272     266781 /usr/share/fonts/gnu-free/FreeSans.ttf
gnome-ter  3282      saml  mem       REG              253,0    323284    1447753 /usr/share/fonts/dejavu/DejaVuSansMono.ttf
gnome-ter  3282      saml  mem       REG              253,0    190240    1588229 /usr/share/fonts/paktype-naqsh/PakType_Naqsh.ttf
gnome-ter  3282      saml  mem       REG              253,0    683528    1447770 /usr/share/fonts/dejavu/DejaVuSans.ttf
gnome-ter  3282      saml  mem       REG              253,2     42144   10488291 /home/saml/.fonts/ProggyCleanSZBP.ttf
gnome-ter  3282      saml  mem       REG              253,0     15504    1966923 /var/cache/fontconfig/87f5e051180a7a75f16eb6fe7dbd3749-le64.cache-3
Run Code Online (Sandbox Code Playgroud)

需要明确的是,我对这个解决方案不感兴趣,标题为:如何检查系统使用哪种字体?

$ gconftool-2 --get /apps/gnome-terminal/global/profile_list
[Default,Profile0]

$ gconftool-2 --get /apps/gnome-terminal/profiles/Default/font
Monospace 12
$ gconftool-2 --get /apps/gnome-terminal/profiles/Profile0/font
TakaoMincho Bold 36
Run Code Online (Sandbox Code Playgroud)

如果可能,我想通过 X 确定此信息。

参考

Gil*_*il' 5

大多数现代应用程序,包括所有 Gtk (? GNOME) 和 Qt (? KDE) 应用程序,都使用xft,它执行渲染客户端并将图像发送到服务器。(可能通过XRender扩展,但它是发送用于渲染的图像,而不是文本)。所以对于这些应用程序,X 服务器没有字体的概念。没有比检查应用程序是否打开了字体文件更好的方法了。

即使对于使用服务器端字体的老式应用程序,我认为 Xlib 中没有一种方法可以查询另一个客户端正在使用哪些字体。