﻿#
# Copyright (C) 2016 and later: Unicode, Inc. and others.
# License & terms of use: http://www.unicode.org/copyright.html
# Copyright (c) 2016, International Business Machines Corporation and others. All Rights Reserved.

# file: line.txt
#
# Reference Line Break rules for intltest rbbi/RBBIMonkeyTest.
# Rules derived from Unicode Standard Annex #14 Revision 40 for Unicode 11.0
#
# Note: Rule syntax and the monkey test itself are still a work in progress.
#       They are expected to change with review and the addition of support for rule tailoring.


type = line;
locale = en;


AI = [:LineBreak =  Ambiguous:];
AL = [:LineBreak =  Alphabetic:];
BA = [:LineBreak =  Break_After:];
HH = [\u2010];      # \u2010 is HYPHEN, default line break is BA.
BB = [:LineBreak =  Break_Before:];
BK = [:LineBreak =  Mandatory_Break:];
B2 = [:LineBreak =  Break_Both:];
CB = [:LineBreak =  Contingent_Break:];
CJ = [:LineBreak =  Conditional_Japanese_Starter:];
CL = [:LineBreak =  Close_Punctuation:];
CMS = [:LineBreak =  Combining_Mark:];
CP = [:LineBreak =  Close_Parenthesis:];
CR = [:LineBreak =  Carriage_Return:];
EB = [:LineBreak =  EB:];
EM = [:LineBreak =  EM:];
EX = [:LineBreak =  Exclamation:];
GL = [:LineBreak =  Glue:];
HL = [:LineBreak =  Hebrew_Letter:];
HY = [:LineBreak =  Hyphen:];
H2 = [:LineBreak =  H2:];
H3 = [:LineBreak =  H3:];
ID = [:LineBreak =  Ideographic:];
IN = [:LineBreak =  Inseperable:];
IS = [:LineBreak =  Infix_Numeric:];
JL = [:LineBreak =  JL:];
JV = [:LineBreak =  JV:];
JT = [:LineBreak =  JT:];
LF = [:LineBreak =  Line_Feed:];
NL = [:LineBreak =  Next_Line:];
NS = [[:LineBreak =  Nonstarter:] CJ];   # CSS Strict tailoring: CJ resolves to NS.
NU = [:LineBreak =  Numeric:];
OP = [:LineBreak =  Open_Punctuation:];
PO = [:LineBreak =  Postfix_Numeric:];
PR = [:LineBreak =  Prefix_Numeric:];
QU = [:LineBreak =  Quotation:];
RI = [:LineBreak =  Regional_Indicator:];
SA = [:LineBreak =  Complex_Context:];
SG = [:LineBreak =  Surrogate:];
SP = [:LineBreak =  Space:];
SY = [:LineBreak =  Break_Symbols:];
WJ = [:LineBreak =  Word_Joiner:];
XX = [:LineBreak =  Unknown:];
ZW = [:LineBreak =  ZWSpace:];
ZWJ = [:LineBreak =  ZWJ:];

# LB1 - Resolve AI, CB, CJ, SA, SG, and XX into other line breaking classes
AL = [AL AI SG XX ];
dictionary = SA;

# By LB9, a ZWJ also behaves as a CM. Including it in the definition of CM avoids having to explicitly
#         list it in the numerous rules that use CM.
CM = [CMS ZWJ];

LB4:        BK ÷;
LB5:        CR LF;
LB5.1:      CR ÷;
LB5.2:      LF ÷;
LB5.3:      NL ÷;

LB6:        . (BK | CR | LF | NL);
LB6.1:      [^BK CR LF NL SP ZW] CM* (BK | CR | LF | NL);

# LB8   break after ZW SP*.
# Precedes LB7 because both rules will match the sequences like ZW SP,
# and LB8 must take precedence.

LB8:        ZW SP* ÷ [^ZW SP BK CR LF NL];

# Numbers. Equivalent to Tailoring example 8 from UAX 14.
# Moved up, before LB14, because it can match longer sequences which must take precedence.
LB25:        ((PR | PO)CM*)? ((OP | HY)CM*)? (IS CM*)? NU (CM*(NU | SY | IS))* (CM*(CL | CP))? (CM*(PR | PO))?;

# Rules LB14 - LB17.
# Moved up, before LB7, because they can match a longer sequence that would also match LB7.
# For example, the sequence "OP CM SP AL" matches LB14
# while the prefix of it, "OP CM SP" matches LB7.1
LB14:        OP CM* SP* .;

# LB 14a Break before an IS that begins a number and follows a space.
LB14a:       SP ÷ IS CM* NU;

# LB14b       × IS
LB14b.1:     [^SP] CM* IS;
LB14b.2:     SP IS;

LB15:        QU CM* SP* OP;
LB16:        (CL | CP)CM* SP* NS;
LB17:        B2 CM* SP* B2;


# LB7 Do not break before spaces or zero width space.

LB7.1:      [^ZW SP] CM* [SP ZW];
LB7.2:      [ZW SP] [SP ZW];

# LB8a
#      ZWJ x
#      Don't match a CM on the right - let other rules pick up CM sequences, where
#      the ZWJ behaves as just another generic CM.
LB8a:       ZWJ [^CM];


# LB9:  X CM -> X
# LB10: Unattached CM -> AL

#LB11:       × WJ;
#            WJ ×

LB11.1:      [^SP] CM* WJ;
LB11.2:      SP WJ;
LB11.3:      WJ CM* [^CM];

LB12:        GL CM* [^CM];

LB12a:       [^SP BA HY] CM* GL;

# LB 13 Do not break before ‘]’ or ‘!’ or ‘/’, even after spaces.
LB13.1: [^SP] CM* [CL CP EX SY];
LB13.2: SP [CL CP EX SY];

# LB 14-17 are moved above LB 7.

LB18:        SP ÷;

LB19:        . CM* QU;
LB19.1:      QU CM* [^CM];

# LB 20   Break before and after CB.
#         Interaction with LB8a:  ZWJ x . is tricky because CM includes ZWJ.
#                                 ZWJ acts like a CM to the left, combining with CB.
#                                 ZWJ acts independently to the right, no break after by LB8a.
LB20.1:      . CM* ZWJ CB;
LB20.2:      . CM* ÷ CB;

LB20.3:      CB CM* ZWJ [^CM];
LB20.4:      CB CM* ÷;

# LB 20.09    Don't break between Hyphens and Letters when there is a break preceding the hyphen.
LB20.09:     ^(HY | HH) CM* AL;

# Note: Rule 21a must come before 21 to prevent 21.1 from matching HL BA, then
#       not picking up the continuing match after the BA from 21a.
LB21a:       HL CM* (HY | BA) CM* [^CM CB];

LB21.1:      . CM* [BA HY NS];
LB21.2:      BB CM* [^CM CB];

LB21b:       SY CM* HL;

LB22.1:        (AL | HL | CM) CM* IN;   # The CM is from LB10, treat an unattached CM as AL.
LB22.2:       EX CM* IN;
LB22.3:       (ID | EB | EM) CM* IN;
LB22.4:       IN CM* IN;
LB22.5:       NU CM* IN;

LB23.1:      (AL | HL | CM) CM* NU;
LB23.2:      NU CM* (AL | HL);

LB23a.1:     PR CM* (ID | EB | EM);
LB23a.2:     (ID | EB | EM) CM* PO;

LB24.2:      (PR | PO) CM* (AL | HL);
LB24.3:      (AL | HL | CM) CM* (PR | PO);


LB26.1:      JL CM* (JL | JV | H2 | H3);
LB26.2:      (JV | H2) CM* (JV | JT);
LB26.3:      (JT | H3) CM* JT;

LB27.1:      (JL | JV | JT | H2 | H3) CM* IN;
LB27.2:      (JL | JV | JT | H2 | H3) CM* PO;
LB27.3:      PR CM* (JL | JV | JT | H2 | H3);

# LB28 Do not break between Alphabetics.
#      Unattached (leading) CM treated as AL.
LB28:        (AL | HL | CM)CM* (AL | HL);

LB29:        IS CM* (AL | HL);

# LB30  is adjusted for unattached leading CM being treated as AL.
LB30.1:      (AL | CM | HL | NU) CM* OP;
LB30.2:      CP CM* (AL | HL | NU);

# LB30a  keep pairs of RI together.
LB30a.1:     RI CM* RI         ÷ [^BK CR LF NL SP ZW WJ CL CP EX IS SY GL QU BA HY NS CM];
LB30a.2:     RI CM* RI CM* CMS ÷ [^BK CR LF NL SP ZW WJ CL CP EX IS SY GL QU BA HY NS CM];
LB30a.3:     RI CM* RI CM* [BK CR LF NL SP ZW WJ GL CL CP EX IS SY QU BA HY NS ZWJ]?;

# LB30b Do not break between Emoji Base and Emoji Modifier
LB30b:       EB CM* EM;

# LB31 Break Everywhere Else.
#      Include combining marks
LB31.1:        . CM* ZWJ [^CM];
LB31.2:        . CM* ÷;
