2017-12-29 57 views
1

GTK3 창에 레이블을 추가하고 레이블의 글꼴 크기를 설정하려고합니다. 내 시도는 다음과 같습니다.Pango 속성으로 라벨의 글꼴 크기를 설정하는 방법은 무엇입니까?

#include <gtk/gtk.h> 

static void 
add_label (GtkWidget* window, gchar *text) 
{ 

    GtkWidget *label = gtk_label_new(text); 
    PangoAttrList *attrlist = pango_attr_list_new(); 
    PangoAttribute *attr = pango_attr_size_new_absolute(20); 
    pango_attr_list_insert(attrlist, attr); 
    gtk_label_set_attributes(GTK_LABEL(label), attrlist); 
    pango_attr_list_unref(attrlist); 
    gtk_container_add (GTK_CONTAINER (window), label); 
} 

static void 
activate (GtkApplication* app, 
      gpointer  user_data) 
{ 
    GtkWidget *window; 

    window = gtk_application_window_new (app); 
    gtk_window_set_title (GTK_WINDOW (window), "Window1"); 
    gtk_window_set_default_size (GTK_WINDOW (window), 200, 200); 
    add_label(window, "Hello world"); 
    gtk_widget_show_all (window); 
} 

int 
main (int argc, char **argv) 
{ 
    GtkApplication *app; 
    int status; 

    app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE); 
    g_signal_connect(app, "activate", G_CALLBACK(activate), NULL); 
    status = g_application_run(G_APPLICATION(app), argc, argv); 
    g_object_unref (app); 

    return status; 
} 

이것은 어떤 레이블도 생성하지 않습니다. 줄을 주석으로 처리하면 :

gtk_label_set_attributes(GTK_LABEL(label), attrlist); 

레이블이 표시되지만 글꼴 크기는 설정되지 않습니다.

+0

이 방금 CSS를 사용해야하는 또 다른 이유입니다. :) –

답변

2

여기에 PANGO_SCALE이 누락되었다고 생각합니다.

PangoAttribute *attr = pango_attr_size_new_absolute(20 * PANGO_SCALE); 

이 당신에게 원하는 결과를 제공해야합니다 :

enter image description here

+0

위대한,이 작품! 나는 Pango 스케일링에 대해 몰랐다. –

+1

[문서] (https://developer.gnome.org/pango/stable/pango-Text-Attributes.html#pango-attr-size-new- 절대)는 '크기 : 글꼴 크기, PANGO_SCALEths of 장치 단위 .' 그래서 당신은 왜 자랄 필요가있을거야. –