Perl 6和打印列

问题描述 投票:7回答:1

Perl 6是否具有与Unicode::GCStringcolumns方法等效的功能?

Perl 5示例:

#!/usr/bin/env perl
use warnings;
use strict;
use 5.10.0;
use utf8;
use open qw( :std :utf8 );
use Unicode::GCString;

my $s = '合'; # U+5408

say length $s;      # 1

my $gcs = Unicode::GCString->new( $s );
say $gcs->columns;  # 2
perl perl6 raku
1个回答
4
投票

Perl6具有内置的Unicode支持,具有本机Uni和NFC / NFD / NFKC / NFKD标准化类型。

我隐约地了解到,Unicode :: GCString :: columns方法确定了Eastasian语言的换行支持。合是由2个“音节”(他们称为“字素簇”)相互组成,因此有2列。

据说,perl6内部(在MoarVM级别上)可以访问存储换行属性的unicode数据库,但是据我所知,目前没有可用的模块(如Unicode :: UCD)使East_Asian_Width属性可用于某些东西像Unicode :: GCString。

另一方面,将Unicode :: LineBreak转换为perl6看起来很容易,可以通过NativeCall访问sombok库。

© www.soinside.com 2019 - 2024. All rights reserved.