【问题标题】:Why do fonts in Pango change weight when text is rotated in Cairo?为什么在开罗旋转文本时 Pango 中的字体会改变粗细?
【发布时间】:2011-05-23 17:52:36
【问题描述】:

我在旋转矩阵下进行 Pango 渲染时遇到问题。我正在尝试绘制一个发生在动画 Cairo 矩阵旋转内部的标签(参见下面的代码)。

随着标签的旋转,文本抖动,似乎在重量上增加和缩小,在对角处变得最厚,在正交角度处变得最薄。查看此比较:

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

谢谢, 肖恩


        //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);

【问题讨论】:

    标签: animation cairo pango


    【解决方案1】:

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

    pCr.set_antialias(cairo.ANTIALIAS_DEFAULT)

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

    您可以尝试cairo.ANTIALIAS_SUBPIXELcairo.ANTIALIAS_NONE 看看是否有区别。

    另外,我在您的代码中找不到任何旋转,但也许您在渲染文本后正在旋转文本,此时您应该先执行旋转,然后渲染(像素化)文本(矢量路径)。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      • 2013-07-13
      • 2017-02-28
      • 1970-01-01
      • 2013-04-10
      • 2021-03-19
      • 1970-01-01
      相关资源
      最近更新 更多