使用这些 Unicode 范围Unicode::GC字符串 https://metacpan.org/module/Unicode%3a%3aGCString'scolumns
返回打印列数mbswidth
from 文本::字符宽度 https://metacpan.org/module/Text%3a%3aCharWidth没有。
他们的行为不同是因为他们使用不同的数据库吗?
#!/usr/bin/env perl
use warnings;
use strict;
use open qw(:std :utf8);
use Text::CharWidth qw(mbswidth); # 0.04
use Unicode::GCString; # 2012.10
for my $hex ( 0x0378 .. 0xd7ff, 0xfa2e .. 0xfdcf, 0xfdfe .. 0xfff8 ) {
my $chr = chr $hex;
if ( mbswidth( $chr ) == -1 ) { # -1 invalid data
my $gcs = Unicode::GCString->new( $chr );
my $width = $gcs->columns;
printf "%04x - %d : %s\n", $hex, $width, $chr;
}
}
Text::CharWidth
使用C库函数wcwidth
这取决于操作系统和当前区域设置。Unicode::GCString
使用sombok http://sourceforge.net/projects/linefold/图书馆。后者似乎会定期更新到最新的 Unicode 版本,因此我认为它是准确的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)