2017-04-15 35 views
0

我知道,類似的問題已經在這裏問:How to get a current font for GtkTextView?如何找到當前字體爲GtkLabel的

gtk_style_context_get_font自3.8版本已被棄用,不應該在新編寫的代碼中使用。改爲使用gtk_style_context_get()作爲「字體」或子屬性。

在這裏,我卡住了。如何使用新推薦的技術來找出小部件的當前字體?

@Edit 一些代碼:

PangoFontDescription *font_desc; 
GtkStyleContext *style; 
GdkRGBA fore_color; 

font_desc = pango_font_description_new(); 
style = gtk_widget_get_style_context (base); 
gtk_style_context_get_color (style, GTK_STATE_FLAG_NORMAL, &fore_color); 

gtk_style_context_save (style); 
gtk_style_context_set_state (style, 0); 
gtk_style_context_get (style, GTK_STATE_FLAG_NORMAL, "font", font_desc, NULL); 
gtk_style_context_restore (style); 

if (G_TYPE_CHECK_INSTANCE_TYPE ((font_desc), PANGO_TYPE_FONT_DESCRIPTION)) { 
    printf("%s\n", "Is a font"); 
} else { 
    printf("%s\n", "Not a font"); 
} 

printf("%s\n", pango_font_description_get_family (font_desc)); 

打印 '隨機' 字符,因爲pango_font_description_get_family返回NULL指針。

同時打印「不是一個字體」

回答

0

這僅僅是在Github上快速搜索。

PangoFontDescription *font_desc; 
GtkStyleContext *style_context; 
style_context = gtk_widget_get_style_context (widget); 
gtk_style_context_save (style_context); 
gtk_style_context_set_state (style_context, 0); 
gtk_style_context_get (style_context, 
    gtk_style_context_get_state(style_context), "font", &font_desc, NULL); 
gtk_style_context_restore (style_context); 

見附近的行號:96和384

https://github.com/jessevdk/libgd/blob/master/libgd/gd-two-lines-renderer.c

+0

應工作(理論上),但實際上當我打電話pango_font_description_get_family()上與font_desc我得到一個空指針。 – ProNOOB