当前时区 GMT+8, 现在时间是 2008-7-7 01:00 游客: 注册 登录 仅登录论坛 | 搜索 帮助


标题: gnome 面板放置在左/右时,它上面中文显示正常吗?
sunmoon1997
版主
Rank: 7Rank: 7Rank: 7


UID 56569
精华 4
积分 3619
帖子 1985
阅读权限 255
注册 2003-8-21
来自 China
状态 离线
发表于 2005-10-26 21:38  资料  主页 短消息  加为好友  QQ
a testcase.
[code:1]
#include <cairo.h>
#include <cairo-ft.h>
#include <math.h>

#define WIDTH 40
#define HEIGHT 180
#define TEXT " cairo 竖写文字测试"

int main() {
        cairo_surface_t * sr;
        cairo_t * cr;
        cairo_font_face_t * font_face;
        cairo_matrix_t font_matrix;
        cairo_text_extents_t extents;
        cairo_font_options_t *options;
        double y = 0;

        FcPattern * pattern, * resolved;
        FcResult result;

        pattern = FcPatternCreate ();

#if 0
        FcPatternAddString (pattern, FC_FAMILY, (FcChar8 *)"bitstream vera sans");
#else
        FcPatternAddString (pattern, FC_FAMILY, (FcChar8 *)"sans");
#endif

        FcConfigSubstitute (NULL, pattern, FcMatchPattern);
           FcDefaultSubstitute (pattern);
   
        resolved = FcFontMatch (NULL, pattern, &result);

        /* vertical layout */
        FcPatternDel (resolved, FC_VERTICAL_LAYOUT);
        FcPatternAddBool (resolved, FC_VERTICAL_LAYOUT, FcTrue);

        font_face = cairo_ft_font_face_create_for_pattern (resolved);

        cairo_matrix_init_scale (&font_matrix, 14.0, 14.0);

        sr = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,  WIDTH, HEIGHT);
        cr = cairo_create (sr);

        cairo_set_font_face (cr, font_face);
        cairo_set_font_matrix (cr,  &font_matrix);
       
        cairo_set_source_rgb (cr, 1.0, 1.0, 1.0);
        cairo_paint(cr);
       
        cairo_set_source_rgb (cr, 0, 0, 1.0);       
        cairo_text_extents (cr, TEXT, &extents);
        cairo_move_to (cr, -extents.x_bearing, y - extents.y_bearing);
        cairo_show_text (cr, TEXT);

        cairo_surface_write_to_png (sr, "cairo-vertical-layout-text.png");

        FcPatternDestroy (pattern);
        FcPatternDestroy (resolved);

        cairo_font_face_destroy (font_face);
        cairo_destroy (cr);
        cairo_surface_destroy (sr);

        return 0;
}

[/code:1]



 附件: 您所在的用户组无法下载或查看附件




偷来的签名: [code:1] USE="-bitch -in-laws nice gorgeous smart" emerge girlfriend >>> china/suzhou/girlfriend merged [/code:1]
顶部
mandrakechina
金牌会员
Rank: 8Rank: 8


UID 12345
精华 9
积分 8656
帖子 3861
阅读权限 90
注册 2003-1-12
来自 北京
状态 离线
发表于 2005-10-27 00:39  资料  主页 短消息  加为好友 
没编译,不过竖写文字中,可能要考虑对中文和日文区别对待,英文的旋转方向也必须正确选择,而且还要能够对标点符号进行自动替换。工程量不小。





我很快乐,请不要再说爱我
顶部
sunmoon1997
版主
Rank: 7Rank: 7Rank: 7


UID 56569
精华 4
积分 3619
帖子 1985
阅读权限 255
注册 2003-8-21
来自 China
状态 离线
发表于 2005-10-27 12:46  资料  主页 短消息  加为好友  QQ
贴个图



 附件: 您所在的用户组无法下载或查看附件




偷来的签名: [code:1] USE="-bitch -in-laws nice gorgeous smart" emerge girlfriend >>> china/suzhou/girlfriend merged [/code:1]
顶部
mandrakechina
金牌会员
Rank: 8Rank: 8


UID 12345
精华 9
积分 8656
帖子 3861
阅读权限 90
注册 2003-1-12
来自 北京
状态 离线
发表于 2005-10-27 19:25  资料  主页 短消息  加为好友 
我早就说过,效果肯定不对。这才是正确的效果。国家标准对这个还有更加复杂的要求,比如数字的用法。



 附件: 您所在的用户组无法下载或查看附件




我很快乐,请不要再说爱我
顶部
sunmoon1997
版主
Rank: 7Rank: 7Rank: 7


UID 56569
精华 4
积分 3619
帖子 1985
阅读权限 255
注册 2003-8-21
来自 China
状态 离线
发表于 2005-10-27 20:30  资料  主页 短消息  加为好友  QQ
[quote:2d1b8bec99="mandrakechina"]我早就说过,效果肯定不对。这才是正确的效果。国家标准对这个还有更加复杂的要求,比如数字的用法。[/quote]
呵呵, 这对 cairo 来说就是正确的。为什么了?
因为在 cairo 中, 它只做一些相对底层的东西, 比如竖写它只要做到把文字垂直放
置就可以了。而要希望要我们要的竖写效果,就要更高层的 pango 的实现了。当然
要完整的实现中文的竖写相当复杂。 而且,在我看来标点符号的问题也不应该由
pango 来处理的, 而是再高一级,因为毕竟 pango 不是 office。 功能是一层一
层来实现的, 你不能一吞掉一头大象。





偷来的签名: [code:1] USE="-bitch -in-laws nice gorgeous smart" emerge girlfriend >>> china/suzhou/girlfriend merged [/code:1]
顶部
mandrakechina
金牌会员
Rank: 8Rank: 8


UID 12345
精华 9
积分 8656
帖子 3861
阅读权限 90
注册 2003-1-12
来自 北京
状态 离线
发表于 2005-10-27 20:52  资料  主页 短消息  加为好友 
所以我说在cairo中做汉字旋转的补丁没有什么意义,因为汉字本来就不旋转。不过,如果让cairo能够很好的处理标点符号的位置问题倒是值得研究,竖写和横写时标点符号glyph的位置不同。横写时,glyph画在左下角;竖写时,glyph画在右上角。遗憾的是,在Unicode中,这两种标点符号没有进行区分,都是一个逗号(句号什么的也是)。但这样会引入繁体习惯的问题,因为在台湾那边,标点符号统一写在正中间,横写竖写都一样。

Pango上边就是Application了,没法再抽象了。





我很快乐,请不要再说爱我
顶部
sunmoon1997
版主
Rank: 7Rank: 7Rank: 7


UID 56569
精华 4
积分 3619
帖子 1985
阅读权限 255
注册 2003-8-21
来自 China
状态 离线
发表于 2005-10-27 20:59  资料  主页 短消息  加为好友  QQ
前面我都说过了我写的补丁不是汉字旋转补丁。。。怎么就不能理解了。。。
标点符号的位置也不是 cairo 要处理的问题。
横竖标点的符号的问题就给是应用程序处理的。





偷来的签名: [code:1] USE="-bitch -in-laws nice gorgeous smart" emerge girlfriend >>> china/suzhou/girlfriend merged [/code:1]
顶部
hzhr
注册会员
Rank: 2


UID 4450
精华 0
积分 229
帖子 102
阅读权限 20
注册 2002-11-1
来自 China
状态 离线
发表于 2005-10-28 00:31  资料  短消息  加为好友 
Well done! sunmoon1997!
能不能再研究一下,怎么让下列代码工作正常?即通过fontconfig替换字体的大小。
[code:1]
        <match target="font" >
                <test qual="any" name="family" compare="eq">
                        <string>SimSun</string>
                        <string>NSimSun</string>
                        <string>宋体</string>
                        <string>新宋体</string>
                </test>
                <test name="pixelsize" compare="more_eq">
                        <!--int>10</int-->
                        <double>10.6</double>
                </test>
                <test name="pixelsize" compare="less">
                        <int>12</int>
                </test>
                <edit name="pixelsize" mode="assign">
                        <int>12</int>
                </edit>
        </match>
[/code:1]

顶部
sunmoon1997
版主
Rank: 7Rank: 7Rank: 7


UID 56569
精华 4
积分 3619
帖子 1985
阅读权限 255
注册 2003-8-21
来自 China
状态 离线
发表于 2005-10-28 06:52  资料  主页 短消息  加为好友  QQ
[quote:f1bcfbbab9="hzhr"]Well done! sunmoon1997!
能不能再研究一下,怎么让下列代码工作正常?即通过fontconfig替换字体的大小。
[code:1]
        <match target="font" >
                <test qual="any" name="family" compare="eq">
                        <string>SimSun</string>
                        <string>NSimSun</string>
                        <string>宋体</string>
                        <string>新宋体</string>
                </test>
                <test name="pixelsize" compare="more_eq">
                        <!--int>10</int-->
                        <double>10.6</double>
                </test>
                <test name="pixelsize" compare="less">
                        <int>12</int>
                </test>
                <edit name="pixelsize" mode="assign">
                        <int>12</int>
                </edit>
        </match>
[/code:1][/quote]
对 cairo 没用,我也没办法





偷来的签名: [code:1] USE="-bitch -in-laws nice gorgeous smart" emerge girlfriend >>> china/suzhou/girlfriend merged [/code:1]
顶部
hzhr
注册会员
Rank: 2


UID 4450
精华 0
积分 229
帖子 102
阅读权限 20
注册 2002-11-1
来自 China
状态 离线
发表于 2005-10-28 22:16  资料  短消息  加为好友 
[quote:b9fa056dde="sunmoon1997"]
对 cairo 没用,我也没办法[/quote]
就是要打补丁让 cairo 读一下 fontconfig 的这段配置。

顶部
xLoneStar
版主
Rank: 7Rank: 7Rank: 7


UID 61030
精华 4
积分 3326
帖子 1320
阅读权限 255
注册 2003-9-12
来自 电脑前面
状态 离线
发表于 2005-10-29 11:58  资料  主页 短消息  加为好友  添加 xLoneStar 为MSN好友 通过MSN和 xLoneStar 交谈 QQ ICQ 状态 Yahoo!
[quote:cde49dff10="hzhr"][quote:cde49dff10="sunmoon1997"]
对 cairo 没用,我也没办法[/quote]
就是要打补丁让 cairo 读一下 fontconfig 的这段配置。[/quote]

我也很期待!

顶部
sunmoon1997
版主
Rank: 7Rank: 7Rank: 7


UID 56569
精华 4
积分 3619
帖子 1985
阅读权限 255
注册 2003-8-21
来自 China
状态 离线
发表于 2005-10-29 15:03  资料  主页 短消息  加为好友  QQ
[quote:f2c7ae083d="xLoneStar"][quote:f2c7ae083d="hzhr"][quote:f2c7ae083d="sunmoon1997"]
对 cairo 没用,我也没办法[/quote]
就是要打补丁让 cairo 读一下 fontconfig 的这段配置。[/quote]

我也很期待![/quote]
fixed in pango.
http://www.magiclinux.org/people/sunmoon1997/patches/pango/pangocairo-fcfont.diff
will you file a bug in bugzilla against pango?





偷来的签名: [code:1] USE="-bitch -in-laws nice gorgeous smart" emerge girlfriend >>> china/suzhou/girlfriend merged [/code:1]
顶部
mandrakechina
金牌会员
Rank: 8Rank: 8


UID 12345
精华 9
积分 8656
帖子 3861
阅读权限 90
注册 2003-1-12
来自 北京
状态 离线
发表于 2005-10-29 15:58  资料  主页 短消息  加为好友 
I've alreday opened the bug report at 317121. Patch appened.





我很快乐,请不要再说爱我
顶部
 


Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
清除 Cookies - 联系我们 - 中国Linux公社 - WAP