在没有浏览器/ svg渲染器的情况下查找预期svg文本的大小

时间:2016-10-03 11:50:24

标签: svg fonts shields.io

我正在制作shields.io的命令行版本以获得乐趣,因此没有浏览器/ v8引擎。我已经将大部分程序确定下来但是给出了一个字符串,我无法确定它将在屏幕上显示多长时间,从而调整我的背景。我目前的解决方案是获取字符串中每个字符宽度的总和(从我在浏览器中运行的js脚本预先计算)。但是当你添加特殊字符以及不同字母组合之间有不同间距的事实时,我通常会得到太大或太小的盾牌。

所以我正在寻找一种算法,给定一个字体系列,返回字符串的宽度。

2 个答案:

答案 0 :(得分:0)

所以我找到了一个适合我的解决方案。我正在使用golang并且已经有一个ttf库,所以我加载了dejavu-sans字体并在库的帮助下计算了宽度。

答案 1 :(得分:0)

我使用基于字体宽度的近似值和基于字符的百分比宽度来实现此目的。这段代码在Python中,但是很容易转移:

    # A dictionary containing percentages that relate to how wide
    # each character will be represented in a variable width font.
    char_width_percentages = {
        "lij|' ": 40.0,
        '![]fI.,:;/\\t': 50.0,
        '`-(){}r"': 60.0,
        '*^zcsJkvxy': 70.0,
        'aebdhnopqug#$L+<>=?_~FZT0123456789': 70.0,
        'BSPEAKVXY&UwNRCHD': 70.0,
        'QGOMm%W@': 100.0
    }

我的代码是here,顺便说一句,我的代码也用于命令行徽章生成工具。