1

如果我有像“Courier New”这样的字体名称,如何获得“- -courier- -*- - ...”这样的名称?我对前两个部分感兴趣——制造商和家庭。

谢谢你。

PS 我可以使用标准的 Xlib 函数。我不想依赖任何其他库。

4

1 回答 1

1

不幸的是,字体处理在 X11 中是零散的,你想要的是不可能的。

Xlib 函数XListFonts()将返回“旧”、固定大小的字体列表,例如“-adobe-courier-bold-o-normal--0-0-100-100-m-iso10464-1”。这就是所有的信息;只是一个名称和一堆参数。

您正在寻找的是来自 Freetype like 的功能XftFontOpenName(),您可以在其中提供类似“Courier New-14:bold:slant=italic,oblique”的模式。但这是一种完全不同的字体渲染方式,两种字体系统之间没有任何联系。

您可以使用 查询 Xft 库以获取字体列表XftFontMatch(),这可能会为您提供所需的信息。但是您将不得不使用 freetype 库(我认为要付出很小的代价)。

于 2013-11-27T17:32:52.870 回答