我正在创建一个应用程序,它使用 Cairo 在图像上显示文本等。
有没有办法在不修改高度的情况下更改文本宽度?我已经可以根据宽度缩放字体大小。
一种管理跟踪和学习的方法将是理想的。它看起来不像是内置的,但我想知道我将使用哪些部分来构建该功能(或仅修改宽度的任何功能)。
Pango似乎提供了很多自定义功能。
它的标记格式允许您指定letter_spacing
.
我还没有深入了解该框架,但值得研究。
您还可以创建一个函数将文本拆分为字符,显示每个字符,在显示每个字符后将上下文向后移动一点。类似于以下内容:
# 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)
你也可以在你自己的 Context 子类中定义这个方法:
class myContext(Context):
def foo(self, text, spacing):
# replace every cr above with self
一旦你设置了一个方法,你就可以为更苗条的鲍勃做 foo(cr, "bob", -3) 。
您还可以cr.text_extents(text)
在代码中使用来计算文本大小和比例间距。据我所知,从 Cairo 的 Context 获取字体大小并不容易。