免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5395 | 回复: 3
打印 上一主题 下一主题

<< 自言自语 GTK+ 编程[1] -- 关于中文显示 >> [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-04-29 19:55 |只看该作者 |倒序浏览
<< 自言自语 GTK+ 编程[1] -- 关于中文显示 >;>;

>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;

问:论坛中有人说 GTK+ 并不支持中文,是这样吗?
问:为什么在控件上的汉字无法显示,并伴有如下错误警告?
问:为什么在屏幕上输出的汉字变成了乱码?
问:在修改控件字体的第一步就发生了错误,为什么 gdk_font_load() 总是失败?
问:我不想使用宋体,怎样获得其它字体的代号?
问:你为什么没有说到 gettext() 及相关国际化标准?

>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;

问:
    论坛中有人说 GTK+ 并不支持中文,是这样吗?
-----------------------------------------------------------
答:
    GTK+ 采用 UTF-8 编码就是为了支持多字节文字,所以GTK+
肯定支持中文,而且非常出色,你可以看到网上使用 GTK+ 编写
的中文软件数不胜数,所以没必要理会那种说法。
    ( 我真的看过这类的帖子,误人子弟...呵呵... )

>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;

问:
    为什么在控件上的汉字无法显示,并伴有如下错误警告:
"** (:1864): WARNING **: Invalid UTF8 string passed to
pango_layout_set_text()"
-----------------------------------------------------------
答:
    GTK+ 中的字符串均采用 UTF-8 格式编码,这个提示就是告
诉您,程序中的字符串编码格式不是 UTF-8,通常这是由编辑器
造成的,例如在我的 VC7 中,默认的存档编码格式为 GB2312。
    但是,除了将文件以 UTF-8编码格式存档外,你还可以使用
glib 的转换函数在程序的运行过程中将字符串转换为 UTF-8。
    例如: 将
    button = gtk_button_new_with_label( "确定" );
           改成
    button = gtk_button_new_with_label(
               g_locale_to_utf8("确定",4,NULL,NULL,NULL));

>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;

问:
    为什么在屏幕上输出的汉字变成了乱码?
-----------------------------------------------------------
答:
    既然可以显示乱码,就表明与编码格式无关。
    您可能已经想到了 --- 对,问题就出在字体上。
    一般情况下,系统会用"Sans"作为默认字体,但这种字体中
只包含了 ASCII 码,所以汉字是无法显示的。

>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;

问:
    在修改控件字体的第一步就发生了错误,gdk_font_load()
总是失败,为什么?
-----------------------------------------------------------
答:
    首先向您提供一些建议:
  1.不要用 GDK 的一些函数更改字体,因为那是 GTK+的不稳定
因素之一(至少在2.0以下版本中是这样的)。
  2.为了获得更多的字体,应该避免使用 GdkFont类型,及相关
函数,取而代之的是 Pango 库,这是 GTK+ 的一部分。
  3.GdkFont 只能使用 XFont 字体,而且使用方法相对复杂,
PangoFontDescription 可以使用 XFont,以及一些本地字体,
包括 Win Font, XRender Font, TrueType Font,所以您没有必
要再留恋 GdkFont 了。
  4.您不需要修改所有控件,更简便的方法是在主窗口创建后立
即修改它的字体,将来创建的控件会继承它的这项属性。
    例如:
    window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
    {
        GtkStyle  *style = gtk_rc_get_style( window );
        pango_font_description_set_family(
                         style->;font_desc, "Stsong" );
        gtk_widget_set_style( window, style );
    }
    ( 这三句代码是将程序的字体设置为 "华文宋体" )

>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;

问:
    我不想使用宋体,怎样获得其它字体的代号?
-----------------------------------------------------------
答:
    部分字体的代号和它的文件名是相同的,例如黑体的代码为
"Simhei",华文宋体为"Stsong"。
    您还可以通过一些 Linux/Unix 下的编辑软件的字体选择框
来查找字体对应的代码。
    但标准的方法是调用 Pango库中的相应函数来查找机器上已
安装的字体。
    如果想了解更多关于 Pango的高级使用方法,请参考它自带
的 API 开发手册。

>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;

问:
    你为什么没有说到 gettext() 及相关国际化标准?
-----------------------------------------------------------
答:
    目前国内多数程序员采用这个办法汉化程序,所以我没有必
要再多说。但它不一定对每个人都合适,我通常采用自己管理语
言模块的方法实现国际化,这在很多情况下要比 gettext()更方
便。

>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;
>; 作 者:付强
>; 兴 趣:ASM/C/C++/Java/Perl/GTK+/CGI/ISAPI/Linux ...
>; Email:youlingbing@163.net
>;  OICQ:775341
>;--------------------------------------------------------->;
>;     这些文章其实是我的学习笔记,以 FAQ方式代问自答,希
>; 望能帮初学者解决一点实际问题。
>;     您可以随意修改或转载本文,但请保证内容的正确性,以
>; 免误人子弟 ---  谢谢 :)
>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;>;

论坛徽章:
0
2 [报告]
发表于 2003-04-30 08:38 |只看该作者

<< 自言自语 GTK+ 编程[1] -- 关于中文显示 >>

决定把它加入faq
这样你没有意见吧

另外正在向坛主申请增加精华分
到时会给你分的

论坛徽章:
0
3 [报告]
发表于 2003-04-30 10:24 |只看该作者

<< 自言自语 GTK+ 编程[1] -- 关于中文显示 >>

谢谢
:)

论坛徽章:
0
4 [报告]
发表于 2009-03-30 11:21 |只看该作者
这篇文章不错的,谢谢楼主了,问题正式初学者困惑的地方,再次感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP