|
发表于 2007-8-14 22:02:25
|
显示全部楼层
我这个例子是utf8编码,lin和win显示中文都没有问题。pango支持freetype2以及cairo两个后端,linux是安装了fontconfig的,把simsun.ttc拷贝到了/usr/share/truetype,然后再运行的fc-cache更新了一下字体缓存。
gtk内部用的就是UTF8编码,问题是如果我把其中的中文换用GBK编码,则不论locale如何设置,出来的总是乱码。
难道gtk只支持UTF8编码的字符,似乎跟glibc的表现行为有很大不同嘛。- #include <gtk/gtk.h>
- #include <glib/gi18n.h>
-
- #define GETTEXT_PACKAGE "gtktests"
- #define PACKAGE_LOCALE_DIR "./locale"
- int main(int argc, char**argv)
- {
- bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
- bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF8");
- textdomain (GETTEXT_PACKAGE);
-
- GtkWidget *window;
- GtkWidget *label;
- GtkWidget *hbox;
- GtkWidget *vbox;
- GtkWidget *button;
- GtkWidget *text;
-
- gtk_init( &argc, &argv);
- window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- hbox = gtk_hbox_new( FALSE, 4);
- vbox = gtk_vbox_new( FALSE, 0);
- label = gtk_label_new(_("地址:"));
- button = gtk_button_new_with_label("确定");
- text = gtk_entry_new_with_max_length( 256);
-
- gtk_box_pack_start( GTK_BOX( hbox),label, FALSE, FALSE, 5);
- gtk_box_pack_start( GTK_BOX( hbox),text, TRUE, TRUE, 5);
- gtk_box_pack_start( GTK_BOX( hbox),button, FALSE, FALSE, 5);
-
-
- g_signal_connect(G_OBJECT(window), "delete_event", gtk_main_quit, NULL);
-
- gtk_container_add(GTK_CONTAINER(window), hbox);
- gtk_widget_show_all(window);
- gtk_main();
- return 0;
- }
复制代码 |
|