Index: source/data/brkitr/line_loose_cj.txt |
diff --git a/source/data/brkitr/line_ja.txt b/source/data/brkitr/line_loose_cj.txt |
similarity index 82% |
copy from source/data/brkitr/line_ja.txt |
copy to source/data/brkitr/line_loose_cj.txt |
index 70b203d1b0d26afae1aa80d16797c0c40be68a8b..9934fe3aa1d077407f538b8d3ba6a649fdf7622d 100644 |
--- a/source/data/brkitr/line_ja.txt |
+++ b/source/data/brkitr/line_loose_cj.txt |
@@ -1,16 +1,32 @@ |
-# Copyright (c) 2002-2013 International Business Machines Corporation and |
+# Copyright (c) 2002-2015 International Business Machines Corporation and |
# others. All Rights Reserved. |
# |
-# file: line_ja.txt |
+# file: line_loose_cj.txt |
# |
# Line Breaking Rules |
# Implement default line breaking as defined by |
-# Unicode Standard Annex #14 Revision 29 for Unicode 6.2 |
+# Unicode Standard Annex #14 Revision 34 for Unicode 8.0 |
# http://www.unicode.org/reports/tr14/ |
+# tailored as noted in 2nd paragraph below.. |
# |
# TODO: Rule LB 8 remains as it was in Unicode 5.2 |
# This is only because of a limitation of ICU break engine implementation, |
# not because the older behavior is desirable. |
+# |
+# This tailors the line break behavior to correspond to CSS |
+# line-break=loose (BCP47 -u-lb-loose) as defined for Chinese & Japanese. |
+# It sets characters of class CJ to behave like ID. |
+# In addition, it allows breaks: |
+# * before hyphens 2010 & 2013 (both BA) and 301C, 30A0 (both NS) |
+# * before iteration marks 3005, 303B, 309D, 309E, 30FD, 30FE (all NS) |
+# * between characters of LineBreak class IN such as 2026 |
+# * before some centered punct 203C, 2047, 2048, 2049, 30FB, FF1A, FF1B, |
+# FF65 (all NS) and FF01, FF1F (both EX). |
+# * before suffix characters with LineBreak class PO and EastAsianWidth A,F,W; |
+# this includes: 00B0 2030 2032 2033 2035 2103 2109 FE6A FF05 FFE0 |
+# * after prefix characters with LineBreak class PR and EastAsianWidth A,F,W; |
+# this includes: 00A4 00B1 20AC 2116 FE69 FF04 FFE1 FFE5 FFE6 |
+ |
# |
# Character Classes defined by TR 14. |
@@ -58,7 +74,8 @@ |
$AI = [:LineBreak = Ambiguous:]; |
$AL = [:LineBreak = Alphabetic:]; |
-$BA = [:LineBreak = Break_After:]; |
+$BAX = [\u2010 \u2013]; |
+$BA = [[:LineBreak = Break_After:] - $BAX]; |
$BB = [:LineBreak = Break_Before:]; |
$BK = [:LineBreak = Mandatory_Break:]; |
$B2 = [:LineBreak = Break_Both:]; |
@@ -68,7 +85,8 @@ $CL = [:LineBreak = Close_Punctuation:]; |
$CM = [:LineBreak = Combining_Mark:]; |
$CP = [:LineBreak = Close_Parenthesis:]; |
$CR = [:LineBreak = Carriage_Return:]; |
-$EX = [:LineBreak = Exclamation:]; |
+$EXX = [\uFF01 \uFF1F]; |
+$EX = [[:LineBreak = Exclamation:] - $EXX]; |
$GL = [:LineBreak = Glue:]; |
$HL = [:LineBreak = Hebrew_Letter:]; |
$HY = [:LineBreak = Hyphen:]; |
@@ -82,11 +100,14 @@ $JV = [:LineBreak = JV:]; |
$JT = [:LineBreak = JT:]; |
$LF = [:LineBreak = Line_Feed:]; |
$NL = [:LineBreak = Next_Line:]; |
-$NS = [:LineBreak = Nonstarter:]; |
+$NSX = [\u301C \u30A0 \u3005 \u303B \u309D \u309E \u30FD \u30FE \u203C \u2047 \u2048 \u2049 \u30FB \uFF1A \uFF1B \uFF65]; |
+$NS = [[:LineBreak = Nonstarter:] - $NSX]; |
$NU = [:LineBreak = Numeric:]; |
$OP = [:LineBreak = Open_Punctuation:]; |
-$PO = [:LineBreak = Postfix_Numeric:]; |
-$PR = [:LineBreak = Prefix_Numeric:]; |
+$POX = [\u00B0 \u2030 \u2032 \u2033 \u2035 \u2103 \u2109 \uFE6A \uFF05 \uFFE0]; |
+$PO = [[:LineBreak = Postfix_Numeric:] - $POX]; |
+$PRX = [\u00A4 \u00B1 \u20AC \u2116 \uFE69 \uFF04 \uFFE1 \uFFE5 \uFFE6]; |
+$PR = [[:LineBreak = Prefix_Numeric:] - $PRX]; |
$QU = [:LineBreak = Quotation:]; |
$RI = [:LineBreak = Regional_Indicator:]; |
$SA = [:LineBreak = Complex_Context:]; |
@@ -118,11 +139,13 @@ $ALPlus = [$AL $AI $SA $SG $XX]; |
# |
$ALcm = $ALPlus $CM*; |
$BAcm = $BA $CM*; |
+$BAXcm = $BAX $CM*; |
$BBcm = $BB $CM*; |
$B2cm = $B2 $CM*; |
$CLcm = $CL $CM*; |
$CPcm = $CP $CM*; |
$EXcm = $EX $CM*; |
+$EXXcm = $EXX $CM*; |
$GLcm = $GL $CM*; |
$HLcm = $HL $CM*; |
$HYcm = $HY $CM*; |
@@ -135,10 +158,13 @@ $JLcm = $JL $CM*; |
$JVcm = $JV $CM*; |
$JTcm = $JT $CM*; |
$NScm = $NS $CM*; |
+$NSXcm = $NSX $CM*; |
$NUcm = $NU $CM*; |
$OPcm = $OP $CM*; |
$POcm = $PO $CM*; |
+$POXcm = $POX $CM*; |
$PRcm = $PR $CM*; |
+$PRXcm = $PRX $CM*; |
$QUcm = $QU $CM*; |
$RIcm = $RI $CM*; |
$SYcm = $SY $CM*; |
@@ -153,11 +179,13 @@ $WJcm = $WJ $CM*; |
# |
$ALPlus $CM+; |
$BA $CM+; |
+$BAX $CM+; |
$BB $CM+; |
$B2 $CM+; |
$CL $CM+; |
$CP $CM+; |
$EX $CM+; |
+$EXX $CM+; |
$GL $CM+; |
$HL $CM+; |
$HY $CM+; |
@@ -170,10 +198,13 @@ $JL $CM+; |
$JV $CM+; |
$JT $CM+; |
$NS $CM+; |
+$NSX $CM+; |
$NU $CM+; |
$OP $CM+; |
$PO $CM+; |
+$POX $CM+; |
$PR $CM+; |
+$PRX $CM+; |
$QU $CM+; |
$RI $CM+; |
$SY $CM+; |
@@ -259,7 +290,7 @@ $GLcm $CANT_CM; |
# LB 12a Do not break before NBSP and related characters ... |
# [^SP BA HY] x GL |
# |
-[[$LB8NonBreaks] - [$SP $BA $HY]] $CM* $GLcm; |
+[[$LB8NonBreaks] - [$SP $BA $BAX $HY]] $CM* $GLcm; |
$CM+ GLcm; |
@@ -267,6 +298,7 @@ $CM+ GLcm; |
# |
# LB 13 Don't break before ']' or '!' or ';' or '/', even after spaces. |
# |
+# Do not include $EXX here |
$LB8NonBreaks $CL; |
$CAN_CM $CM* $CL; |
$CM+ $CL; # by rule 10, stand-alone CM behaves as AL |
@@ -300,6 +332,8 @@ $OPcm $SP+ $CM+ $AL_FOLLOW?; # by rule 10, stand-alone CM behaves as AL |
$QUcm $SP* $OPcm; |
# LB 16 |
+# Do not break between closing punctuation and $NS, even with intervening spaces |
+# But DO allow a break between closing punctuation and $NSX, don't include it here |
($CLcm | $CPcm) $SP* $NScm; |
# LB 17 |
@@ -332,6 +366,7 @@ $LB20NonBreaks = [$LB18NonBreaks - $CB]; |
# LB 21 x (BA | HY | NS) |
# BB x |
# |
+# DO allow breaks here before $BAXcm and $NSXcm, so don't include them |
$LB20NonBreaks $CM* ($BAcm | $HYcm | $NScm); |
$BBcm [^$CB]; # $BB x |
@@ -340,7 +375,7 @@ $BBcm $LB20NonBreaks $CM*; |
# LB 21a Don't break after Hebrew + Hyphen |
# HL (HY | BA) x |
# |
-$HLcm ($HYcm | $BAcm) [^$CB]?; |
+$HLcm ($HYcm | $BAcm | $BAXcm) [^$CB]?; |
# LB 21b (forward) Don't break between SY and HL |
# (break between HL and SY already disallowed by LB 13 above) |
@@ -349,12 +384,14 @@ $SYcm $HLcm; |
# LB 22 |
($ALcm | $HLcm) $INcm; |
$CM+ $INcm; # by rule 10, any otherwise unattached CM behaves as AL |
+$EXcm $INcm; |
$IDcm $INcm; |
-$INcm $INcm; |
+# $INcm $INcm; # delete this rule for CSS loose |
$NUcm $INcm; |
-# $LB 23 |
+# LB 23 |
+# Do not include $POX here |
$IDcm $POcm; |
$ALcm $NUcm; # includes $LB19 |
$HLcm $NUcm; |
@@ -365,14 +402,16 @@ $NUcm $HLcm; |
# |
# LB 24 |
# |
+# Do not include $PRX here |
$PRcm $IDcm; |
$PRcm ($ALcm | $HLcm); |
-$POcm ($ALcm | $HLcm); |
+($POcm | $POXcm) ($ALcm | $HLcm); |
# |
# LB 25 Numbers. |
# |
-($PRcm | $POcm)? ($OPcm | $HYcm)? $NUcm ($NUcm | $SYcm | $IScm)* ($CLcm | $CPcm)? ($PRcm | $POcm)?; |
+# Here do not include $PRX at the beginning or $POX at the end |
+($PRcm | $POcm | $POXcm)? ($OPcm | $HYcm)? $NUcm ($NUcm | $SYcm | $IScm)* ($CLcm | $CPcm)? ($PRcm | $PRXcm | $POcm)?; |
# LB 26 Do not break a Korean syllable |
# |
@@ -381,6 +420,7 @@ $JLcm ($JLcm | $JVcm | $H2cm | $H3cm); |
($JTcm | $H3cm) $JTcm; |
# LB 27 Treat korean Syllable Block the same as ID (don't break it) |
+# Do not include $POX or $PRX here |
($JLcm | $JVcm | $JTcm | $H2cm | $H3cm) $INcm; |
($JLcm | $JVcm | $JTcm | $H2cm | $H3cm) $POcm; |
$PRcm ($JLcm | $JVcm | $JTcm | $H2cm | $H3cm); |
@@ -411,11 +451,13 @@ $RIcm $RIcm; |
$CM+ $ALPlus; |
$CM+ $BA; |
+$CM+ $BAX; |
$CM+ $BB; |
$CM+ $B2; |
$CM+ $CL; |
$CM+ $CP; |
$CM+ $EX; |
+$CM+ $EXX; |
$CM+ $GL; |
$CM+ $HL; |
$CM+ $HY; |
@@ -428,10 +470,13 @@ $CM+ $JL; |
$CM+ $JV; |
$CM+ $JT; |
$CM+ $NS; |
+$CM+ $NSX; |
$CM+ $NU; |
$CM+ $OP; |
$CM+ $PO; |
+$CM+ $POX; |
$CM+ $PR; |
+$CM+ $PRX; |
$CM+ $QU; |
$CM+ $RI; |
$CM+ $SY; |
@@ -463,7 +508,7 @@ $AL_FOLLOW $CM+ / ( |
# This rule is concerned about getting the second of the two <breaks> in place. |
# |
-[$PR ] / $CM+ [$BK $CR $LF $NL $ZW $SP {eof}]; |
+[$PR $PRX ] / $CM+ [$BK $CR $LF $NL $ZW $SP {eof}]; |
@@ -501,7 +546,7 @@ $CM* $CAN_CM $CM* $WJ; |
# LB 12a |
# [^SP BA HY] x GL |
# |
-$CM* $GL $CM* [$LB8NonBreaks-[$CM $SP $BA $HY]]; |
+$CM* $GL $CM* [$LB8NonBreaks-[$CM $SP $BA $BAX $HY]]; |
# LB 12 |
# GL x |
@@ -511,6 +556,7 @@ $CM* $CAN_CM $CM* $GL; |
# LB 13 |
+# Do not include $EXX here |
$CL $CM+ $CAN_CM; |
$CP $CM+ $CAN_CM; |
$EX $CM+ $CAN_CM; |
@@ -546,6 +592,7 @@ $SY $CM $SP+ $OP; # TODO: Experiment. Remove. |
$CM* $OP $SP* $CM* $QU; |
# LB 16 |
+# Don't include $NSX here |
$CM* $NS $SP* $CM* ($CL | $CP); |
# LB 17 |
@@ -571,36 +618,41 @@ $CM* $CAN_CM $CM* $QU; # QU x . |
# |
# LB 21 |
+# Don't include $BAX or $NSX here |
$CM* ($BA | $HY | $NS) $CM* [$LB20NonBreaks-$CM]; # . x (BA | HY | NS) |
$CM* [$LB20NonBreaks-$CM] $CM* $BB; # BB x . |
[^$CB] $CM* $BB; # |
# LB21a |
-[^$CB] $CM* ($HY | $BA) $CM* $HL; |
+[^$CB]? $CM* ($HY | $BA | $BAX) $CM* $HL; |
# LB21b (reverse) |
$CM* $HL $CM* $SY; |
# LB 22 |
$CM* $IN $CM* ($ALPlus | $HL); |
+$CM* $IN $CM* $EX; |
$CM* $IN $CM* $ID; |
-$CM* $IN $CM* $IN; |
+# $CM* $IN $CM* $IN; # delete this rule for CSS loose |
$CM* $IN $CM* $NU; |
# LB 23 |
+# Do not include $POX here |
$CM* $PO $CM* $ID; |
$CM* $NU $CM* ($ALPlus | $HL); |
$CM* ($ALPlus | $HL) $CM* $NU; |
# LB 24 |
+# Do not include $PRX here |
$CM* $ID $CM* $PR; |
$CM* ($ALPlus | $HL) $CM* $PR; |
-$CM* ($ALPlus | $HL) $CM* $PO; |
+$CM* ($ALPlus | $HL) $CM* ($PO | $POX); |
# LB 25 |
-($CM* ($PR | $PO))? ($CM* ($CL | $CP))? ($CM* ($NU | $IS | $SY))* $CM* $NU ($CM* ($OP | $HY))? ($CM* ($PR | $PO))?; |
+# Here do not include $POX at the beginning or $PRX at the end |
+($CM* ($PR | $PRX | $PO))? ($CM* ($CL | $CP))? ($CM* ($NU | $IS | $SY))* $CM* $NU ($CM* ($OP | $HY))? ($CM* ($PR | $PO | $POX))?; |
# LB 26 |
$CM* ($H3 | $H2 | $JV | $JL) $CM* $JL; |
@@ -608,6 +660,7 @@ $CM* ($JT | $JV) $CM* ($H2 | $JV); |
$CM* $JT $CM* ($H3 | $JT); |
# LB 27 |
+# Do not include $POX or $PRX here |
$CM* $IN $CM* ($H3 | $H2 | $JT | $JV | $JL); |
$CM* $PO $CM* ($H3 | $H2 | $JT | $JV | $JL); |
$CM* ($H3 | $H2 | $JT | $JV | $JL) $CM* $PR; |
@@ -647,7 +700,7 @@ $SP+ $CM* ($CL | $CP); |
$SP+ $CM* $B2; |
# LB 21 |
-$CM* ($HY | $BA) $CM* $HL; |
+$CM* ($HY | $BA | $BAX) $CM* $HL; |
# LB 25 |
($CM* ($IS | $SY))+ $CM* $NU; |
@@ -669,6 +722,6 @@ $dictionary $dictionary; |
# turn off rule chaining. We don't want to move more |
# than necessary. |
# |
-[$CM $OP $QU $CL $CP $B2 $PR $HY $BA $SP $dictionary]+ [^$CM $OP $QU $CL $CP $B2 $PR $HY $BA $dictionary]; |
+[$CM $OP $QU $CL $CP $B2 $PR $PRX $HY $BA $BAX $SP $dictionary]+ [^$CM $OP $QU $CL $CP $B2 $PR $PRX $HY $BA $BAX $dictionary]; |
$dictionary $dictionary; |