Unicode::LineBreak~[ja]
UAX #14 Unicode XXXXXXXXX
UAX #14 Unicode XXXXXXXXX
use Unicode::LineBreak;
$lb = Unicode::LineBreak->new();
$broken = $lb->break($string);
Unicode::LineBreak XXUnicode XXXXXX14 [UAX #14] XXXX Unicode XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX11 [UAX #11] XXXXXX East_Asian_Width XXXXXXXXXX
XXXXXXXXXXXXX
XXXXXmandatory breakXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [UAX #14] XXXXXXXXXXXXXXXXXdirect breakXXXXXXXindirect breakXXXXXX
XXXXXXXXXalphabetic charactersXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXideographic charactersXXXXXXXXXXXXXXXXXXXX [UAX #14] XXXXXXXXXXXXXXXX AL XXXXXXXXXXXXXXXX ID XXXXXXX (XXXXXXXXXXXXXXXXXXXXXXXX)X XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXwideXXXXXXnarrowXXXXXXXXXXXnonspacingXXXXXXXXXXXXX 2 XX1 XX0 XXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXX
X: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXbreak() XXXXXXXXXXXXXX
"new"X"config" XXXXXXXXXXXXXXXXXXX XXXXX ([E])XXXXXXXXXX ([G]) (Unicode::GCString~[ja] XXX)XXXXXX ([L]) XXXXXXXXXXX
X: XXXXXXXXXXXX 1.011 XXXXXXX
"Urgent" XXXXXXXX "XXXXXXXXXXX" XXXX
"EASTASIAN" XXXXXEast_Asian_Width XXXXX (A) XXXXXXXXXXXXXXXXXXXXX AI XXXXXXXXX (ID) XXXXX
"NONEASTASIAN" XXXXXEast_Asian_Width XXXXX (A) XXXXXXXXXXXXXXXXXXXXX AI XXXXXXXXX (AL) XXXXX
XXXXXXEast_Asian_width XXXXXXXXXXX "XXXXXXXXX" XXXX
XXXXXXXXXXXXXXXXXXXX "XXXXXXXXX" XXXX
"ColMax"X"ColMin"X"EAWidth" XXXXXXXXX
X: XXXXXXXXXXXXXXXXXXXXXXXXXXXX [UAX #11] XXXXXXXX
X: XXX CP XUnicode 5.2.0XXXXXXXX XXX HL X CJ XUnicode 6.1.0XXXXXXXX XXX RI X Unicode 6.2.0XXXXXXXX
X: XXXXXXXXXXXXXXXXXXXXXXXXXXX
"Format" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 3 XXXXXXXXXXXXXXXX
$XXX = &XXXXXX(SELF, EVENT, STR);
SELF X Unicode::LineBreak XXXXXXXEVENT XXXXXXXXXXXXXXXXXXXXXSTR XXXXXXXXXXXX Unicode XXXXXXX
EVENT |XXXXX |STR
-----------------------------------------------------------------
"sot" |XXXXXX |XXXXXXX
"sop" |XXXXXX |XXXXXX
"sol" |XXXXXX |XXXXXXX
"" |XXXXX |XXX (XXXXXXXXXX)
"eol" |XXXX |XXXXXXXXXXX
"eop" |XXXX |XXXXXXXXXXX
"eot" |XXXXXX |XXXXXXXXXXX (XXX)
-----------------------------------------------------------------
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"undef" XXXXXXX XXX"sot"X"sop"X"sol" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XX: XXXXXXXXXXXXXXXXXXXXXXX Unicode::GCString~[ja] XXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
sub fmt {
if ($_[1] =~ /^eo/) {
return "\n";
}
return undef;
}
my $lb = Unicode::LineBreak->new(Format => \&fmt);
$output = $lb->break($text);
XXXXXXXXXXXXX CharMaxXColMaxXColMin XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX "Urgent" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 2 XXXXXXXXXXXXXXXX
@XXX = &XXXXXX(SELF, STR);
SELF X Unicode::LineBreak XXXXXXXSTR XXXXXX Unicode XXXX
XXXXXXXXXXX STR XXXXXXXXXXXXXXXXXXXXXX
XX: XXXXXXXXXXXXXXXXXXXXXXX Unicode::GCString~[ja] XXX
XXXXXXXXXXXXXXXXXX (XXXXXXX) XXXXXXXXXXXXXXXXXXXXXXXXX
sub hyphenize {
return map {$_ =~ s/yl$/yl-/; $_} split /(\w+?yl(?=\w))/, $_[1];
}
my $lb = Unicode::LineBreak->new(Urgent => \&hyphenize);
$output = $lb->break("Methionylthreonylthreonylglutaminylarginyl...");
"Prep" XXXXXX [REGEX, SUBREF] XXXXXXXXXXXXXXXXXXXX 2 XXXXXXXXXXXXXXXX
@XXX = &XXXXXX(SELF, STR);
SELF X Unicode::LineBreak XXXXXXXSTR X REGEX XXXXXXXXXXX Unicode XXXX
XXXXXXXXXXX STR XXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXHTTP URL X [CMOS] XXXXXXXXXXXX
my $url = qr{http://[\x21-\x7E]+}i;
sub breakurl {
my $self = shift;
my $str = shift;
return split m{(?<=[/]) (?=[^/]) |
(?<=[^-.]) (?=[-~.,_?\#%=&]) |
(?<=[=&]) (?=.)}x, $str;
}
my $lb = Unicode::LineBreak->new(Prep => [$url, \&breakurl]);
$output = $lb->break($string);
XXXXX
Unicode::LineBreak XXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
sub paraformat {
my $self = shift;
my $action = shift;
my $str = shift;
if ($action eq 'sot' or $action eq 'sop') {
$self->{'line'} = '';
} elsif ($action eq '') {
$self->{'line'} = $str;
} elsif ($action eq 'eol') {
return "\n";
} elsif ($action eq 'eop') {
if (length $self->{'line'}) {
return "\n\n";
} else {
return "\n";
}
} elsif ($action eq 'eot') {
return "\n";
}
return undef;
}
my $lb = Unicode::LineBreak->new(Format => \¶format);
$output = $lb->break($string);
"Sizing" XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 5 XXXXXXXXXXXXXXXX
$XX = &XXXXXX(SELF, LEN, PRE, SPC, STR);
SELF X Unicode::LineBreak XXXXXXXLEN XXXXXXXXXXXXPRE XXXXX Unicode XXXXSPC XXXXXXXXXXXSTR XXXXX Unicode XXXX
XXXXXXX "PRE.SPC.STR" XXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXX"ColMin" XXXXXXXX "ColMax" XXXXXXXXXXXXXXXXXXXXXX
XX: XXXXXXXXXXXXXXXXXXXXXXX Unicode::GCString~[ja] XXX
XXXXXXXXXXXXX 8 XXXXXXXXXXXXXXXXXXXXXXX
sub tabbedsizing {
my ($self, $cols, $pre, $spc, $str) = @_;
my $spcstr = $spc.$str;
while ($spcstr->lbc == LB_SP) {
my $c = $spcstr->item(0);
if ($c eq "\t") {
$cols += 8 - $cols % 8;
} else {
$cols += $c->columns;
}
$spcstr = $spcstr->substr(1);
}
$cols += $spcstr->columns;
return $cols;
};
my $lb = Unicode::LineBreak->new(LBClass => [ord("\t") => LB_SP],
Sizing => \&tabbedsizing);
$output = $lb->break($string);
"LBClass" XXXXXXXX "EAWidth" XXXXXXXXXXXXXXXXX (XX) X East_Asian_Width XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXX
XXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXX (NS XXX CJ) XXXX XXXXX LBClass XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (ID) XXXXX
XXXXXXXXXXXXXX
XXXXX U+30FC XXXXXU+FF70 XXXX (XXXX)X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX[JIS X 4051] 6.1.1X[JLREQ] 3.1.7 X [UAX14] XXXX
XXU+3095 X, U+3096 X, U+30F5 X, U+30F6 X XXXXXXXXXXXX
XXXXXXXXXXXXXXXXX "XX" X "XX" XXXXXXXXXXXX
XXXXXXX [UAX #14] XXXXXXXX (NS) XXXXXXXX[JIS X 4051] X [JLREQ] XXXXXXX (13) X cl-19 (ID XXX) XXXXXXX
XXXXXX
XXXXXXXXXXXXXXXXXX (QU) XXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXX9 XXXXXXXX XXXXXXX (X X X X) XXXXXXXXXXXXXXXXX
XXXX
East_Asian_Width XX
XXXXXXXXXXXXXXXXXXXXXXXXXXXX (A) X East_Asian_Width XXXXXXXXXXXXXXXXXXXXXX "EASTASIAN" XXXXXXXXXXXXX "EAWidth => [ AMBIGUOUS_"*"() => EA_N ]" XXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXUnicode XXXXXX (F) XXXXXXXXXXXXXX (Na) XXXXXXXXXXXXXXXXEAWidth XXXXXXXXXXXXXXXXXXXXXXXXXXX "EASTASIAN" XXXXXXXXXXXX
"new" XXXXXXX "config" XXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXX Unicode/LineBreak/Defaults.pmX XXX Unicode/LineBreak/Defaults.pm.sample XXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXX
CPAN Request Tracker: <http://rt.cpan.org/Public/Dist/Display.html?Name=Unicode-LineBreak>.
$VERSION XXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXUnicode XX 6.3.0XXXXX
XXXXXXXXXXXXXX UAX14-C2 XXXXXXXXXXX
XX | UAX #14 | UAX #11 | XX
-------------------------------------------------------------
U+20A0..U+20CF | PR [*1] | N [*2] | XXXX
U+3400..U+4DBF | ID | W | CJKXX
U+4E00..U+9FFF | ID | W | CJKXX
U+D800..U+DFFF | AL (SG) | N | XXXXX
U+E000..U+F8FF | AL (XX) | F X N (A) | XXXX
U+F900..U+FAFF | ID | W | CJKXX
U+20000..U+2FFFD | ID | W | CJKXX
U+30000..U+3FFFD | ID | W | XXX
U+F0000..U+FFFFD | AL (XX) | F X N (A) | XXXX
U+100000..U+10FFFD | AL (XX) | F X N (A) | XXXX
XXXXXXXX | AL (XX) | N | XXXXXX
| | | XXXXXX
-------------------------------------------------------------
[*1] U+20A7 XXXXX (PO)XU+20B6 XXXXXXXXXXX
(PO) XXXX
[*2] U+20A9 XXXXX (H)XU+20AC XXXXX (F X N (A)) X
XXX
Text::LineFold~[ja], Text::Wrap, Unicode::GCString~[ja].
Copyright (C) 2009-2013 Hatuka*nezumi - IKEDA Soji <hatuka(at)nezumi.nu>.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.