我有以下报告实验室代码:

    t = c.beginText()
    t.setFont('Arial', 25)
    t.setCharSpace(3)
    t.setTextOrigin(159,782)
    t.textLine("Some string")
    c.drawText(t)

我想实现的是:有一个3(像素?)每个字符之间的空格(setCharSpace),并将结果字符串与页面中某个区域的中心对齐。
据我所知,textObject是唯一可以在字符之间指定空格的方法。
有什么想法吗?

最佳答案

基本上你只需要计算字符串的宽度,你想让它居中的区域的宽度,就可以完成了。
使用Canvas.stringWidth确定给定字符串(具有字体和大小)所占的宽度。它不考虑字符间距,但我做了一些测试,表明可以解决这个问题。

def stringWidth2(string, font, size, charspace):
    width = stringWidth(string, font, size)
    width += (len(string) - 1) * charspace
    return width

它所做的只是使用原始的stringWidth来计算字符串的宽度,并在字符之间添加额外的空格。现在我对排版没有经验,所以我不确定像紧排这样的字体功能是否会使它不可用。
如果像这样调整X原点,字符串将居中。
(area_width - string_width) / 2

我使用的小测试脚本(代码不是美的,但它起作用)。

10-04 12:31