我想知道任何 X 应用程序上显示的字符的字体名称。当然,我可以通过将显示的字符与每个字体字符进行比较来知道字体名称,但这需要很长时间。有没有更简单、更明智的方法呢?
当我复制和粘贴字符时,字体信息似乎也被复制。所以,我认为有一些方法可以知道字体名称。复制字符并查看剪贴板?
答案1
我认为没有通用的解决方案。一旦文本被渲染,系统的任何组件就没有理由保留它所渲染的字体的信息。
因此,我将添加一些可以提供帮助的工具:
要列出 Linux 上的所有可用字体,请打开终端并运行命令:
fc-list
输出应如下所示:
/usr/share/fonts/opentype/mathjax/MathJax_SansSerif-Regular.otf: MathJax_SansSerif:style=Regular
/usr/share/fonts/opentype/urw-base35/NimbusRoman-Italic.otf: Nimbus Roman:style=Italic
/usr/share/fonts/truetype/dejavu/DejaVuSans-BoldOblique.ttf: DejaVu Sans:style=Bold Oblique
/usr/share/fonts/truetype/kacst/KacstOffice.ttf: KacstOffice:style=Medium
/usr/share/fonts/type1/gsfonts/n019003l.pfb: Nimbus Sans L:style=Regular
/usr/share/fonts/truetype/abyssinica/AbyssinicaSIL-Regular.ttf: Abyssinica SIL:style=Regular
在哪里:
/usr/share/fonts/opentype/mathjax/MathJax_SansSerif-Regular.otf File name
: Separator
MathJax_SansSerif Font name
: Separator
style=Regular The font 'style'
检查man fc-list
更多详细信息
您还可以使用以下命令获取 n 分钟前访问的字体:
find /usr/share/fonts -type f -amin +n
查看man find
更多详细信息...
我能想到的最后一件事就是使用
FC_DEBUG
.由于大多数程序都是通过 fontconfig 库渲染的。如果您启动一个使用 fontconfig 的程序,并将 FC_DEBUG 环境变量设置为合适的值,它将显示一些有关正在加载的字体的信息。例如:FC_DEBUG=2053 gedit
答案2
我想知道任何 X 应用程序上显示的字符的字体名称。
任何 X 应用程序都无法做到这一点。
当我复制粘贴字符时,字体信息似乎也被复制了。
我从来没有见过这种情况发生,而且你没有提到你是从哪个应用程序复制的。然而,X 应用程序能提供不同格式的选择,以及特别的浏览器等应用程序通常提供 HTML 作为其中一种格式(如果您在网页上选择文本)。 HTML 当然会包含字体标签。
因此,如果这是您一直在观察的效果,您可以使用 HTML 格式获得选择,例如使用命令行工具,请参阅这个问题。
但如果您从中复制的 X 应用程序不提供这种格式的选择,则该方法将不起作用。
答案3
出于数百个(好的)原因,包括但不限于:
- 事实上,大多数现代文档/应用程序可能只指定一个字体系列(sans、mono、serif…)
- 事实上,主题、DE 的设置可以强制使用精确定义的字体,而不管应用程序的(默认)要求如何(顺便说一句,这可以解释为什么通过剪贴板复制/粘贴可能(有时)显示相同的字形)
- 最初需要字体别名是为了提供商业字体的无版权替代品,
- html 页面/pdf 文档/office 文档可能嵌入您的系统上不存在的专用字体文件...
唯一可靠的方法是与某些字形数据库进行图像比较。是的 !自动化你所说的,实际上用你的眼睛做的!
有很多专门用于字体设计的商业程序(绝大多数适用于 MacOS)提供了这种功能。可惜好老了字体锻造只是无法竞争。
不过,您可以尝试一些在线资源,例如:
更不用说专用的 Chrome / Firefox 浏览器扩展了。
当然;由于这都是关于图像处理的,因此交付之前可能需要一些时间,并且结果的准确性将取决于所使用的字体数据库的丰富程度。 (Matcherator 声称 900 000,MyFonts 130 000)
您只需要提供尽可能精确的屏幕截图即可。
答案4
当我复制和粘贴字符时,字体信息似乎被复制,
将缓冲区粘贴到例如 LibreOffice 中,您可能会看到正在使用的字体名称。
另一种选择是通过运行应用程序
strace -f -e file application 2>&1 | grep -i ttf
,您将看到所有实际打开的字体文件。字体名称通常是硬编码的,您可以通过
strings
.这将缩小搜索范围。