为什么Pango中的字体会在开罗旋转文字时改变重量?

时间:2010-12-10 21:28:53

标签: animation cairo pango

我在旋转矩阵下遇到Pango渲染问题。我正在尝试绘制一个标签(见下面的代码),该标签发生在动画开罗矩阵旋转中。

随着标签旋转,文字抖动,似乎在重量上增长和缩小,在对角线角度变得最厚,在垂直角度变薄。看到这个比较:

http://www5.picturepush.com/photo/a/4666818/640/Anonymous/pango-rotation.jpg

我希望旋转的文本生成好像它只是旋转形状路径,而不是试图根据角度改变文本的外观。关于我如何做到这一点的任何想法?

谢谢, 肖恩


        //Draw text with Pango
        PangoLayout *layout;
        PangoFontDescription *desc;

        // pCr is the cairomm context ptr.
        // pCr->cobj() is the underlying C Cairo context ptr.
        pCr->set_source_rgb(0.0, 0.0, 1.0);

        layout = pango_cairo_create_layout(pCr->cobj());
        // text is the label string
        pango_layout_set_text(layout, text.c_str(), -1);

        desc = pango_font_description_from_string("Sans Bold 12");
        pango_layout_set_font_description(layout, desc);

        pango_cairo_layout_path(pCr->cobj(), layout);
        pCr->fill();

        pango_font_description_free(desc);
        g_object_unref(layout);

1 个答案:

答案 0 :(得分:0)

我只能用Python而不是C来使用Cairo和Pango,但我的第一个猜测就是修补ANTIALIAS:

pCr.set_antialias(cairo.ANTIALIAS_DEFAULT)

(这是python的语法,而不是C)

您可以尝试cairo.ANTIALIAS_SUBPIXELcairo.ANTIALIAS_NONE查看是否存在差异。

另外,我在你的代码中找不到任何旋转,但是你可能在渲染后旋转文本,首先应该执行旋转,然后渲染(像素化)文本(矢量路径)。

希望它有所帮助。