如何在开罗更具体地 select 字体?

How to select fonts more specifically in cairo?

cairo中,字体可以通过它们的姓氏来指定,例如'HelveticaNeueLTStd'。然后,权重和样式可以由 cairo.FONT_WEIGHT_[NORMAL|BOLD]cairo.FONT_SLANT_[NORMAL|OBLIQUE|ITALIC] 定义,它们是具有整数值的常量。内置的只有这2个和3个选项。我想知道,如果家里有更多的重量和样式,如何select?例如。浅色、半粗体等

我在 python 2.7 中使用 pycairo 1.10.0,尽管这些东西在任何语言中看起来都一样。

我可以通过猜测找到解决方案,所以我会回答我的问题,但我仍然想知道这是否是标准做法。

字体文件有各种名称和其他注释。在 FontForge 中,您可以在菜单 Element > Font info 中找到它们。在这里,我发现 cairo 能够通过其 TTF names > Family 或与 WindowsString 相同的字体来识别字体。对于 Adob​​e 的 Helvetica Neue light,此字符串的值为 'HelveticaNeueLT Std Lt'。然后选择这个名称的字体,并将倾斜和粗细设置为正常,将使用较轻的粗细:

context.select_font_face('HelveticaNeueLT Std Lt', \
    cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)

很多软件都可以查字体名。 Linux fontconfig 能够列出字体,第二列中的名称是 cairo 识别的:

$ fc-list | grep HelveticaNeue
...
/usr/share/fonts/.../HelveticaNeueLTStd-Lt.otf: Helvetica Neue LT Std,HelveticaNeueLT Std Lt:style=45 Light,Regular
...
$ fc-list | sed 's/.*:\(.*,\|\s\)\(.*\):.*//'
...
HelveticaNeueLT Std Lt
...