Sane默认字体?

问题描述:

有没有一个地方可以获得所有保证在任何带有GTK的系统上出现的字体列表?我需要一种方法来为某些图设置理智的默认字体,当然,理智的默认字体必须存在。Sane默认字体?

编辑:如果没有特定的字体保证是否存在,是否有一种简单的方法来获得一些理智的默认可缩放sans-serif字体?我不在乎细节。

编辑#2:如果在GTK上没有任何事情可以得到保证,有人可以给我很好的平台特定的默认可扩展sans-serif字体,保证在Windows和* nix/X11的任何合理安装中都有。

您应该在GTK +中使用的默认字体是“Sans”,“Monospace”和“Serif”。我不相信任何特定的字体是保证存在的。

+0

这些可缩放的字体是?我可以假设我需要的任何尺寸都存在吗?另外,它们是否区分大小写? – dsimcha 2010-07-19 14:49:24

+0

我认为可以安全地假设Sans,Monospace和Serif是可扩展的,并且具有大小写。它们只是给定平台的默认字体。这些是您的应用中使用的正确的默认字体。如果它们被破坏了,那么修复将会是平台,而不是应用程序。 – 2010-07-23 02:15:48

因为GTK是一个跨平台的工具包,并且不安装任何自己的字体,所以任何带有GTK的系统都不能保证字体存在。

根据你如何渲染你的图(开罗?),任何文本应该已经以默认字体绘制。 编辑:听起来就像你用gdk_draw_layout()来绘制文字。这需要一个PangoLayout参数。如果你使用gtk_widget_create_pango_layout()获得PangoLayout,那么它应该已经有一个理智的默认字体集。你甚至可以通过使用pango_layout_get_context()得到PangoContext,然后在那里调用pango_context_get_font_description()来找出什么字体。

如果您还在使用GNOME,则可以使用GConf检查/desktop/gnome/interface/font-name,/desktop/gnome/interface/monospace-font-name/desktop/gnome/interface/document-font-name键的值。

+0

现在我正在使用DrawingArea和gdk的drawable API。 – dsimcha 2010-07-19 14:57:05

+0

查看更新的答案。 – ptomato 2010-07-19 16:03:36