В основном вам нужно только вычислить ширину строки, ширину области, в которой вы хотите отцентрировать ее, и все готово.
Используйте Canvas.stringWidth , чтобыопределить ширину, которую занимает данная строка (со шрифтом и размером).Он не учитывает межсимвольный интервал, но я провел несколько тестов, предлагающих исправить это.
def stringWidth2(string, font, size, charspace):
width = stringWidth(string, font, size)
width += (len(string) - 1) * charspace
return width
Все, что он делает, это использует исходный stringWidth
для вычисления ширины строки, идобавить дополнительные пробелы между символами.Теперь у меня нет опыта работы с типографикой, поэтому я не уверен, что такие функции шрифта, как кернинг, могут сделать это непригодным для использования.
Если вы отрегулируете свое происхождение x таким образом, ваша строка будет отцентрирована.1012 *
Небольшой тестовый скрипт, который я использовал http://pastebin.com/PQxzi1Kf (код это не красота, но он работает).