# Copyright (c) 2002-2015  International Business Machines Corporation and
# others. All Rights Reserved.
#
#  file:  line_normal_fi.txt
#
#         Line Breaking Rules
#         Implement default line breaking as defined by 
#         Unicode Standard Annex #14 Revision 29 for Unicode 6.2
#         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 both for Finnish and to correpond to CSS
#         line-break=normal (BCP47 -u-lb-normal) as defined for languages other than 
#         Chinese & Japanese.
#         It sets characters of class CJ to behave like ID.

#
#  Character Classes defined by TR 14.
#

!!chain;
!!LBCMNoChain;


!!lookAheadHardBreak;
#
#  !!lookAheadHardBreak    Described here because it is (as yet) undocumented elsewhere
#                          and only used for the line break rules.
#
#           It is used in the implementation of rule LB 10
#           which says to treat any combining mark that is not attached to a base
#           character as if it were of class AL  (alphabetic).
#
#           The problem occurs in the reverse rules.
#
#           Consider a sequence like, with correct breaks as shown
#               LF  ID  CM  AL  AL
#                  ^       ^       ^
#           Then consider the sequence without the initial ID (ideographic)
#                 LF  CM  AL  AL
#                    ^           ^
#           Our CM, which in the first example was attached to the ideograph,
#           is now unattached, becomes an alpha, and joins in with the other
#           alphas.
#
#           When iterating forwards, these sequences do not present any problems
#           When iterating backwards, we need to look ahead when encountering
#           a CM to see whether it attaches to something further on or not.
#           (Look-ahead in a reverse rule is looking towards the start)
#
#           If the CM is unattached, we need to force a break.
#
#           !!lookAheadHardBreak forces the run time state machine to
#           stop immediately when a look ahead rule ( '/' operator) matches,
#           and set the match position to that of the look-ahead operator,
#           no matter what other rules may be in play at the time.
#
#           See rule LB 19 for an example.
#

$AI = [:LineBreak =  Ambiguous:];
$AL = [:LineBreak =  Alphabetic:];
$BA = [[:LineBreak =  Break_After:] - [\u2010]];
$HH = [\u2010];
$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:];
$CM = [:LineBreak =  Combining_Mark:];
$CP = [:LineBreak =  Close_Parenthesis:];
$CR = [:LineBreak =  Carriage_Return:];
$EX = [:LineBreak =  Exclamation:];
$GL = [:LineBreak =  Glue:];
$HL = [:LineBreak =  Hebrew_Letter:];
$HY = [:LineBreak =  Hyphen:];
$H2 = [:LineBreak =  H2:];
$H3 = [:LineBreak =  H3:];
$ID = [[:LineBreak =  Ideographic:] $CJ];
$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:];
$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:];

#   Dictionary character set, for triggering language-based break engines. Currently
#   limited to LineBreak=Complex_Context. Note that this set only works in Unicode
#   5.0 or later as the definition of Complex_Context was corrected to include all
#   characters requiring dictionary break.

$dictionary = [:LineBreak = Complex_Context:];

#
#  Rule LB1.  By default, treat AI  (characters with ambiguous east Asian width),
#                               SA  (South East Asian: Thai, Lao, Khmer)
#                               SG  (Unpaired Surrogates)
#                               XX  (Unknown, unassigned)
#                         as $AL  (Alphabetic)
#
$ALPlus = [$AL $AI $SA $SG $XX];

#
#  Combining Marks.   X $CM*  behaves as if it were X.  Rule LB6.
#
$ALcm = $ALPlus $CM*;
$BAcm = $BA $CM*;
$HHcm = $HH $CM*;
$BBcm = $BB $CM*;
$B2cm = $B2 $CM*;
$CLcm = $CL $CM*;
$CPcm = $CP $CM*;
$EXcm = $EX $CM*;
$GLcm = $GL $CM*;
$HLcm = $HL $CM*;
$HYcm = $HY $CM*;
$H2cm = $H2 $CM*;
$H3cm = $H3 $CM*;
$IDcm = $ID $CM*;
$INcm = $IN $CM*;
$IScm = $IS $CM*;
$JLcm = $JL $CM*;
$JVcm = $JV $CM*;
$JTcm = $JT $CM*;
$NScm = $NS $CM*;
$NUcm = $NU $CM*;
$OPcm = $OP $CM*;
$POcm = $PO $CM*;
$PRcm = $PR $CM*;
$QUcm = $QU $CM*;
$RIcm = $RI $CM*;
$SYcm = $SY $CM*;
$WJcm = $WJ $CM*;

## -------------------------------------------------

!!forward;

#
#  Each class of character can stand by itself as an unbroken token, with trailing combining stuff
#
$ALPlus $CM+;
$BA $CM+;
$HH $CM+;
$BB $CM+;
$B2 $CM+;
$CL $CM+;
$CP $CM+;
$EX $CM+;
$GL $CM+;
$HL $CM+;
$HY $CM+;
$H2 $CM+;
$H3 $CM+;
$ID $CM+;
$IN $CM+;
$IS $CM+;
$JL $CM+;
$JV $CM+;
$JT $CM+;
$NS $CM+;
$NU $CM+;
$OP $CM+;
$PO $CM+;
$PR $CM+;
$QU $CM+;
$RI $CM+;
$SY $CM+;
$WJ $CM+;

#
# CAN_CM  is the set of characters that may combine with CM combining chars.
#         Note that Linebreak UAX 14's concept of a combining char and the rules
#         for what they can combine with are _very_ different from the rest of Unicode.
#
#         Note that $CM itself is left out of this set.  If CM is needed as a base
#         it must be listed separately in the rule.
#
$CAN_CM  = [^$SP $BK $CR $LF $NL $ZW $CM];       # Bases that can   take CMs
$CANT_CM = [ $SP $BK $CR $LF $NL $ZW $CM];       # Bases that can't take CMs

#
# AL_FOLLOW  set of chars that can unconditionally follow an AL
#            Needed in rules where stand-alone $CM s are treated as AL.
#            Chaining is disabled with CM because it causes other failures,
#            so for this one case we need to manually list out longer sequences.
#
$AL_FOLLOW_NOCM = [$BK $CR $LF $NL $ZW $SP];
$AL_FOLLOW_CM   = [$CL $CP $EX $HL $IS $SY $WJ $GL $OP $QU $BA $HH $HY $NS $IN $NU $ALPlus];
$AL_FOLLOW      = [$AL_FOLLOW_NOCM $AL_FOLLOW_CM];


#
#  Rule LB 4, 5    Mandatory (Hard) breaks.
#
$LB4Breaks    = [$BK $CR $LF $NL];
$LB4NonBreaks = [^$BK $CR $LF $NL];
$CR $LF {100};

#
#  LB 6    Do not break before hard line breaks.
#
$LB4NonBreaks?  $LB4Breaks {100};    # LB 5  do not break before hard breaks.
$CAN_CM $CM*    $LB4Breaks {100};
$CM+            $LB4Breaks {100};

# LB 7         x SP
#              x ZW
$LB4NonBreaks [$SP $ZW];
$CAN_CM $CM*  [$SP $ZW];
$CM+          [$SP $ZW];

#
# LB 8         Break after zero width space
#              TODO:  ZW SP* <break>
#              An engine change is required to write the reverse rule for this.
#              For now, leave the Unicode 5.2 rule, ZW <break>
#
$LB8Breaks    = [$LB4Breaks $ZW];
$LB8NonBreaks = [[$LB4NonBreaks] - [$ZW]];


# LB 9     Combining marks.      X   $CM needs to behave like X, where X is not $SP, $BK $CR $LF $NL 
#                                $CM not covered by the above needs to behave like $AL   
#                                See definition of $CAN_CM.

$CAN_CM $CM+;                   #  Stick together any combining sequences that don't match other rules.
$CM+;

#
# LB 11  Do not break before or after WORD JOINER & related characters.
#
$CAN_CM $CM*  $WJcm;
$LB8NonBreaks $WJcm;
$CM+          $WJcm;

$WJcm $CANT_CM;
$WJcm $CAN_CM $CM*;

#
# LB 12  Do not break after NBSP and related characters.
#         GL  x
#
$GLcm $CAN_CM $CM*;
$GLcm $CANT_CM;
 
#
# LB 12a  Do not break before NBSP and related characters ...
#            [^SP BA HY] x GL
#
[[$LB8NonBreaks] - [$SP $BA $HH $HY]] $CM* $GLcm;
$CM+ GLcm;



#
# LB 13   Don't break before ']' or '!' or ';' or '/', even after spaces.
#
$LB8NonBreaks $CL;
$CAN_CM $CM*  $CL;
$CM+          $CL;              # by rule 10, stand-alone CM behaves as AL

$LB8NonBreaks $CP;
$CAN_CM $CM*  $CP;
$CM+          $CP;              # by rule 10, stand-alone CM behaves as AL

$LB8NonBreaks $EX;
$CAN_CM $CM*  $EX;
$CM+          $EX;              # by rule 10, stand-alone CM behaves as AL

$LB8NonBreaks $IS;
$CAN_CM $CM*  $IS;
$CM+          $IS;              # by rule 10, stand-alone CM behaves as AL

$LB8NonBreaks $SY;
$CAN_CM $CM*  $SY;
$CM+          $SY;              # by rule 10, stand-alone CM behaves as AL


#
# LB 14  Do not break after OP, even after spaces
#
$OPcm $SP* $CAN_CM $CM*;
$OPcm $SP* $CANT_CM;

$OPcm $SP+ $CM+ $AL_FOLLOW?;    # by rule 10, stand-alone CM behaves as AL

# LB 15
$QUcm $SP* $OPcm;

# LB 16
($CLcm | $CPcm) $SP* $NScm;

# LB 17
$B2cm $SP* $B2cm;

#
# LB 18  Break after spaces.
#
$LB18NonBreaks = [$LB8NonBreaks - [$SP]];
$LB18Breaks    = [$LB8Breaks $SP];


# LB 19
#         x QU
$LB18NonBreaks $CM* $QUcm;
$CM+                $QUcm;

#         QU  x
$QUcm .?;
$QUcm $LB18NonBreaks $CM*;    # Don't let a combining mark go onto $CR, $BK, etc.
                              #  TODO:  I don't think this rule is needed.


# LB 20
#        <break>  $CB
#        $CB   <break>

$LB20NonBreaks = [$LB18NonBreaks - $CB];

# LB 20.09 added rule for Finnish tailoring
# LB 21        x   (BA | HY | NS)
#           BB x
#
$LB20NonBreaks $CM* ($BAcm | $HHcm | $HYcm | $NScm) / $AL; 
$LB20NonBreaks $CM* ($BAcm | $HHcm | $HYcm | $NScm); 
($HY | $HH) $AL;

$BBcm [^$CB];                                  #  $BB  x
$BBcm $LB20NonBreaks $CM*;

# LB 21a Don't break after Hebrew + Hyphen
#   HL (HY | BA) x
#  
$HLcm ($HYcm | $BAcm | $HHcm) [^$CB]?;

# LB 21b (forward) Don't break between SY and HL
# (break between HL and SY already disallowed by LB 13 above)
$SYcm $HLcm;

# LB 22
($ALcm | $HLcm) $INcm;
$CM+     $INcm;     #  by rule 10, any otherwise unattached CM behaves as AL
$IDcm    $INcm;
$INcm    $INcm;
$NUcm    $INcm;


# $LB 23
$IDcm  $POcm;
$ALcm  $NUcm;       # includes $LB19
$HLcm  $NUcm;
$CM+   $NUcm;       # Rule 10, any otherwise unattached CM behaves as AL
$NUcm  $ALcm;
$NUcm  $HLcm;

#
# LB 24
#
$PRcm $IDcm;
$PRcm ($ALcm | $HLcm);
$POcm ($ALcm | $HLcm);

#
# LB 25   Numbers.
#
($PRcm | $POcm)? ($OPcm | $HYcm)? $NUcm ($NUcm | $SYcm | $IScm)* ($CLcm | $CPcm)? ($PRcm | $POcm)?;

# LB 26  Do not break a Korean syllable
#
$JLcm ($JLcm | $JVcm | $H2cm | $H3cm);
($JVcm | $H2cm) ($JVcm | $JTcm);
($JTcm | $H3cm) $JTcm;

# LB 27  Treat korean Syllable Block the same as ID  (don't break it)
($JLcm | $JVcm | $JTcm | $H2cm | $H3cm) $INcm;
($JLcm | $JVcm | $JTcm | $H2cm | $H3cm) $POcm;
$PRcm ($JLcm | $JVcm | $JTcm | $H2cm | $H3cm);


# LB 28   Do not break between alphabetics
#
($ALcm | $HLcm) ($ALcm | $HLcm);
$CM+ ($ALcm | $HLcm);      # The $CM+ is from rule 10, an unattached CM is treated as AL

# LB 29
$IScm ($ALcm | $HLcm);

# LB 30
($ALcm | $HLcm | $NUcm) $OPcm;
$CM+ $OPcm;         # The $CM+ is from rule 10, an unattached CM is treated as AL.          
$CPcm ($ALcm | $HLcm | $NUcm);

# LB 30a  Do not break between regional indicators.
$RIcm $RIcm;

#
#  Reverse Rules.
#
## -------------------------------------------------

!!reverse;

$CM+ $ALPlus;
$CM+ $BA;
$CM+ $HH;
$CM+ $BB;
$CM+ $B2;
$CM+ $CL;
$CM+ $CP;
$CM+ $EX;
$CM+ $GL;
$CM+ $HL;
$CM+ $HY;
$CM+ $H2;
$CM+ $H3;
$CM+ $ID;
$CM+ $IN;
$CM+ $IS;
$CM+ $JL;
$CM+ $JV;
$CM+ $JT;
$CM+ $NS;
$CM+ $NU;
$CM+ $OP;
$CM+ $PO;
$CM+ $PR;
$CM+ $QU;
$CM+ $RI;
$CM+ $SY;
$CM+ $WJ;
$CM+;


#
#  Sequences of the form  (shown forwards)
#      [CANT_CM]  <break>  [CM]  [whatever]
#  The CM needs to behave as an AL
#
$AL_FOLLOW $CM+ / (
          [$BK $CR $LF $NL $ZW {eof}] |
          $SP+ $CM+ $SP |
          $SP+ $CM* ([^$OP $CM $SP] | [$AL {eof}]));   # if LB 14 will match, need to surpress this break.
                                               #  LB14 says    OP SP* x .        
                                               #    becomes    OP SP* x AL
                                               #    becomes    OP SP* x CM+ AL_FOLLOW
                                               #
                                               # Further note:  the $AL in [$AL {eof}] is only to work around
                                               #                a rule compiler bug which complains about
                                               #                empty sets otherwise.
          
#
#  Sequences of the form  (shown forwards)
#      [CANT_CM]  <break> [CM]  <break>  [PR]
#  The CM needs to behave as an AL
#  This rule is concerned about getting the second of the two <breaks> in place.
#

[$PR   ] / $CM+ [$BK $CR $LF $NL $ZW $SP {eof}];



# LB 4, 5, 5

$LB4Breaks [$LB4NonBreaks-$CM];
$LB4Breaks $CM+ $CAN_CM;
$LF $CR;


# LB 7         x SP
#              x ZW
[$SP $ZW] [$LB4NonBreaks-$CM];
[$SP $ZW] $CM+ $CAN_CM;

# LB 8 ZW SP* <break>
#     TODO: to implement this, we need more than one look-ahead hard break in play at a time.
#           Requires an engine enhancement.
#   / $SP* $ZW

# LB 9,10  Combining marks.
#    X   $CM needs to behave like X, where X is not $SP or controls.
#    $CM not covered by the above needs to behave like $AL
# Stick together any combining sequences that don't match other rules.
$CM+ $CAN_CM;


# LB 11
$CM* $WJ $CM* $CAN_CM;
$CM* $WJ      [$LB8NonBreaks-$CM];

     $CANT_CM $CM* $WJ;
$CM* $CAN_CM  $CM* $WJ;

# LB 12a
#      [^SP BA HY] x GL
#
$CM* $GL $CM* [$LB8NonBreaks-[$CM $SP $BA $HH $HY]];

# LB 12
#     GL  x
#
$CANT_CM $CM* $GL;
$CM* $CAN_CM $CM* $GL;


# LB 13
$CL $CM+ $CAN_CM;
$CP $CM+ $CAN_CM;
$EX $CM+ $CAN_CM;
$IS $CM+ $CAN_CM;
$SY $CM+ $CAN_CM;

$CL [$LB8NonBreaks-$CM];
$CP [$LB8NonBreaks-$CM];
$EX [$LB8NonBreaks-$CM];
$IS [$LB8NonBreaks-$CM];
$SY [$LB8NonBreaks-$CM];

# Rule 13 & 14 taken together for an edge case.
#   Match this, shown forward
#     OP SP+  ($CM+ behaving as $AL) (CL | CP | EX | IS | IY)
#   This really wants to chain at the $CM+ (which is acting as an $AL)
#   except for $CM chaining being disabled.
[$CL $CP $EX $IS $SY] $CM+ $SP+ $CM* $OP;  

# LB 14    OP SP* x
#
$CM* $CAN_CM    $SP* $CM* $OP;
     $CANT_CM   $SP* $CM* $OP;
$AL_FOLLOW? $CM+  $SP $SP* $CM* $OP;     #  by LB 10, behaves like $AL_FOLLOW? $AL $SP* $CM* $OP
     
     $AL_FOLLOW_NOCM $CM+ $SP+ $CM* $OP;
$CM* $AL_FOLLOW_CM   $CM+ $SP+ $CM* $OP;
$SY $CM $SP+ $OP;   # TODO:  Experiment.  Remove.



# LB 15
$CM* $OP $SP* $CM* $QU;

# LB 16
$CM* $NS $SP* $CM* ($CL | $CP);

# LB 17
$CM* $B2 $SP* $CM* $B2;

# LB 18  break after spaces
#        Nothing explicit needed here.


#
# LB 19
#
$CM* $QU $CM* $CAN_CM;                                #   . x QU
$CM* $QU      $LB18NonBreaks;


$CM* $CAN_CM  $CM* $QU;                               #   QU x .
     $CANT_CM $CM* $QU;
     
#
#  LB 20  Break before and after CB.
#         nothing needed here.
#

# LB 20.09 added rule for Finnish tailoring
$AL ($HY | $HH) / $SP;

# LB 21
$CM* ($BA | $HH | $HY | $NS) $CM* [$LB20NonBreaks-$CM];     #  . x (BA | HY | NS)

$CM* [$LB20NonBreaks-$CM] $CM* $BB;                   #  BB x .
[^$CB] $CM* $BB;                                      # 

# LB21a
[^$CB] $CM* ($HY | $BA | $HH) $CM* $HL;

# LB21b (reverse)
$CM* $HL $CM* $SY;

# LB 22
$CM* $IN $CM* ($ALPlus | $HL);
$CM* $IN $CM* $ID;
$CM* $IN $CM* $IN;
$CM* $IN $CM* $NU;

# LB 23
$CM* $PO $CM* $ID;
$CM* $NU $CM* ($ALPlus | $HL);
$CM* ($ALPlus | $HL) $CM* $NU;

# LB 24
$CM* $ID $CM* $PR;
$CM* ($ALPlus | $HL) $CM* $PR;
$CM* ($ALPlus | $HL) $CM* $PO;


# LB 25
($CM* ($PR | $PO))? ($CM* ($CL | $CP))? ($CM* ($NU | $IS | $SY))* $CM* $NU ($CM* ($OP | $HY))? ($CM* ($PR | $PO))?;

# LB 26
$CM* ($H3 | $H2 | $JV | $JL) $CM* $JL;
$CM* ($JT | $JV) $CM* ($H2 | $JV);
$CM* $JT $CM* ($H3 | $JT);

# LB 27
$CM* $IN $CM* ($H3 | $H2 | $JT | $JV | $JL);
$CM* $PO $CM* ($H3 | $H2 | $JT | $JV | $JL);
$CM* ($H3 | $H2 | $JT | $JV | $JL) $CM* $PR;

# LB 28
$CM* ($ALPlus | $HL) $CM* ($ALPlus | $HL);


# LB 29
$CM* ($ALPlus | $HL) $CM* $IS;

# LB 30
$CM* $OP $CM* ($ALPlus | $HL | $NU);
$CM* ($ALPlus | $HL | $NU) $CM* $CP;

# LB 30a
$CM* $RI $CM* $RI;

## -------------------------------------------------

!!safe_reverse;

# LB 9
$CM+ [^$CM $BK $CR $LF $NL $ZW $SP];
$CM+ $SP / .;

# LB 14
$SP+ $CM* $OP;

# LB 15
$SP+ $CM* $QU;

# LB 16
$SP+ $CM* ($CL | $CP);

# LB 17
$SP+ $CM* $B2;

# LB 21
$CM* ($HY | $BA | $HH) $CM* $HL;

# LB 25
($CM* ($IS | $SY))+ $CM* $NU;
($CL | $CP) $CM* ($NU | $IS | $SY);

# For dictionary-based break
$dictionary $dictionary;

## -------------------------------------------------

!!safe_forward;

# Skip forward over all character classes that are involved in
#   rules containing patterns with possibly more than one char
#   of context.
#
#  It might be slightly more efficient to have specific rules
#  instead of one generic one, but only if we could
#  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];
$dictionary $dictionary;

