Python 有没有办法改变PyCairo中的字母间距?(或在不影响高度的情况下更改文本宽度)
我正在创建一个应用程序,它使用Cairo在图像上显示文本等 有没有一种方法可以在不修改高度的情况下更改文本宽度?我已经可以根据宽度调整字体大小了 一个理想的管理方法。它看起来不像是内置的,但我想知道我将使用哪些部件来构建该功能(或任何只修改宽度的功能)。Pango/PangoCairo 似乎提供了很多定制 它允许您指定Python 有没有办法改变PyCairo中的字母间距?(或在不影响高度的情况下更改文本宽度),python,cairo,pycairo,Python,Cairo,Pycairo,我正在创建一个应用程序,它使用Cairo在图像上显示文本等 有没有一种方法可以在不修改高度的情况下更改文本宽度?我已经可以根据宽度调整字体大小了 一个理想的管理方法。它看起来不像是内置的,但我想知道我将使用哪些部件来构建该功能(或任何只修改宽度的功能)。Pango/PangoCairo 似乎提供了很多定制 它允许您指定字母间隔 我对这个框架还没有深入的了解,但它值得研究 发挥自己的作用 您还可以创建一个函数,将文本拆分为字符,显示每个字符,并在显示每个字符后将上下文向后移动一点。如下所示: #
字母间隔
我对这个框架还没有深入的了解,但它值得研究
发挥自己的作用
您还可以创建一个函数,将文本拆分为字符,显示每个字符,并在显示每个字符后将上下文向后移动一点。如下所示:
# This is just an example. It could definitely use improvement.
def foo(cr, text, tracking):
# Normal tracking = 0. Negative spacing shrinks, positive expands.
i = 0
for c in text:
x, y = cr.get_current_point()
cr.show_text(c)
counter += 1
cr.move_to( x - i*tracking, y)
您还可以在自己的上下文子类中定义此方法:
class myContext(Context):
def foo(self, text, spacing):
# replace every cr above with self
一旦你有了一个方法集,你就可以做foo(cr,“bob”,-3)来获得一个更苗条的bob
您还可以在代码中使用cr.text\u区段(text)
来计算文本大小和缩放间距。据我所知,从开罗的上下文中获取字体大小并非易事