gpt4 book ai didi

python - 有没有办法改变 PyCairo 中的字母间距? (或更改文本宽度而不影响高度)

转载 作者:太空宇宙 更新时间:2023-11-04 03:43:21 25 4
gpt4 key购买 nike

我正在创建一个使用 Cairo 在图像上显示文本等的应用程序。

有没有一种方法可以在不修改高度的情况下更改文本宽度?我已经可以根据宽度缩放字体大小。

一种管理方式tracking & kearning会很理想。它看起来不像是内置的,但我想知道我将使用哪些部分来构建该功能(或仅修改宽度的任何功能)。

最佳答案

Pango/PangoCairo

Pango似乎提供了很多定制。

它的 Markup format允许您指定 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) 即可获得更 slim 的鲍勃。

您还可以在代码中使用 cr.text_extents(text) 来计算文本大小和比例间距。据我所知,没有一种简单的方法可以从开罗的上下文中获取字体大小。

关于python - 有没有办法改变 PyCairo 中的字母间距? (或更改文本宽度而不影响高度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25149479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com