如何知道显示字符的字体名称? (X11/X 英尺)

如何知道显示字符的字体名称? (X11/X 英尺)

我想知道任何 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.这将缩小搜索范围。

相关内容