Perl 6 和打印列

Perl 6 and print columns

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

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

我隐约理解的是,Unicode::GCString::columns方法决定了东亚语言换行支持。 合由 2 个 "syllables"(他们称之为 "grapheme clusters")组成,因此有 2 列。

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

之类的东西

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