如何获取(网络)字体中单个字符的大小?

| 我编写一个python脚本以生成SVG文件。这个SVG文件使用网络字体(通过CSS从Google webfonts导入)很好地呈现了我的文本。一切都很好,只是在将其放入SVG文件之前,我需要知道句子的大小(以像素为单位)。 几天前我开始学习python时,我不知道这种方法是否可行。 Google帮助我找到了ImageFont python模块的存在(来自Python Imaging Library),但是ImageFont似乎需要从本地路径加载字体文件以计算字符大小。 有没有办法计算网络字体的字符大小? 谢谢您的帮助。     
已邀请:
您可以使用javascript和SVG DOM在客户端上实现。 第一步:创建一个文本元素,并使用getComputedTextLength()方法计算其长度(http://www.w3.org/TR/SVG11/text.html#InterfaceSVGTextContentElement)
<text id=\"foo\" xml:space=\"preserve\">foo </text>
然后使用getTotalLength()方法计算路径长度(http://www.w3.org/TR/SVG11/paths.html#InterfaceSVGPathElement) 您可以计算出文本被截断之前可以放置多少次。     
您每次都会使用相同的字体吗?如果是这样:抓取字体的本地副本,在本地运行测试,然后将其缓存(SQLite数据库?存储在Python模块中的宽度数组?这取决于您)。但是,请注意,由于字距调整,句子的宽度可能与其字符宽度的总和不同。如果要准确,则需要计算句子本身的宽度。 但是,这真的需要在服务器上完成吗?例如,如果您的客户端是Web浏览器,则可以使用类似jQuery \ .width()方法的方法来询问浏览器元素的实际大小,或者使用您自己的JavaScript进行一些操作。 更好的方法可能是设计具有更多“液体”布局的SVG,并期望元素可以增长或缩小到任意大小,并使用普通的哑代码(例如plain1ѭ)将其长度限制为某个预定阈值。基本上,请确保它最多可用于一定数量的文本,然后确保您使用的文本不会过多。您没有将独立宣言用作文本标签,对吗?     

要回复问题请先登录注册