Чтобы правильно отформатировать некоторый текст в терминале (где я предполагаю использование моноширинного шрифта), мне нужно вычислить «длину» строк. Сложность в том, что мне нужна длина, которую он будет использовать для отображения (в количестве символов фиксированной ширины).
Первоначально я использовал функцию length , но она возвращает число кодовых точек . Я также пытался подсчитать количество графем , используя:
sub width {
my $str = shift;
my $count = 0;
while ($str =~ /\X/g) {
$count++;
}
return $count;
}
(Кредиты Том Кристиансен ).
Но это все еще не то, что мне нужно, так как некоторые графемы имеют двойную ширину с моим шрифтом (SF Mono Regular), например, смайлики и азиатские персонажи.