我正在移植一个使用Pango绘制文本到开罗表面的Python2脚本。它可以很好地使用旧的PyGtk API和pangocairo包。我的系统(Debian杰西)没有用于Python3的PyGtk包,而是使用新的Gtk+库和PyGObject API。
我想创建一个pangocairo.CairoContext对象,但是在新的API中似乎缺少它。PangoCairo包有一个create_context()函数,但是它生成一个没有我需要的方法的PangoContext对象。
到目前为止我有这样的想法:
import cairo
from gi.repository import Pango
from gi.repository import PangoCairo
surf = cairo.ImageSurface(cairo.FORMAT_ARGB32, 8, 8)
ctx = cairo.Context(surf)
pctx = PangoCairo.create_context(ctx) # Creates a PangoContext
pctx.set_antialias(cairo.ANTIALIAS_SUBPIXEL) # This fails工作的旧Python2代码:
import cairo
import pango
import pangocairo
surf = cairo.ImageSurface(cairo.FORMAT_ARGB32, 8, 8)
ctx = cairo.Context(surf)
pctx = pangocairo.CairoContext(ctx)
pctx.set_antialias(cairo.ANTIALIAS_SUBPIXEL)有人有办法解决这个问题吗?关于如何在新API中使用PangoCairo,有什么好的文档吗?
发布于 2016-10-22 17:35:12
看来图书馆已经被重新安排了一点。现在从Pango.Context对象检索Pango上下文(现在是Pango.Layout )。以下是一个可行的解决方案:
import cairo
from gi.repository import Pango
from gi.repository import PangoCairo
surf = cairo.ImageSurface(cairo.FORMAT_ARGB32, 8, 8)
ctx = cairo.Context(surf)
layout = PangoCairo.create_layout(ctx)
pctx = layout.get_context()
fo = cairo.FontOptions()
fo.set_antialias(cairo.ANTIALIAS_SUBPIXEL)
PangoCairo.context_set_font_options(pctx, fo)https://stackoverflow.com/questions/40194188
复制相似问题