7

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
4

1 回答 1

4

Perl6 具有内置的 Unicode 支持,具有原生 Uni 和 NFC/NFD/NFKC/NFKD 规范化类型。

我隐约理解的是,Unicode::GCString::columns 方法决定了东亚语言的换行支持。合由彼此重叠的 2 个“音节”(他们称之为“字素簇”)组成,因此是 2 列。

话虽如此,perl6 内部(在 MoarVM 级别)可以访问存储换行属性的 unicode 数据库,但据我所知,目前没有模块,如 Unicode::UCD 可用于使 East_Asian_Width 属性可用于类似 a Unicode::GCString。

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

于 2015-07-09T06:41:25.513 回答