用等宽字体计算字符串的宽度

时间:2018-11-04 18:49:07

标签: perl unicode text-formatting

为了在终端中正确格式化某些文本(假设使用等宽字体),我需要计算字符串的“长度”。棘手的部分是我需要它在显示时使用的长度(以固定宽度的字符数表示)。

我最初使用length函数,但是它返回 codepoints 的数量。我还尝试使用以下方法计算字素的数量:

sub width {
    my $str = shift;
    my $count = 0;
    while ($str =~ /\X/g) {
        $count++;
    }
    return $count;
}

(贷记Tom Christiansen)。

但这仍然不是我所需要的,因为某些字素的字体是我的字体的双倍宽度(SF Mono Regular),例如表情符号和亚洲字符。

1 个答案:

答案 0 :(得分:3)

经过进一步研究,我发现了Text::CharWidth CPAN模块,该模块提供了RuntimeException: No value.功能,完全可以满足我的需求。

mbswidth