TCAX 字幕特效制作工具官方论坛 | ASS | TCAS | Python | Aegisub | Lua

 找回密码
 新人加入
查看: 2072|回复: 2

将 PangoCairo 与 PyGObject API 一起使用 [复制链接]

Rank: 4

发表于 2022-3-26 03:04:18 |显示全部楼层
本帖最后由 Seekladoom 于 2022-3-26 22:05 编辑

来源链接:
https://stackoverflow.com/questi ... -with-pygobject-api

以下内容为上述链接中原文的机翻:


我正在移植一个 Python2 脚本,该脚本使用 Pango 将文本绘制到开罗表面。pangocairo使用带有包的旧 PyGtk API 可以正常工作。我的系统(Debian Jesse)没有用于 PyGtk 的 Python3 包,而是使用带有 PyGObject API 的较新的 Gtk+ 库。

我想创建一个pangocairo.CairoContext对象,但新 API 中似乎缺少它。该PangoCairo包有一个create_context()功能,但它生成一个PangoContext没有我需要的方法的对象。

到目前为止,我有这个:
  1. import cairo
  2. from gi.repository import Pango
  3. from gi.repository import PangoCairo

  4. surf = cairo.ImageSurface(cairo.FORMAT_ARGB32, 8, 8)
  5. ctx = cairo.Context(surf)
  6. pctx = PangoCairo.create_context(ctx) # Creates a PangoContext
  7. pctx.set_antialias(cairo.ANTIALIAS_SUBPIXEL) # This fails
复制代码
有效的旧 Python2 代码:
  1. import cairo
  2. import pango
  3. import pangocairo

  4. surf = cairo.ImageSurface(cairo.FORMAT_ARGB32, 8, 8)
  5. ctx = cairo.Context(surf)
  6. pctx = pangocairo.CairoContext(ctx)
  7. pctx.set_antialias(cairo.ANTIALIAS_SUBPIXEL)
复制代码

有人对此有解决方案吗?是否有任何关于如何PangoCairo与新 API 一起使用的好的文档?

Rank: 4

发表于 2022-3-26 03:07:16 |显示全部楼层
本帖最后由 Seekladoom 于 2022-3-26 03:07 编辑

看起来库已经重新安排了一点。Pango.Context现在从Pango.Layout对象中检索Pango 上下文(现在)。这是一个有效的解决方案:
  1. import cairo
  2. from gi.repository import Pango
  3. from gi.repository import PangoCairo

  4. surf = cairo.ImageSurface(cairo.FORMAT_ARGB32, 8, 8)
  5. ctx = cairo.Context(surf)
  6. layout = PangoCairo.create_layout(ctx)
  7. pctx = layout.get_context()

  8. fo = cairo.FontOptions()
  9. fo.set_antialias(cairo.ANTIALIAS_SUBPIXEL)
  10. PangoCairo.context_set_font_options(pctx, fo)
复制代码

Rank: 4

发表于 2022-3-26 03:08:13 |显示全部楼层
“现在从 Pango.Layout 对象中检索 Pango 上下文(现在是 Pango.Context)。” 这不是您的解决方案有效的原因。"pctx = PangoCairo.create_context(ctx)" 将以相同的方式工作。您更改了设置抗锯齿的代码。

– beroal 的回复
您需要登录后才可以回帖 登录 | 新人加入

GitHub|TCAX 主页

GMT+8, 2024-3-28 17:03

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部
RealH