在python中获取svg文本大小

Jak*_* M. 5 python svg

我在python中生成SVG图像(纯,没有外部库).在我正确放置它之前,我想知道文本元素的大小.有什么好主意如何制作它?我检查了pysvg库,但我没有看到像getTextSize()

Rol*_*ith 1

这可能非常复杂。首先,您必须熟悉SVG 规范的文本章节。假设您想要获取普通text元素而不是textpath元素的宽度,至少您必须:

  • 解析字体选择属性间距属性并读取属性xml:space以及writing-mode属性(也可以是从上到下,而不仅仅是从左到右和从右到左)。
  • 根据上述内容,打开正确的字体,读取字形数据并提取文本字符串中字形的宽度和高度。单独查找字体可能是一项艰巨的任务,要查看字体文件可以隐藏的多个位置。
  • (可选)在字符串中查找可能的连字(取决于语言),如果字体中存在正确的字形,则将其替换为正确的字形。
  • 添加所有字符和空格的宽度,后者取决于间距属性和(可选)可能的字距调整对。

一个可能的解决方案是使用pango库。您可以在py-gtk中找到它的 python 绑定。不幸的是,除了一些示例之外,Python 绑定的文档非常稀缺。但它会处理字体加载和确定Layout.

另一种方法是研究浏览器中的 SVG 渲染器。但例如 Firefox 对 SVG 文本的支持是有限的

研究TeX如何做到这一点也很有启发性,尤其是盒子(用于字母)和粘合(用于间距)的概念(pdf) 。