fontservices/textbase/sgdi/LineBreak.cpp
author hgs
Mon, 12 Jul 2010 14:38:26 +0800
changeset 45 662fa7de7023
permissions -rw-r--r--
201024_05
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45
662fa7de7023 201024_05
hgs
parents:
diff changeset
     1
// Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
662fa7de7023 201024_05
hgs
parents:
diff changeset
     2
// All rights reserved.
662fa7de7023 201024_05
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
662fa7de7023 201024_05
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
662fa7de7023 201024_05
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
662fa7de7023 201024_05
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
662fa7de7023 201024_05
hgs
parents:
diff changeset
     7
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
     8
// Initial Contributors:
662fa7de7023 201024_05
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
662fa7de7023 201024_05
hgs
parents:
diff changeset
    10
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
    11
// Contributors:
662fa7de7023 201024_05
hgs
parents:
diff changeset
    12
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
    13
// Description:
662fa7de7023 201024_05
hgs
parents:
diff changeset
    14
// This file was last edited on 09/04/2007. Please read the 'Unicode Character Data and Line Break data Update History.doc' file
662fa7de7023 201024_05
hgs
parents:
diff changeset
    15
// for the latest updates.
662fa7de7023 201024_05
hgs
parents:
diff changeset
    16
// 
662fa7de7023 201024_05
hgs
parents:
diff changeset
    17
//
662fa7de7023 201024_05
hgs
parents:
diff changeset
    18
662fa7de7023 201024_05
hgs
parents:
diff changeset
    19
#include "LineBreak.h"
662fa7de7023 201024_05
hgs
parents:
diff changeset
    20
#include "LineBreakImp.h"
662fa7de7023 201024_05
hgs
parents:
diff changeset
    21
#include <e32std.h>
662fa7de7023 201024_05
hgs
parents:
diff changeset
    22
#include <e32svr.h>
662fa7de7023 201024_05
hgs
parents:
diff changeset
    23
662fa7de7023 201024_05
hgs
parents:
diff changeset
    24
_LIT(KLinebreakPanicCategory,"LineBreak");
662fa7de7023 201024_05
hgs
parents:
diff changeset
    25
662fa7de7023 201024_05
hgs
parents:
diff changeset
    26
GLDEF_C void Panic(TInt aError)
662fa7de7023 201024_05
hgs
parents:
diff changeset
    27
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
    28
	User::Panic(KLinebreakPanicCategory,aError);
662fa7de7023 201024_05
hgs
parents:
diff changeset
    29
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
    30
662fa7de7023 201024_05
hgs
parents:
diff changeset
    31
const TUint KOpFlag = 1 << MLineBreaker::EOpLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    32
const TUint KClFlag = 1 << MLineBreaker::EClLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    33
const TUint KNsFlag = 1 << MLineBreaker::ENsLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    34
const TUint KExFlag = 1 << MLineBreaker::EExLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    35
const TUint KSyFlag = 1 << MLineBreaker::ESyLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    36
const TUint KIsFlag = 1 << MLineBreaker::EIsLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    37
const TUint KPrFlag = 1 << MLineBreaker::EPrLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    38
const TUint KPoFlag = 1 << MLineBreaker::EPoLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    39
const TUint KNuFlag = 1 << MLineBreaker::ENuLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    40
const TUint KAlFlag = 1 << MLineBreaker::EAlLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    41
const TUint KIdFlag = 1 << MLineBreaker::EIdLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    42
const TUint KInFlag = 1 << MLineBreaker::EInLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    43
const TUint KBbFlag = 1 << MLineBreaker::EBbLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    44
const TUint KB2Flag = 1 << MLineBreaker::EB2LineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    45
const TUint KZwFlag = 1 << MLineBreaker::EZwLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    46
const TUint KCmFlag = 1 << MLineBreaker::ECmLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    47
const TUint KAiFlag = 1 << MLineBreaker::EAiLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    48
662fa7de7023 201024_05
hgs
parents:
diff changeset
    49
const TUint KAiAlFlags = KAiFlag | KAlFlag;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    50
662fa7de7023 201024_05
hgs
parents:
diff changeset
    51
const TUint KAllBreaks = 0xFFFFFFFF;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    52
const TUint KUsualForbidden = KClFlag | KExFlag | KSyFlag | KIsFlag | KZwFlag;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    53
const TUint KUsualAllowed = KOpFlag | KPrFlag | KPoFlag | KNuFlag | KAiAlFlags | KIdFlag | KInFlag | KBbFlag | KB2Flag;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    54
662fa7de7023 201024_05
hgs
parents:
diff changeset
    55
const TUint KAlAllowed = KOpFlag | KPrFlag | KPoFlag | KIdFlag | KBbFlag | KB2Flag;
662fa7de7023 201024_05
hgs
parents:
diff changeset
    56
662fa7de7023 201024_05
hgs
parents:
diff changeset
    57
// A table of break rules, indexed by the class of the character before the possible break.
662fa7de7023 201024_05
hgs
parents:
diff changeset
    58
static const TLineBreakRule TheLineBreakRuleTable[MLineBreaker::ELineBreakClasses] =
662fa7de7023 201024_05
hgs
parents:
diff changeset
    59
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
    60
	{ KAllBreaks - KCmFlag,0 },														// Op
662fa7de7023 201024_05
hgs
parents:
diff changeset
    61
	{ KUsualForbidden | KNsFlag,KUsualAllowed - KPoFlag },							// Cl
662fa7de7023 201024_05
hgs
parents:
diff changeset
    62
	{ KUsualForbidden | KOpFlag,0 },												// Qu
662fa7de7023 201024_05
hgs
parents:
diff changeset
    63
	{ KUsualForbidden, 0 },															// Gl
662fa7de7023 201024_05
hgs
parents:
diff changeset
    64
	{ KUsualForbidden, KUsualAllowed },												// Ns
662fa7de7023 201024_05
hgs
parents:
diff changeset
    65
	{ KUsualForbidden, KUsualAllowed },												// Ex
662fa7de7023 201024_05
hgs
parents:
diff changeset
    66
	{ KUsualForbidden, KUsualAllowed - KNuFlag },									// Sy
662fa7de7023 201024_05
hgs
parents:
diff changeset
    67
	{ KUsualForbidden, KUsualAllowed - KNuFlag },									// Is
662fa7de7023 201024_05
hgs
parents:
diff changeset
    68
	{ KUsualForbidden, KPrFlag | KPoFlag | KInFlag | KBbFlag | KB2Flag },			// Pr
662fa7de7023 201024_05
hgs
parents:
diff changeset
    69
	{ KUsualForbidden, KUsualAllowed },												// Po
662fa7de7023 201024_05
hgs
parents:
diff changeset
    70
	{ KUsualForbidden, KOpFlag | KPrFlag | KIdFlag | KBbFlag | KB2Flag },			// Nu
662fa7de7023 201024_05
hgs
parents:
diff changeset
    71
	{ KUsualForbidden, KAlAllowed }, // Al
662fa7de7023 201024_05
hgs
parents:
diff changeset
    72
	{ KUsualForbidden, KUsualAllowed - KPoFlag - KInFlag },							// Id
662fa7de7023 201024_05
hgs
parents:
diff changeset
    73
	{ KUsualForbidden, KUsualAllowed - KInFlag },									// In
662fa7de7023 201024_05
hgs
parents:
diff changeset
    74
	{ KUsualForbidden, KUsualAllowed },												// Hy
662fa7de7023 201024_05
hgs
parents:
diff changeset
    75
	{ KUsualForbidden, KUsualAllowed },												// Ba
662fa7de7023 201024_05
hgs
parents:
diff changeset
    76
	{ KUsualForbidden, 0 },															// Bb
662fa7de7023 201024_05
hgs
parents:
diff changeset
    77
	{ KUsualForbidden | KB2Flag, KUsualAllowed },									// B2
662fa7de7023 201024_05
hgs
parents:
diff changeset
    78
	{ KZwFlag, KAllBreaks - KZwFlag - KCmFlag},										// Zw
662fa7de7023 201024_05
hgs
parents:
diff changeset
    79
	{ KUsualForbidden, KOpFlag | KPrFlag | KPoFlag | KIdFlag | KBbFlag | KB2Flag }, // Cm
662fa7de7023 201024_05
hgs
parents:
diff changeset
    80
	{ 0, 0, },																		// Bk
662fa7de7023 201024_05
hgs
parents:
diff changeset
    81
	{ 0, 0, }, // Cr
662fa7de7023 201024_05
hgs
parents:
diff changeset
    82
	{ 0, 0, }, // Lf
662fa7de7023 201024_05
hgs
parents:
diff changeset
    83
	{ 0, 0, },																		// Sg
662fa7de7023 201024_05
hgs
parents:
diff changeset
    84
	{ 0, 0, },																		// Cb
662fa7de7023 201024_05
hgs
parents:
diff changeset
    85
	{ KAllBreaks, 0, },																// Sp
662fa7de7023 201024_05
hgs
parents:
diff changeset
    86
	{ 0, 0, },																		// Sa
662fa7de7023 201024_05
hgs
parents:
diff changeset
    87
	{ KUsualForbidden, KAlAllowed, }, // Ai
662fa7de7023 201024_05
hgs
parents:
diff changeset
    88
	{ 0, 0, }																		// Xx
662fa7de7023 201024_05
hgs
parents:
diff changeset
    89
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
    90
662fa7de7023 201024_05
hgs
parents:
diff changeset
    91
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
    92
A sorted table of ranges of characters, with their line breaking classes.
662fa7de7023 201024_05
hgs
parents:
diff changeset
    93
A range includes all codes for iStart <= code < iEnd.
662fa7de7023 201024_05
hgs
parents:
diff changeset
    94
All these items have fixed range, please don't split any item into more or 
662fa7de7023 201024_05
hgs
parents:
diff changeset
    95
combine consecutive items even if they have the same property,
662fa7de7023 201024_05
hgs
parents:
diff changeset
    96
because these change will cause mismatch with customer definition.
662fa7de7023 201024_05
hgs
parents:
diff changeset
    97
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
    98
static const TLineBreakRange TheLineBreakRangeTable[] = 
662fa7de7023 201024_05
hgs
parents:
diff changeset
    99
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
   100
    { 0x0000, 0x0009, MLineBreaker::ECmLineBreakClass },  //<control>
662fa7de7023 201024_05
hgs
parents:
diff changeset
   101
    { 0x0009, 0x000a, MLineBreaker::EBaLineBreakClass },  //<control>
662fa7de7023 201024_05
hgs
parents:
diff changeset
   102
    { 0x000a, 0x000b, MLineBreaker::ELfLineBreakClass },  //<control>
662fa7de7023 201024_05
hgs
parents:
diff changeset
   103
    { 0x000b, 0x000c, MLineBreaker::ECmLineBreakClass },  //<control>
662fa7de7023 201024_05
hgs
parents:
diff changeset
   104
    { 0x000c, 0x000d, MLineBreaker::EBkLineBreakClass },  //<control>
662fa7de7023 201024_05
hgs
parents:
diff changeset
   105
    { 0x000d, 0x000e, MLineBreaker::ECrLineBreakClass },  //<control>
662fa7de7023 201024_05
hgs
parents:
diff changeset
   106
    { 0x000e, 0x0020, MLineBreaker::ECmLineBreakClass },  //<control>
662fa7de7023 201024_05
hgs
parents:
diff changeset
   107
    { 0x0020, 0x0021, MLineBreaker::ESpLineBreakClass },  //space
662fa7de7023 201024_05
hgs
parents:
diff changeset
   108
    { 0x0021, 0x0022, MLineBreaker::EExLineBreakClass },  //exclamation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   109
    { 0x0022, 0x0023, MLineBreaker::EQuLineBreakClass },  //quotation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   110
    { 0x0023, 0x0024, MLineBreaker::EAlLineBreakClass },  //number sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   111
    { 0x0024, 0x0025, MLineBreaker::EPrLineBreakClass },  //dollar sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   112
    { 0x0025, 0x0026, MLineBreaker::EPoLineBreakClass },  //percent sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   113
    { 0x0026, 0x0027, MLineBreaker::EAlLineBreakClass },  //ampersand
662fa7de7023 201024_05
hgs
parents:
diff changeset
   114
    { 0x0027, 0x0028, MLineBreaker::EQuLineBreakClass },  //apostrophe
662fa7de7023 201024_05
hgs
parents:
diff changeset
   115
    { 0x0028, 0x0029, MLineBreaker::EOpLineBreakClass },  //left parenthesis
662fa7de7023 201024_05
hgs
parents:
diff changeset
   116
    { 0x0029, 0x002a, MLineBreaker::EClLineBreakClass },  //right parenthesis
662fa7de7023 201024_05
hgs
parents:
diff changeset
   117
    { 0x002a, 0x002b, MLineBreaker::EAlLineBreakClass },  //asterisk
662fa7de7023 201024_05
hgs
parents:
diff changeset
   118
    { 0x002b, 0x002c, MLineBreaker::EPrLineBreakClass },  //plus sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   119
    { 0x002c, 0x002d, MLineBreaker::EIsLineBreakClass },  //comma
662fa7de7023 201024_05
hgs
parents:
diff changeset
   120
    { 0x002d, 0x002e, MLineBreaker::EHyLineBreakClass },  //hyphen-minus
662fa7de7023 201024_05
hgs
parents:
diff changeset
   121
    { 0x002e, 0x002f, MLineBreaker::EIsLineBreakClass },  //full stop
662fa7de7023 201024_05
hgs
parents:
diff changeset
   122
    { 0x002f, 0x0030, MLineBreaker::ESyLineBreakClass },  //solidus
662fa7de7023 201024_05
hgs
parents:
diff changeset
   123
    { 0x0030, 0x003a, MLineBreaker::ENuLineBreakClass },  //digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   124
    { 0x003a, 0x003c, MLineBreaker::EIsLineBreakClass },  //colon
662fa7de7023 201024_05
hgs
parents:
diff changeset
   125
    { 0x003c, 0x003f, MLineBreaker::EAlLineBreakClass },  //less-than sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   126
    { 0x003f, 0x0040, MLineBreaker::EExLineBreakClass },  //question mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   127
    { 0x0040, 0x005b, MLineBreaker::EAlLineBreakClass },  //commercial at
662fa7de7023 201024_05
hgs
parents:
diff changeset
   128
    { 0x005b, 0x005c, MLineBreaker::EOpLineBreakClass },  //left square bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
   129
    { 0x005c, 0x005d, MLineBreaker::EPrLineBreakClass },  //reverse solidus
662fa7de7023 201024_05
hgs
parents:
diff changeset
   130
    { 0x005d, 0x005e, MLineBreaker::EClLineBreakClass },  //right square bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
   131
    { 0x005e, 0x005f, MLineBreaker::EAlLineBreakClass },  //circumflex accent
662fa7de7023 201024_05
hgs
parents:
diff changeset
   132
    { 0x005f, 0x0060, MLineBreaker::EAlLineBreakClass },  //low line (underscore)
662fa7de7023 201024_05
hgs
parents:
diff changeset
   133
	{ 0x0060, 0x007b, MLineBreaker::EAlLineBreakClass },  //grave accent  
662fa7de7023 201024_05
hgs
parents:
diff changeset
   134
	{ 0x007b, 0x007c, MLineBreaker::EOpLineBreakClass },  //left curly bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
   135
    { 0x007c, 0x007d, MLineBreaker::EBaLineBreakClass },  //vertical line
662fa7de7023 201024_05
hgs
parents:
diff changeset
   136
    { 0x007d, 0x007e, MLineBreaker::EClLineBreakClass },  //right curly bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
   137
    { 0x007e, 0x007f, MLineBreaker::EAlLineBreakClass },  //tilde
662fa7de7023 201024_05
hgs
parents:
diff changeset
   138
    { 0x007f, 0x00a0, MLineBreaker::ECmLineBreakClass },  //<control>
662fa7de7023 201024_05
hgs
parents:
diff changeset
   139
    { 0x00a0, 0x00a1, MLineBreaker::EGlLineBreakClass },  //no-break space
662fa7de7023 201024_05
hgs
parents:
diff changeset
   140
    { 0x00a1, 0x00a2, MLineBreaker::EAiLineBreakClass },  //inverted exclamation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   141
    { 0x00a2, 0x00a3, MLineBreaker::EPoLineBreakClass },  //cent sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   142
    { 0x00a3, 0x00a6, MLineBreaker::EPrLineBreakClass },  //pound sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   143
    { 0x00a6, 0x00a7, MLineBreaker::EAlLineBreakClass },  //broken bar
662fa7de7023 201024_05
hgs
parents:
diff changeset
   144
    { 0x00a7, 0x00a9, MLineBreaker::EAiLineBreakClass },  //section sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   145
    { 0x00a9, 0x00aa, MLineBreaker::EAlLineBreakClass },  //copyright sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   146
    { 0x00aa, 0x00ab, MLineBreaker::EAiLineBreakClass },  //feminine ordinal indicator
662fa7de7023 201024_05
hgs
parents:
diff changeset
   147
    { 0x00ab, 0x00ac, MLineBreaker::EQuLineBreakClass },  //left-pointing double angle quotation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   148
    { 0x00ac, 0x00ad, MLineBreaker::EAlLineBreakClass },  //not sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   149
    { 0x00ad, 0x00ae, MLineBreaker::EBaLineBreakClass },  //soft hyphen
662fa7de7023 201024_05
hgs
parents:
diff changeset
   150
    { 0x00ae, 0x00b0, MLineBreaker::EAlLineBreakClass },  //registered sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   151
    { 0x00b0, 0x00b1, MLineBreaker::EPoLineBreakClass },  //degree sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   152
    { 0x00b1, 0x00b2, MLineBreaker::EPrLineBreakClass },  //plus-minus sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   153
    { 0x00b2, 0x00b4, MLineBreaker::EAiLineBreakClass },  //superscript two
662fa7de7023 201024_05
hgs
parents:
diff changeset
   154
    { 0x00b4, 0x00b5, MLineBreaker::EBaLineBreakClass },  //acute accent
662fa7de7023 201024_05
hgs
parents:
diff changeset
   155
    { 0x00b5, 0x00b6, MLineBreaker::EAlLineBreakClass },  //micro sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   156
    { 0x00b6, 0x00bb, MLineBreaker::EAiLineBreakClass },  //pilcrow sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   157
    { 0x00bb, 0x00bc, MLineBreaker::EQuLineBreakClass },  //right-pointing double angle quotation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   158
    { 0x00bc, 0x00c0, MLineBreaker::EAiLineBreakClass },  //vulgar fraction one quarter
662fa7de7023 201024_05
hgs
parents:
diff changeset
   159
    { 0x00c0, 0x00c6, MLineBreaker::EAlLineBreakClass },  //latin capital letter a with grave
662fa7de7023 201024_05
hgs
parents:
diff changeset
   160
    { 0x00c6, 0x00c7, MLineBreaker::EAiLineBreakClass },  //latin capital letter ae
662fa7de7023 201024_05
hgs
parents:
diff changeset
   161
    { 0x00c7, 0x00d0, MLineBreaker::EAlLineBreakClass },  //latin capital letter c with cedilla
662fa7de7023 201024_05
hgs
parents:
diff changeset
   162
    { 0x00d0, 0x00d1, MLineBreaker::EAiLineBreakClass },  //latin capital letter eth
662fa7de7023 201024_05
hgs
parents:
diff changeset
   163
    { 0x00d1, 0x00d7, MLineBreaker::EAlLineBreakClass },  //latin capital letter n with tilde
662fa7de7023 201024_05
hgs
parents:
diff changeset
   164
    { 0x00d7, 0x00d9, MLineBreaker::EAiLineBreakClass },  //multiplication sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   165
    { 0x00d9, 0x00de, MLineBreaker::EAlLineBreakClass },  //latin capital letter u with grave
662fa7de7023 201024_05
hgs
parents:
diff changeset
   166
    { 0x00de, 0x00e2, MLineBreaker::EAiLineBreakClass },  //latin capital letter thorn
662fa7de7023 201024_05
hgs
parents:
diff changeset
   167
    { 0x00e2, 0x00e6, MLineBreaker::EAlLineBreakClass },  //latin small letter a with circumflex
662fa7de7023 201024_05
hgs
parents:
diff changeset
   168
    { 0x00e6, 0x00e7, MLineBreaker::EAiLineBreakClass },  //latin small letter ae
662fa7de7023 201024_05
hgs
parents:
diff changeset
   169
    { 0x00e7, 0x00e8, MLineBreaker::EAlLineBreakClass },  //latin small letter c with cedilla
662fa7de7023 201024_05
hgs
parents:
diff changeset
   170
    { 0x00e8, 0x00eb, MLineBreaker::EAiLineBreakClass },  //latin small letter e with grave
662fa7de7023 201024_05
hgs
parents:
diff changeset
   171
    { 0x00eb, 0x00ec, MLineBreaker::EAlLineBreakClass },  //latin small letter e with diaeresis
662fa7de7023 201024_05
hgs
parents:
diff changeset
   172
    { 0x00ec, 0x00ee, MLineBreaker::EAiLineBreakClass },  //latin small letter i with grave
662fa7de7023 201024_05
hgs
parents:
diff changeset
   173
    { 0x00ee, 0x00f0, MLineBreaker::EAlLineBreakClass },  //latin small letter i with circumflex
662fa7de7023 201024_05
hgs
parents:
diff changeset
   174
    { 0x00f0, 0x00f1, MLineBreaker::EAiLineBreakClass },  //latin small letter eth
662fa7de7023 201024_05
hgs
parents:
diff changeset
   175
    { 0x00f1, 0x00f2, MLineBreaker::EAlLineBreakClass },  //latin small letter n with tilde
662fa7de7023 201024_05
hgs
parents:
diff changeset
   176
    { 0x00f2, 0x00f4, MLineBreaker::EAiLineBreakClass },  //latin small letter o with grave
662fa7de7023 201024_05
hgs
parents:
diff changeset
   177
    { 0x00f4, 0x00f7, MLineBreaker::EAlLineBreakClass },  //latin small letter o with circumflex
662fa7de7023 201024_05
hgs
parents:
diff changeset
   178
    { 0x00f7, 0x00fb, MLineBreaker::EAiLineBreakClass },  //division sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   179
    { 0x00fb, 0x00fc, MLineBreaker::EAlLineBreakClass },  //latin small letter u with circumflex
662fa7de7023 201024_05
hgs
parents:
diff changeset
   180
    { 0x00fc, 0x00fd, MLineBreaker::EAiLineBreakClass },  //latin small letter u with diaeresis
662fa7de7023 201024_05
hgs
parents:
diff changeset
   181
    { 0x00fd, 0x00fe, MLineBreaker::EAlLineBreakClass },  //latin small letter y with acute
662fa7de7023 201024_05
hgs
parents:
diff changeset
   182
    { 0x00fe, 0x00ff, MLineBreaker::EAiLineBreakClass },  //latin small letter thorn
662fa7de7023 201024_05
hgs
parents:
diff changeset
   183
    { 0x00ff, 0x0101, MLineBreaker::EAlLineBreakClass },  //latin small letter y with diaeresis
662fa7de7023 201024_05
hgs
parents:
diff changeset
   184
    { 0x0101, 0x0102, MLineBreaker::EAiLineBreakClass },  //latin small letter a with macron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   185
    { 0x0102, 0x0111, MLineBreaker::EAlLineBreakClass },  //latin capital letter a with breve
662fa7de7023 201024_05
hgs
parents:
diff changeset
   186
    { 0x0111, 0x0112, MLineBreaker::EAiLineBreakClass },  //latin small letter d with stroke
662fa7de7023 201024_05
hgs
parents:
diff changeset
   187
    { 0x0112, 0x0113, MLineBreaker::EAlLineBreakClass },  //latin capital letter e with macron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   188
    { 0x0113, 0x0114, MLineBreaker::EAiLineBreakClass },  //latin small letter e with macron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   189
    { 0x0114, 0x011b, MLineBreaker::EAlLineBreakClass },  //latin capital letter e with breve
662fa7de7023 201024_05
hgs
parents:
diff changeset
   190
    { 0x011b, 0x011c, MLineBreaker::EAiLineBreakClass },  //latin small letter e with caron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   191
    { 0x011c, 0x0126, MLineBreaker::EAlLineBreakClass },  //latin capital letter g with circumflex
662fa7de7023 201024_05
hgs
parents:
diff changeset
   192
    { 0x0126, 0x0128, MLineBreaker::EAiLineBreakClass },  //latin capital letter h with stroke
662fa7de7023 201024_05
hgs
parents:
diff changeset
   193
    { 0x0128, 0x012b, MLineBreaker::EAlLineBreakClass },  //latin capital letter i with tilde
662fa7de7023 201024_05
hgs
parents:
diff changeset
   194
    { 0x012b, 0x012c, MLineBreaker::EAiLineBreakClass },  //latin small letter i with macron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   195
    { 0x012c, 0x0131, MLineBreaker::EAlLineBreakClass },  //latin capital letter i with breve
662fa7de7023 201024_05
hgs
parents:
diff changeset
   196
    { 0x0131, 0x0134, MLineBreaker::EAiLineBreakClass },  //latin small letter dotless i
662fa7de7023 201024_05
hgs
parents:
diff changeset
   197
    { 0x0134, 0x0138, MLineBreaker::EAlLineBreakClass },  //latin capital letter j with circumflex
662fa7de7023 201024_05
hgs
parents:
diff changeset
   198
    { 0x0138, 0x0139, MLineBreaker::EAiLineBreakClass },  //latin small letter kra
662fa7de7023 201024_05
hgs
parents:
diff changeset
   199
    { 0x0139, 0x013f, MLineBreaker::EAlLineBreakClass },  //latin capital letter l with acute
662fa7de7023 201024_05
hgs
parents:
diff changeset
   200
    { 0x013f, 0x0143, MLineBreaker::EAiLineBreakClass },  //latin capital letter l with middle dot
662fa7de7023 201024_05
hgs
parents:
diff changeset
   201
    { 0x0143, 0x0144, MLineBreaker::EAlLineBreakClass },  //latin capital letter n with acute
662fa7de7023 201024_05
hgs
parents:
diff changeset
   202
    { 0x0144, 0x0145, MLineBreaker::EAiLineBreakClass },  //latin small letter n with acute
662fa7de7023 201024_05
hgs
parents:
diff changeset
   203
    { 0x0145, 0x0148, MLineBreaker::EAlLineBreakClass },  //latin capital letter n with cedilla
662fa7de7023 201024_05
hgs
parents:
diff changeset
   204
    { 0x0148, 0x014b, MLineBreaker::EAiLineBreakClass },  //latin small letter n with caron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   205
    { 0x014b, 0x014d, MLineBreaker::EAlLineBreakClass },  //latin small letter eng
662fa7de7023 201024_05
hgs
parents:
diff changeset
   206
    { 0x014d, 0x014e, MLineBreaker::EAiLineBreakClass },  //latin small letter o with macron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   207
    { 0x014e, 0x0152, MLineBreaker::EAlLineBreakClass },  //latin capital letter o with breve
662fa7de7023 201024_05
hgs
parents:
diff changeset
   208
    { 0x0152, 0x0154, MLineBreaker::EAiLineBreakClass },  //latin capital ligature oe
662fa7de7023 201024_05
hgs
parents:
diff changeset
   209
    { 0x0154, 0x0166, MLineBreaker::EAlLineBreakClass },  //latin capital letter r with acute
662fa7de7023 201024_05
hgs
parents:
diff changeset
   210
    { 0x0166, 0x0168, MLineBreaker::EAiLineBreakClass },  //latin capital letter t with stroke
662fa7de7023 201024_05
hgs
parents:
diff changeset
   211
    { 0x0168, 0x016b, MLineBreaker::EAlLineBreakClass },  //latin capital letter u with tilde
662fa7de7023 201024_05
hgs
parents:
diff changeset
   212
    { 0x016b, 0x016c, MLineBreaker::EAiLineBreakClass },  //latin small letter u with macron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   213
    { 0x016c, 0x01ce, MLineBreaker::EAlLineBreakClass },  //latin capital letter u with breve
662fa7de7023 201024_05
hgs
parents:
diff changeset
   214
    { 0x01ce, 0x01cf, MLineBreaker::EAiLineBreakClass },  //latin small letter a with caron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   215
    { 0x01cf, 0x01d0, MLineBreaker::EAlLineBreakClass },  //latin capital letter i with caron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   216
    { 0x01d0, 0x01d1, MLineBreaker::EAiLineBreakClass },  //latin small letter i with caron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   217
    { 0x01d1, 0x01d2, MLineBreaker::EAlLineBreakClass },  //latin capital letter o with caron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   218
    { 0x01d2, 0x01d3, MLineBreaker::EAiLineBreakClass },  //latin small letter o with caron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   219
    { 0x01d3, 0x01d4, MLineBreaker::EAlLineBreakClass },  //latin capital letter u with caron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   220
    { 0x01d4, 0x01d5, MLineBreaker::EAiLineBreakClass },  //latin small letter u with caron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   221
    { 0x01d5, 0x01d6, MLineBreaker::EAlLineBreakClass },  //latin capital letter u with diaeresis and macron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   222
    { 0x01d6, 0x01d7, MLineBreaker::EAiLineBreakClass },  //latin small letter u with diaeresis and macron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   223
    { 0x01d7, 0x01d8, MLineBreaker::EAlLineBreakClass },  //latin capital letter u with diaeresis and acute
662fa7de7023 201024_05
hgs
parents:
diff changeset
   224
    { 0x01d8, 0x01d9, MLineBreaker::EAiLineBreakClass },  //latin small letter u with diaeresis and acute
662fa7de7023 201024_05
hgs
parents:
diff changeset
   225
    { 0x01d9, 0x01da, MLineBreaker::EAlLineBreakClass },  //latin capital letter u with diaeresis and caron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   226
    { 0x01da, 0x01db, MLineBreaker::EAiLineBreakClass },  //latin small letter u with diaeresis and caron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   227
    { 0x01db, 0x01dc, MLineBreaker::EAlLineBreakClass },  //latin capital letter u with diaeresis and grave
662fa7de7023 201024_05
hgs
parents:
diff changeset
   228
    { 0x01dc, 0x01dd, MLineBreaker::EAiLineBreakClass },  //latin small letter u with diaeresis and grave
662fa7de7023 201024_05
hgs
parents:
diff changeset
   229
    { 0x01dd, 0x0250, MLineBreaker::EAlLineBreakClass },  //latin small letter turned e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   230
    { 0x0250, 0x0251, MLineBreaker::EAlLineBreakClass },  //latin small letter turned a
662fa7de7023 201024_05
hgs
parents:
diff changeset
   231
    { 0x0251, 0x0252, MLineBreaker::EAiLineBreakClass },  //latin small letter alpha
662fa7de7023 201024_05
hgs
parents:
diff changeset
   232
    { 0x0252, 0x0261, MLineBreaker::EAlLineBreakClass },  //latin small letter turned alpha
662fa7de7023 201024_05
hgs
parents:
diff changeset
   233
    { 0x0261, 0x0262, MLineBreaker::EAiLineBreakClass },  //latin small letter script g
662fa7de7023 201024_05
hgs
parents:
diff changeset
   234
    { 0x0262, 0x02c7, MLineBreaker::EAlLineBreakClass },  //latin letter small capital g
662fa7de7023 201024_05
hgs
parents:
diff changeset
   235
    { 0x02c7, 0x02c8, MLineBreaker::EAiLineBreakClass },  //caron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   236
    { 0x02c8, 0x02c9, MLineBreaker::EBbLineBreakClass },  //modifier letter vertical line
662fa7de7023 201024_05
hgs
parents:
diff changeset
   237
    { 0x02c9, 0x02cc, MLineBreaker::EAiLineBreakClass },  //modifier letter macron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   238
    { 0x02cc, 0x02cd, MLineBreaker::EBbLineBreakClass },  //modifier letter low vertical line
662fa7de7023 201024_05
hgs
parents:
diff changeset
   239
    { 0x02cd, 0x02ce, MLineBreaker::EAiLineBreakClass },  //modifier letter low macron
662fa7de7023 201024_05
hgs
parents:
diff changeset
   240
    { 0x02ce, 0x02d0, MLineBreaker::EAlLineBreakClass },  //modifier letter low grave accent
662fa7de7023 201024_05
hgs
parents:
diff changeset
   241
    { 0x02d0, 0x02d1, MLineBreaker::EAiLineBreakClass },  //modifier letter triangular colon
662fa7de7023 201024_05
hgs
parents:
diff changeset
   242
    { 0x02d1, 0x02d8, MLineBreaker::EAlLineBreakClass },  //modifier letter half triangular colon
662fa7de7023 201024_05
hgs
parents:
diff changeset
   243
    { 0x02d8, 0x02dc, MLineBreaker::EAiLineBreakClass },  //breve
662fa7de7023 201024_05
hgs
parents:
diff changeset
   244
    { 0x02dc, 0x02dd, MLineBreaker::EAlLineBreakClass },  //small tilde
662fa7de7023 201024_05
hgs
parents:
diff changeset
   245
    { 0x02dd, 0x02de, MLineBreaker::EAiLineBreakClass },  //double acute accent
662fa7de7023 201024_05
hgs
parents:
diff changeset
   246
    { 0x02de, 0x0300, MLineBreaker::EAlLineBreakClass },  //modifier letter rhotic hook
662fa7de7023 201024_05
hgs
parents:
diff changeset
   247
    { 0x0300, 0x034f, MLineBreaker::ECmLineBreakClass },  //combining grave accent
662fa7de7023 201024_05
hgs
parents:
diff changeset
   248
    { 0x034f, 0x0350, MLineBreaker::EGlLineBreakClass },  //COMBINING GRAPHEME JOINER
662fa7de7023 201024_05
hgs
parents:
diff changeset
   249
    { 0x0350, 0x035c, MLineBreaker::ECmLineBreakClass },  //COMBINING RIGHT ARROWHEAD ABOVE
662fa7de7023 201024_05
hgs
parents:
diff changeset
   250
    { 0x035c, 0x0360, MLineBreaker::EGlLineBreakClass },  //COMBINING DOUBLE BREVE BELOW
662fa7de7023 201024_05
hgs
parents:
diff changeset
   251
    { 0x0360, 0x0370, MLineBreaker::ECmLineBreakClass },  //combining double tilde
662fa7de7023 201024_05
hgs
parents:
diff changeset
   252
    { 0x0374, 0x0376, MLineBreaker::EAlLineBreakClass },  //greek numeral sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   253
    { 0x037a, 0x037b, MLineBreaker::EAlLineBreakClass },  //greek ypogegrammeni
662fa7de7023 201024_05
hgs
parents:
diff changeset
   254
    { 0x037b, 0x037e, MLineBreaker::EAlLineBreakClass },  //GREEK SMALL REVERSED LUNATE SIGMA SYMBOL
662fa7de7023 201024_05
hgs
parents:
diff changeset
   255
    { 0x037e, 0x037f, MLineBreaker::EAlLineBreakClass },  //greek question mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   256
    { 0x0384, 0x038b, MLineBreaker::EAlLineBreakClass },  //greek tonos
662fa7de7023 201024_05
hgs
parents:
diff changeset
   257
    { 0x038c, 0x038d, MLineBreaker::EAlLineBreakClass },  //greek capital letter omicron with tonos
662fa7de7023 201024_05
hgs
parents:
diff changeset
   258
    { 0x038e, 0x0391, MLineBreaker::EAlLineBreakClass },  //greek capital letter upsilon with tonos
662fa7de7023 201024_05
hgs
parents:
diff changeset
   259
    { 0x0391, 0x03a2, MLineBreaker::EAiLineBreakClass },  //greek capital letter alpha
662fa7de7023 201024_05
hgs
parents:
diff changeset
   260
    { 0x03a3, 0x03aa, MLineBreaker::EAiLineBreakClass },  //greek capital letter sigma
662fa7de7023 201024_05
hgs
parents:
diff changeset
   261
    { 0x03aa, 0x03b1, MLineBreaker::EAlLineBreakClass },  //greek capital letter iota with dialytika
662fa7de7023 201024_05
hgs
parents:
diff changeset
   262
    { 0x03b1, 0x03c2, MLineBreaker::EAiLineBreakClass },  //greek small letter alpha
662fa7de7023 201024_05
hgs
parents:
diff changeset
   263
    { 0x03c2, 0x03c3, MLineBreaker::EAlLineBreakClass },  //greek small letter final sigma
662fa7de7023 201024_05
hgs
parents:
diff changeset
   264
    { 0x03c3, 0x03ca, MLineBreaker::EAiLineBreakClass },  //greek small letter sigma
662fa7de7023 201024_05
hgs
parents:
diff changeset
   265
    { 0x03ca, 0x03cf, MLineBreaker::EAlLineBreakClass },  //greek small letter iota with dialytika
662fa7de7023 201024_05
hgs
parents:
diff changeset
   266
    { 0x03d0, 0x0400, MLineBreaker::EAlLineBreakClass },  //greek beta symbol
662fa7de7023 201024_05
hgs
parents:
diff changeset
   267
    { 0x0400, 0x0401, MLineBreaker::EAlLineBreakClass },  //cyrillic capital letter ie with grave
662fa7de7023 201024_05
hgs
parents:
diff changeset
   268
    { 0x0401, 0x0402, MLineBreaker::EAiLineBreakClass },  //cyrillic capital letter io
662fa7de7023 201024_05
hgs
parents:
diff changeset
   269
    { 0x0402, 0x0410, MLineBreaker::EAlLineBreakClass },  //cyrillic capital letter dje
662fa7de7023 201024_05
hgs
parents:
diff changeset
   270
    { 0x0410, 0x0450, MLineBreaker::EAiLineBreakClass },  //cyrillic capital letter a
662fa7de7023 201024_05
hgs
parents:
diff changeset
   271
    { 0x0450, 0x0451, MLineBreaker::EAlLineBreakClass },  //cyrillic small letter ie with grave
662fa7de7023 201024_05
hgs
parents:
diff changeset
   272
    { 0x0451, 0x0452, MLineBreaker::EAiLineBreakClass },  //cyrillic small letter io
662fa7de7023 201024_05
hgs
parents:
diff changeset
   273
    { 0x0452, 0x0483, MLineBreaker::EAlLineBreakClass },  //cyrillic small letter dje
662fa7de7023 201024_05
hgs
parents:
diff changeset
   274
    { 0x0483, 0x0487, MLineBreaker::ECmLineBreakClass },  //combining cyrillic titlo
662fa7de7023 201024_05
hgs
parents:
diff changeset
   275
    { 0x0488, 0x048a, MLineBreaker::ECmLineBreakClass },  //combining cyrillic hundred thousands sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   276
    { 0x048a, 0x0514, MLineBreaker::EAlLineBreakClass },  //CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
662fa7de7023 201024_05
hgs
parents:
diff changeset
   277
    { 0x0531, 0x0557, MLineBreaker::EAlLineBreakClass },  //armenian capital letter ayb
662fa7de7023 201024_05
hgs
parents:
diff changeset
   278
    { 0x0559, 0x0560, MLineBreaker::EAlLineBreakClass },  //armenian modifier letter left half ring
662fa7de7023 201024_05
hgs
parents:
diff changeset
   279
    { 0x0561, 0x0588, MLineBreaker::EAlLineBreakClass },  //armenian small letter ayb
662fa7de7023 201024_05
hgs
parents:
diff changeset
   280
    { 0x0589, 0x058a, MLineBreaker::EIsLineBreakClass },  //armenian full stop
662fa7de7023 201024_05
hgs
parents:
diff changeset
   281
    { 0x058a, 0x058b, MLineBreaker::EBaLineBreakClass },  //armenian hyphen
662fa7de7023 201024_05
hgs
parents:
diff changeset
   282
    { 0x0591, 0x05be, MLineBreaker::ECmLineBreakClass },  //hebrew accent etnahta
662fa7de7023 201024_05
hgs
parents:
diff changeset
   283
    { 0x05be, 0x05bf, MLineBreaker::EAlLineBreakClass },  //hebrew punctuation maqaf
662fa7de7023 201024_05
hgs
parents:
diff changeset
   284
    { 0x05bf, 0x05c0, MLineBreaker::ECmLineBreakClass },  //hebrew point rafe
662fa7de7023 201024_05
hgs
parents:
diff changeset
   285
    { 0x05c0, 0x05c1, MLineBreaker::EAlLineBreakClass },  //hebrew punctuation paseq
662fa7de7023 201024_05
hgs
parents:
diff changeset
   286
    { 0x05c1, 0x05c3, MLineBreaker::ECmLineBreakClass },  //hebrew point shin dot
662fa7de7023 201024_05
hgs
parents:
diff changeset
   287
    { 0x05c3, 0x05c4, MLineBreaker::EAlLineBreakClass },  //hebrew punctuation sof pasuq
662fa7de7023 201024_05
hgs
parents:
diff changeset
   288
    { 0x05c4, 0x05c5, MLineBreaker::ECmLineBreakClass },  //hebrew mark upper dot
662fa7de7023 201024_05
hgs
parents:
diff changeset
   289
    { 0x05c5, 0x05c6, MLineBreaker::ECmLineBreakClass },  //HEBREW MARK LOWER DOT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   290
    { 0x05c6, 0x05c7, MLineBreaker::EExLineBreakClass },  //HEBREW PUNCTUATION NUN HAFUKHA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   291
    { 0x05c7, 0x05c8, MLineBreaker::ECmLineBreakClass },  //HEBREW POINT QAMATS QATAN
662fa7de7023 201024_05
hgs
parents:
diff changeset
   292
    { 0x05d0, 0x05eb, MLineBreaker::EAlLineBreakClass },  //hebrew letter alef
662fa7de7023 201024_05
hgs
parents:
diff changeset
   293
    { 0x05f0, 0x05f5, MLineBreaker::EAlLineBreakClass },  //hebrew ligature yiddish double vav
662fa7de7023 201024_05
hgs
parents:
diff changeset
   294
    { 0x0600, 0x0604, MLineBreaker::EAlLineBreakClass },  //ARABIC NUMBER SIGN
662fa7de7023 201024_05
hgs
parents:
diff changeset
   295
    { 0x060b, 0x060c, MLineBreaker::EPoLineBreakClass },  //AFGHANI SIGN
662fa7de7023 201024_05
hgs
parents:
diff changeset
   296
    { 0x060c, 0x060d, MLineBreaker::EExLineBreakClass },  //arabic comma
662fa7de7023 201024_05
hgs
parents:
diff changeset
   297
    { 0x060d, 0x060e, MLineBreaker::EIsLineBreakClass },  //ARABIC DATE SEPARATOR
662fa7de7023 201024_05
hgs
parents:
diff changeset
   298
    { 0x060e, 0x0610, MLineBreaker::EAlLineBreakClass },  //ARABIC POETIC VERSE SIGN
662fa7de7023 201024_05
hgs
parents:
diff changeset
   299
    { 0x0610, 0x0616, MLineBreaker::ECmLineBreakClass },  //ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM
662fa7de7023 201024_05
hgs
parents:
diff changeset
   300
    { 0x061b, 0x061c, MLineBreaker::EExLineBreakClass },  //arabic semicolon
662fa7de7023 201024_05
hgs
parents:
diff changeset
   301
    { 0x061e, 0x061f, MLineBreaker::EExLineBreakClass },  //ARABIC TRIPLE DOT PUNCTUATION MARK
662fa7de7023 201024_05
hgs
parents:
diff changeset
   302
    { 0x061f, 0x0620, MLineBreaker::EExLineBreakClass },  //arabic question mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   303
    { 0x0621, 0x063b, MLineBreaker::EAlLineBreakClass },  //arabic letter hamza
662fa7de7023 201024_05
hgs
parents:
diff changeset
   304
    { 0x0640, 0x064b, MLineBreaker::EAlLineBreakClass },  //arabic tatweel
662fa7de7023 201024_05
hgs
parents:
diff changeset
   305
    { 0x064b, 0x065f, MLineBreaker::ECmLineBreakClass },  //arabic fathatan
662fa7de7023 201024_05
hgs
parents:
diff changeset
   306
    { 0x0660, 0x066a, MLineBreaker::ENuLineBreakClass },  //arabic-indic digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   307
    { 0x066a, 0x066b, MLineBreaker::EExLineBreakClass },  //arabic percent sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   308
    { 0x066b, 0x066d, MLineBreaker::ENuLineBreakClass },  //arabic decimal & thousands separator
662fa7de7023 201024_05
hgs
parents:
diff changeset
   309
    { 0x066d, 0x066e, MLineBreaker::EAlLineBreakClass },  //arabic five pointed star
662fa7de7023 201024_05
hgs
parents:
diff changeset
   310
    { 0x066e, 0x0670, MLineBreaker::EAlLineBreakClass },  //arabic five pointed star
662fa7de7023 201024_05
hgs
parents:
diff changeset
   311
    { 0x0670, 0x0671, MLineBreaker::ECmLineBreakClass },  //arabic letter superscript alef
662fa7de7023 201024_05
hgs
parents:
diff changeset
   312
    { 0x0671, 0x06d4, MLineBreaker::EAlLineBreakClass },  //arabic letter alef wasla
662fa7de7023 201024_05
hgs
parents:
diff changeset
   313
    { 0x06d4, 0x06d5, MLineBreaker::EExLineBreakClass },  //arabic full stop
662fa7de7023 201024_05
hgs
parents:
diff changeset
   314
    { 0x06d5, 0x06d6, MLineBreaker::EAlLineBreakClass },  //arabic letter ae
662fa7de7023 201024_05
hgs
parents:
diff changeset
   315
    { 0x06d6, 0x06e5, MLineBreaker::ECmLineBreakClass },  //arabic small high ligature sad with lam with alef maksura
662fa7de7023 201024_05
hgs
parents:
diff changeset
   316
    { 0x06e5, 0x06e7, MLineBreaker::EAlLineBreakClass },  //arabic small waw
662fa7de7023 201024_05
hgs
parents:
diff changeset
   317
    { 0x06e7, 0x06e9, MLineBreaker::ECmLineBreakClass },  //arabic small high yeh
662fa7de7023 201024_05
hgs
parents:
diff changeset
   318
    { 0x06e9, 0x06ea, MLineBreaker::EAlLineBreakClass },  //arabic place of sajdah
662fa7de7023 201024_05
hgs
parents:
diff changeset
   319
    { 0x06ea, 0x06ee, MLineBreaker::ECmLineBreakClass },  //arabic empty centre low stop
662fa7de7023 201024_05
hgs
parents:
diff changeset
   320
    { 0x06ee, 0x06f0, MLineBreaker::EAlLineBreakClass },  //ARABIC LETTER DAL WITH INVERTED V
662fa7de7023 201024_05
hgs
parents:
diff changeset
   321
    { 0x06f0, 0x06fa, MLineBreaker::ENuLineBreakClass },  //extended arabic-indic digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   322
    { 0x06fa, 0x070e, MLineBreaker::EAlLineBreakClass },  //arabic letter sheen with dot below
662fa7de7023 201024_05
hgs
parents:
diff changeset
   323
    { 0x070f, 0x0710, MLineBreaker::ECmLineBreakClass },  //syriac abbreviation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   324
    { 0x0710, 0x0711, MLineBreaker::EAlLineBreakClass },  //syriac letter alaph
662fa7de7023 201024_05
hgs
parents:
diff changeset
   325
    { 0x0711, 0x0712, MLineBreaker::ECmLineBreakClass },  //syriac letter superscript alaph
662fa7de7023 201024_05
hgs
parents:
diff changeset
   326
    { 0x0712, 0x0730, MLineBreaker::EAlLineBreakClass },  //syriac letter beth
662fa7de7023 201024_05
hgs
parents:
diff changeset
   327
    { 0x0730, 0x074b, MLineBreaker::ECmLineBreakClass },  //syriac pthaha above
662fa7de7023 201024_05
hgs
parents:
diff changeset
   328
    { 0x074d, 0x076e, MLineBreaker::EAlLineBreakClass },  //SYRIAC LETTER SOGDIAN ZHAIN
662fa7de7023 201024_05
hgs
parents:
diff changeset
   329
    { 0x0780, 0x07a6, MLineBreaker::EAlLineBreakClass },  //thaana letter haa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   330
    { 0x07a6, 0x07b1, MLineBreaker::ECmLineBreakClass },  //thaana abafili
662fa7de7023 201024_05
hgs
parents:
diff changeset
   331
    { 0x07b1, 0x07b2, MLineBreaker::EAlLineBreakClass },  //THAANA LETTER NAA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   332
    { 0x07c0, 0x07ca, MLineBreaker::ENuLineBreakClass },  //NKO DIGIT ZERO
662fa7de7023 201024_05
hgs
parents:
diff changeset
   333
    { 0x07ca, 0x07eb, MLineBreaker::EAlLineBreakClass },  //NKO LETTER A
662fa7de7023 201024_05
hgs
parents:
diff changeset
   334
    { 0x07eb, 0x07f4, MLineBreaker::ECmLineBreakClass },  //NKO COMBINING SHORT HIGH TONE
662fa7de7023 201024_05
hgs
parents:
diff changeset
   335
    { 0x07f4, 0x07f8, MLineBreaker::EAlLineBreakClass },  //NKO HIGH TONE APOSTROPHE
662fa7de7023 201024_05
hgs
parents:
diff changeset
   336
    { 0x07f8, 0x07f9, MLineBreaker::EIsLineBreakClass },  //NKO COMMA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   337
    { 0x07f9, 0x07fa, MLineBreaker::EExLineBreakClass },  //NKO EXCLAMATION MARK
662fa7de7023 201024_05
hgs
parents:
diff changeset
   338
    { 0x07fa, 0x07fb, MLineBreaker::EAlLineBreakClass },  //NKO LAJANYALAN
662fa7de7023 201024_05
hgs
parents:
diff changeset
   339
    { 0x0901, 0x0904, MLineBreaker::ECmLineBreakClass },  //devanagari sign candrabindu
662fa7de7023 201024_05
hgs
parents:
diff changeset
   340
    { 0x0904, 0x093a, MLineBreaker::EAlLineBreakClass },  //devanagari letter short a: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   341
    { 0x093c, 0x093d, MLineBreaker::ECmLineBreakClass },  //devanagari sign nukta
662fa7de7023 201024_05
hgs
parents:
diff changeset
   342
    { 0x093d, 0x093e, MLineBreaker::EAlLineBreakClass },  //devanagari sign avagraha
662fa7de7023 201024_05
hgs
parents:
diff changeset
   343
    { 0x093e, 0x094e, MLineBreaker::ECmLineBreakClass },  //devanagari vowel sign aa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   344
    { 0x0950, 0x0951, MLineBreaker::EAlLineBreakClass },  //devanagari om
662fa7de7023 201024_05
hgs
parents:
diff changeset
   345
    { 0x0951, 0x0955, MLineBreaker::ECmLineBreakClass },  //devanagari stress sign udatta
662fa7de7023 201024_05
hgs
parents:
diff changeset
   346
    { 0x0958, 0x0962, MLineBreaker::EAlLineBreakClass },  //devanagari letter qa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   347
    { 0x0962, 0x0964, MLineBreaker::ECmLineBreakClass },  //devanagari vowel sign vocalic l
662fa7de7023 201024_05
hgs
parents:
diff changeset
   348
    { 0x0964, 0x0966, MLineBreaker::EAlLineBreakClass },  //devanagari danda
662fa7de7023 201024_05
hgs
parents:
diff changeset
   349
    { 0x0966, 0x0970, MLineBreaker::ENuLineBreakClass },  //devanagari digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   350
    { 0x0970, 0x0971, MLineBreaker::EAlLineBreakClass },  //devanagari abbreviation sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   351
    { 0x097b, 0x0980, MLineBreaker::EAlLineBreakClass },  //devanagari letter gga: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   352
    { 0x0981, 0x0984, MLineBreaker::ECmLineBreakClass },  //bengali sign candrabindu
662fa7de7023 201024_05
hgs
parents:
diff changeset
   353
    { 0x0985, 0x098d, MLineBreaker::EAlLineBreakClass },  //bengali letter a
662fa7de7023 201024_05
hgs
parents:
diff changeset
   354
    { 0x098f, 0x0991, MLineBreaker::EAlLineBreakClass },  //bengali letter e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   355
    { 0x0993, 0x09a9, MLineBreaker::EAlLineBreakClass },  //bengali letter o
662fa7de7023 201024_05
hgs
parents:
diff changeset
   356
    { 0x09aa, 0x09b1, MLineBreaker::EAlLineBreakClass },  //bengali letter pa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   357
    { 0x09b2, 0x09b3, MLineBreaker::EAlLineBreakClass },  //bengali letter la
662fa7de7023 201024_05
hgs
parents:
diff changeset
   358
    { 0x09b6, 0x09ba, MLineBreaker::EAlLineBreakClass },  //bengali letter sha
662fa7de7023 201024_05
hgs
parents:
diff changeset
   359
    { 0x09bc, 0x09bd, MLineBreaker::ECmLineBreakClass },  //bengali sign nukta
662fa7de7023 201024_05
hgs
parents:
diff changeset
   360
    { 0x09bd, 0x09be, MLineBreaker::EAlLineBreakClass },  //bengali sign avagraha: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   361
    { 0x09be, 0x09c5, MLineBreaker::ECmLineBreakClass },  //bengali vowel sign aa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   362
    { 0x09c7, 0x09c9, MLineBreaker::ECmLineBreakClass },  //bengali vowel sign e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   363
    { 0x09cb, 0x09ce, MLineBreaker::ECmLineBreakClass },  //bengali vowel sign o
662fa7de7023 201024_05
hgs
parents:
diff changeset
   364
    { 0x09ce, 0x09cf, MLineBreaker::EAlLineBreakClass },  //bengali letter khanda ta: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   365
    { 0x09d7, 0x09d8, MLineBreaker::ECmLineBreakClass },  //bengali au length mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   366
    { 0x09dc, 0x09de, MLineBreaker::EAlLineBreakClass },  //bengali letter rra
662fa7de7023 201024_05
hgs
parents:
diff changeset
   367
    { 0x09df, 0x09e2, MLineBreaker::EAlLineBreakClass },  //bengali letter yya
662fa7de7023 201024_05
hgs
parents:
diff changeset
   368
    { 0x09e2, 0x09e4, MLineBreaker::ECmLineBreakClass },  //bengali vowel sign vocalic l
662fa7de7023 201024_05
hgs
parents:
diff changeset
   369
    { 0x09e6, 0x09f0, MLineBreaker::ENuLineBreakClass },  //bengali digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   370
    { 0x09f0, 0x09f2, MLineBreaker::EAlLineBreakClass },  //bengali letter ra with middle diagonal
662fa7de7023 201024_05
hgs
parents:
diff changeset
   371
    { 0x09f2, 0x09f4, MLineBreaker::EPrLineBreakClass },  //bengali rupee mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   372
    { 0x09f4, 0x09fb, MLineBreaker::EAlLineBreakClass },  //bengali currency numerator one
662fa7de7023 201024_05
hgs
parents:
diff changeset
   373
    { 0x0a01, 0x0a04, MLineBreaker::ECmLineBreakClass },  //gurmukhi sign adak bindi: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   374
    { 0x0a05, 0x0a0b, MLineBreaker::EAlLineBreakClass },  //gurmukhi letter a
662fa7de7023 201024_05
hgs
parents:
diff changeset
   375
    { 0x0a0f, 0x0a11, MLineBreaker::EAlLineBreakClass },  //gurmukhi letter ee
662fa7de7023 201024_05
hgs
parents:
diff changeset
   376
    { 0x0a13, 0x0a29, MLineBreaker::EAlLineBreakClass },  //gurmukhi letter oo
662fa7de7023 201024_05
hgs
parents:
diff changeset
   377
    { 0x0a2a, 0x0a31, MLineBreaker::EAlLineBreakClass },  //gurmukhi letter pa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   378
    { 0x0a32, 0x0a34, MLineBreaker::EAlLineBreakClass },  //gurmukhi letter la
662fa7de7023 201024_05
hgs
parents:
diff changeset
   379
    { 0x0a35, 0x0a37, MLineBreaker::EAlLineBreakClass },  //gurmukhi letter va
662fa7de7023 201024_05
hgs
parents:
diff changeset
   380
    { 0x0a38, 0x0a3a, MLineBreaker::EAlLineBreakClass },  //gurmukhi letter sa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   381
    { 0x0a3c, 0x0a3d, MLineBreaker::ECmLineBreakClass },  //gurmukhi sign nukta
662fa7de7023 201024_05
hgs
parents:
diff changeset
   382
    { 0x0a3e, 0x0a43, MLineBreaker::ECmLineBreakClass },  //gurmukhi vowel sign aa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   383
    { 0x0a47, 0x0a49, MLineBreaker::ECmLineBreakClass },  //gurmukhi vowel sign ee
662fa7de7023 201024_05
hgs
parents:
diff changeset
   384
    { 0x0a4b, 0x0a4e, MLineBreaker::ECmLineBreakClass },  //gurmukhi vowel sign oo
662fa7de7023 201024_05
hgs
parents:
diff changeset
   385
    { 0x0a59, 0x0a5d, MLineBreaker::EAlLineBreakClass },  //gurmukhi letter khha
662fa7de7023 201024_05
hgs
parents:
diff changeset
   386
    { 0x0a5e, 0x0a5f, MLineBreaker::EAlLineBreakClass },  //gurmukhi letter fa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   387
    { 0x0a66, 0x0a70, MLineBreaker::ENuLineBreakClass },  //gurmukhi digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   388
    { 0x0a70, 0x0a72, MLineBreaker::ECmLineBreakClass },  //gurmukhi tippi
662fa7de7023 201024_05
hgs
parents:
diff changeset
   389
    { 0x0a72, 0x0a75, MLineBreaker::EAlLineBreakClass },  //gurmukhi iri
662fa7de7023 201024_05
hgs
parents:
diff changeset
   390
    { 0x0a81, 0x0a84, MLineBreaker::ECmLineBreakClass },  //gujarati sign candrabindu
662fa7de7023 201024_05
hgs
parents:
diff changeset
   391
    { 0x0a85, 0x0a8d, MLineBreaker::EAlLineBreakClass },  //gujarati letter a: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   392
    { 0x0a8d, 0x0a8e, MLineBreaker::EAlLineBreakClass },  //gujarati vowel candra e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   393
    { 0x0a8f, 0x0a92, MLineBreaker::EAlLineBreakClass },  //gujarati letter e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   394
    { 0x0a93, 0x0aa9, MLineBreaker::EAlLineBreakClass },  //gujarati letter o
662fa7de7023 201024_05
hgs
parents:
diff changeset
   395
    { 0x0aaa, 0x0ab1, MLineBreaker::EAlLineBreakClass },  //gujarati letter pa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   396
    { 0x0ab2, 0x0ab4, MLineBreaker::EAlLineBreakClass },  //gujarati letter la
662fa7de7023 201024_05
hgs
parents:
diff changeset
   397
    { 0x0ab5, 0x0aba, MLineBreaker::EAlLineBreakClass },  //gujarati letter va
662fa7de7023 201024_05
hgs
parents:
diff changeset
   398
    { 0x0abc, 0x0abd, MLineBreaker::ECmLineBreakClass },  //gujarati sign nukta
662fa7de7023 201024_05
hgs
parents:
diff changeset
   399
    { 0x0abd, 0x0abe, MLineBreaker::EAlLineBreakClass },  //gujarati sign avagraha
662fa7de7023 201024_05
hgs
parents:
diff changeset
   400
    { 0x0abe, 0x0ac6, MLineBreaker::ECmLineBreakClass },  //gujarati vowel sign aa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   401
    { 0x0ac7, 0x0aca, MLineBreaker::ECmLineBreakClass },  //gujarati vowel sign e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   402
    { 0x0acb, 0x0ace, MLineBreaker::ECmLineBreakClass },  //gujarati vowel sign o
662fa7de7023 201024_05
hgs
parents:
diff changeset
   403
    { 0x0ad0, 0x0ad1, MLineBreaker::EAlLineBreakClass },  //gujarati om
662fa7de7023 201024_05
hgs
parents:
diff changeset
   404
    { 0x0ae0, 0x0ae2, MLineBreaker::EAlLineBreakClass },  //gujarati letter vocalic rr: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   405
    { 0x0ae2, 0x0ae4, MLineBreaker::ECmLineBreakClass },  //gujarati vowel sign vocalic l: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   406
    { 0x0ae6, 0x0af0, MLineBreaker::ENuLineBreakClass },  //gujarati digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   407
    { 0x0af1, 0x0af2, MLineBreaker::EPrLineBreakClass },  //gujarati rupee sign: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   408
    { 0x0b01, 0x0b04, MLineBreaker::ECmLineBreakClass },  //oriya sign candrabindu
662fa7de7023 201024_05
hgs
parents:
diff changeset
   409
    { 0x0b05, 0x0b0d, MLineBreaker::EAlLineBreakClass },  //oriya letter a
662fa7de7023 201024_05
hgs
parents:
diff changeset
   410
    { 0x0b0f, 0x0b11, MLineBreaker::EAlLineBreakClass },  //oriya letter e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   411
    { 0x0b13, 0x0b29, MLineBreaker::EAlLineBreakClass },  //oriya letter o
662fa7de7023 201024_05
hgs
parents:
diff changeset
   412
    { 0x0b2a, 0x0b31, MLineBreaker::EAlLineBreakClass },  //oriya letter pa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   413
    { 0x0b32, 0x0b34, MLineBreaker::EAlLineBreakClass },  //oriya letter la
662fa7de7023 201024_05
hgs
parents:
diff changeset
   414
    { 0x0b35, 0x0b36, MLineBreaker::EAlLineBreakClass },  //oriya letter va: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   415
    { 0x0b36, 0x0b3a, MLineBreaker::EAlLineBreakClass },  //oriya letter sha
662fa7de7023 201024_05
hgs
parents:
diff changeset
   416
    { 0x0b3c, 0x0b3d, MLineBreaker::ECmLineBreakClass },  //oriya sign nukta
662fa7de7023 201024_05
hgs
parents:
diff changeset
   417
    { 0x0b3d, 0x0b3e, MLineBreaker::EAlLineBreakClass },  //oriya sign avagraha
662fa7de7023 201024_05
hgs
parents:
diff changeset
   418
    { 0x0b3e, 0x0b44, MLineBreaker::ECmLineBreakClass },  //oriya vowel sign aa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   419
    { 0x0b47, 0x0b49, MLineBreaker::ECmLineBreakClass },  //oriya vowel sign e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   420
    { 0x0b4b, 0x0b4e, MLineBreaker::ECmLineBreakClass },  //oriya vowel sign o
662fa7de7023 201024_05
hgs
parents:
diff changeset
   421
    { 0x0b56, 0x0b58, MLineBreaker::ECmLineBreakClass },  //oriya ai length mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   422
    { 0x0b5c, 0x0b5e, MLineBreaker::EAlLineBreakClass },  //oriya letter rra
662fa7de7023 201024_05
hgs
parents:
diff changeset
   423
    { 0x0b5f, 0x0b62, MLineBreaker::EAlLineBreakClass },  //oriya letter yya
662fa7de7023 201024_05
hgs
parents:
diff changeset
   424
    { 0x0b66, 0x0b70, MLineBreaker::ENuLineBreakClass },  //oriya digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   425
    { 0x0b70, 0x0b71, MLineBreaker::EAlLineBreakClass },  //oriya isshar
662fa7de7023 201024_05
hgs
parents:
diff changeset
   426
    { 0x0b71, 0x0b72, MLineBreaker::EAlLineBreakClass },  //oriya letter wa: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   427
    { 0x0b82, 0x0b84, MLineBreaker::ECmLineBreakClass },  //tamil sign anusvara
662fa7de7023 201024_05
hgs
parents:
diff changeset
   428
    { 0x0b85, 0x0b8b, MLineBreaker::EAlLineBreakClass },  //tamil letter a
662fa7de7023 201024_05
hgs
parents:
diff changeset
   429
    { 0x0b8e, 0x0b91, MLineBreaker::EAlLineBreakClass },  //tamil letter e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   430
    { 0x0b92, 0x0b96, MLineBreaker::EAlLineBreakClass },  //tamil letter o
662fa7de7023 201024_05
hgs
parents:
diff changeset
   431
    { 0x0b99, 0x0b9b, MLineBreaker::EAlLineBreakClass },  //tamil letter nga
662fa7de7023 201024_05
hgs
parents:
diff changeset
   432
    { 0x0b9c, 0x0b9d, MLineBreaker::EAlLineBreakClass },  //tamil letter ja
662fa7de7023 201024_05
hgs
parents:
diff changeset
   433
    { 0x0b9e, 0x0ba0, MLineBreaker::EAlLineBreakClass },  //tamil letter nya
662fa7de7023 201024_05
hgs
parents:
diff changeset
   434
    { 0x0ba3, 0x0ba5, MLineBreaker::EAlLineBreakClass },  //tamil letter nna
662fa7de7023 201024_05
hgs
parents:
diff changeset
   435
    { 0x0ba8, 0x0bab, MLineBreaker::EAlLineBreakClass },  //tamil letter na
662fa7de7023 201024_05
hgs
parents:
diff changeset
   436
    { 0x0bae, 0x0bba, MLineBreaker::EAlLineBreakClass },  //tamil letter ma: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   437
    { 0x0bbe, 0x0bc3, MLineBreaker::ECmLineBreakClass },  //tamil vowel sign aa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   438
    { 0x0bc6, 0x0bc9, MLineBreaker::ECmLineBreakClass },  //tamil vowel sign e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   439
    { 0x0bca, 0x0bce, MLineBreaker::ECmLineBreakClass },  //tamil vowel sign o
662fa7de7023 201024_05
hgs
parents:
diff changeset
   440
    { 0x0bd7, 0x0bd8, MLineBreaker::ECmLineBreakClass },  //tamil au length mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   441
    { 0x0be6, 0x0bf0, MLineBreaker::ENuLineBreakClass },  //tamil digit one: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   442
    { 0x0bf0, 0x0bf9, MLineBreaker::EAlLineBreakClass },  //tamil number ten: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   443
    { 0x0bf9, 0x0bfa, MLineBreaker::EPrLineBreakClass },  //tamil rupee sign: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   444
    { 0x0bfa, 0x0bfb, MLineBreaker::EAlLineBreakClass },  //tamil number sign: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   445
    { 0x0c01, 0x0c04, MLineBreaker::ECmLineBreakClass },  //telugu sign candrabindu
662fa7de7023 201024_05
hgs
parents:
diff changeset
   446
    { 0x0c05, 0x0c0d, MLineBreaker::EAlLineBreakClass },  //telugu letter a
662fa7de7023 201024_05
hgs
parents:
diff changeset
   447
    { 0x0c0e, 0x0c11, MLineBreaker::EAlLineBreakClass },  //telugu letter e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   448
    { 0x0c12, 0x0c29, MLineBreaker::EAlLineBreakClass },  //telugu letter o
662fa7de7023 201024_05
hgs
parents:
diff changeset
   449
    { 0x0c2a, 0x0c34, MLineBreaker::EAlLineBreakClass },  //telugu letter pa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   450
    { 0x0c35, 0x0c3a, MLineBreaker::EAlLineBreakClass },  //telugu letter va
662fa7de7023 201024_05
hgs
parents:
diff changeset
   451
    { 0x0c3e, 0x0c45, MLineBreaker::ECmLineBreakClass },  //telugu vowel sign aa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   452
    { 0x0c46, 0x0c49, MLineBreaker::ECmLineBreakClass },  //telugu vowel sign e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   453
    { 0x0c4a, 0x0c4e, MLineBreaker::ECmLineBreakClass },  //telugu vowel sign o
662fa7de7023 201024_05
hgs
parents:
diff changeset
   454
    { 0x0c55, 0x0c57, MLineBreaker::ECmLineBreakClass },  //telugu length mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   455
    { 0x0c60, 0x0c62, MLineBreaker::EAlLineBreakClass },  //telugu letter vocalic rr
662fa7de7023 201024_05
hgs
parents:
diff changeset
   456
    { 0x0c66, 0x0c70, MLineBreaker::ENuLineBreakClass },  //telugu digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   457
    { 0x0c82, 0x0c84, MLineBreaker::ECmLineBreakClass },  //kannada sign anusvara
662fa7de7023 201024_05
hgs
parents:
diff changeset
   458
    { 0x0c85, 0x0c8d, MLineBreaker::EAlLineBreakClass },  //kannada letter a
662fa7de7023 201024_05
hgs
parents:
diff changeset
   459
    { 0x0c8e, 0x0c91, MLineBreaker::EAlLineBreakClass },  //kannada letter e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   460
    { 0x0c92, 0x0ca9, MLineBreaker::EAlLineBreakClass },  //kannada letter o
662fa7de7023 201024_05
hgs
parents:
diff changeset
   461
    { 0x0caa, 0x0cb4, MLineBreaker::EAlLineBreakClass },  //kannada letter pa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   462
    { 0x0cb5, 0x0cba, MLineBreaker::EAlLineBreakClass },  //kannada letter va
662fa7de7023 201024_05
hgs
parents:
diff changeset
   463
    { 0x0cbc, 0x0cbd, MLineBreaker::ECmLineBreakClass },  //kannada sign nukta: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   464
    { 0x0cbd, 0x0cbe, MLineBreaker::EAlLineBreakClass },  //kannada sign avagraha: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   465
    { 0x0cbe, 0x0cc5, MLineBreaker::ECmLineBreakClass },  //kannada vowel sign aa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   466
    { 0x0cc6, 0x0cc9, MLineBreaker::ECmLineBreakClass },  //kannada vowel sign e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   467
    { 0x0cca, 0x0cce, MLineBreaker::ECmLineBreakClass },  //kannada vowel sign o
662fa7de7023 201024_05
hgs
parents:
diff changeset
   468
    { 0x0cd5, 0x0cd7, MLineBreaker::ECmLineBreakClass },  //kannada length mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   469
    { 0x0cde, 0x0cdf, MLineBreaker::EAlLineBreakClass },  //kannada letter fa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   470
    { 0x0ce0, 0x0ce2, MLineBreaker::EAlLineBreakClass },  //kannada letter vocalic rr
662fa7de7023 201024_05
hgs
parents:
diff changeset
   471
    { 0x0ce2, 0x0ce4, MLineBreaker::ECmLineBreakClass },  //kannada vowel sign vocalic l: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   472
    { 0x0ce6, 0x0cf0, MLineBreaker::ENuLineBreakClass },  //kannada digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   473
    { 0x0cf1, 0x0cf3, MLineBreaker::EAlLineBreakClass },  //kannada sign jihvamuliya: CR1080
662fa7de7023 201024_05
hgs
parents:
diff changeset
   474
    { 0x0d02, 0x0d04, MLineBreaker::ECmLineBreakClass },  //malayalam sign anusvara
662fa7de7023 201024_05
hgs
parents:
diff changeset
   475
    { 0x0d05, 0x0d0d, MLineBreaker::EAlLineBreakClass },  //malayalam letter a
662fa7de7023 201024_05
hgs
parents:
diff changeset
   476
    { 0x0d0e, 0x0d11, MLineBreaker::EAlLineBreakClass },  //malayalam letter e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   477
    { 0x0d12, 0x0d29, MLineBreaker::EAlLineBreakClass },  //malayalam letter o
662fa7de7023 201024_05
hgs
parents:
diff changeset
   478
    { 0x0d2a, 0x0d3a, MLineBreaker::EAlLineBreakClass },  //malayalam letter pa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   479
    { 0x0d3e, 0x0d44, MLineBreaker::ECmLineBreakClass },  //malayalam vowel sign aa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   480
    { 0x0d46, 0x0d49, MLineBreaker::ECmLineBreakClass },  //malayalam vowel sign e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   481
    { 0x0d4a, 0x0d4e, MLineBreaker::ECmLineBreakClass },  //malayalam vowel sign o
662fa7de7023 201024_05
hgs
parents:
diff changeset
   482
    { 0x0d57, 0x0d58, MLineBreaker::ECmLineBreakClass },  //malayalam au length mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   483
    { 0x0d60, 0x0d62, MLineBreaker::EAlLineBreakClass },  //malayalam letter vocalic rr
662fa7de7023 201024_05
hgs
parents:
diff changeset
   484
    { 0x0d66, 0x0d70, MLineBreaker::ENuLineBreakClass },  //malayalam digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   485
    { 0x0d82, 0x0d84, MLineBreaker::ECmLineBreakClass },  //sinhala sign anusvaraya
662fa7de7023 201024_05
hgs
parents:
diff changeset
   486
    { 0x0d85, 0x0d97, MLineBreaker::EAlLineBreakClass },  //sinhala letter ayanna
662fa7de7023 201024_05
hgs
parents:
diff changeset
   487
    { 0x0d9a, 0x0db2, MLineBreaker::EAlLineBreakClass },  //sinhala letter alpapraana kayanna
662fa7de7023 201024_05
hgs
parents:
diff changeset
   488
    { 0x0db3, 0x0dbc, MLineBreaker::EAlLineBreakClass },  //sinhala letter sanyaka dayanna
662fa7de7023 201024_05
hgs
parents:
diff changeset
   489
    { 0x0dbd, 0x0dbe, MLineBreaker::EAlLineBreakClass },  //sinhala letter dantaja layanna
662fa7de7023 201024_05
hgs
parents:
diff changeset
   490
    { 0x0dc0, 0x0dc7, MLineBreaker::EAlLineBreakClass },  //sinhala letter vayanna
662fa7de7023 201024_05
hgs
parents:
diff changeset
   491
    { 0x0dca, 0x0dcb, MLineBreaker::ECmLineBreakClass },  //sinhala sign al-lakuna
662fa7de7023 201024_05
hgs
parents:
diff changeset
   492
    { 0x0dcf, 0x0dd5, MLineBreaker::ECmLineBreakClass },  //sinhala vowel sign aela-pilla
662fa7de7023 201024_05
hgs
parents:
diff changeset
   493
    { 0x0dd6, 0x0dd7, MLineBreaker::ECmLineBreakClass },  //sinhala vowel sign diga paa-pilla
662fa7de7023 201024_05
hgs
parents:
diff changeset
   494
    { 0x0dd8, 0x0de0, MLineBreaker::ECmLineBreakClass },  //sinhala vowel sign gaetta-pilla
662fa7de7023 201024_05
hgs
parents:
diff changeset
   495
    { 0x0df2, 0x0df4, MLineBreaker::ECmLineBreakClass },  //sinhala vowel sign diga gaetta-pilla
662fa7de7023 201024_05
hgs
parents:
diff changeset
   496
    { 0x0df4, 0x0df5, MLineBreaker::EAlLineBreakClass },  //sinhala punctuation kunddaliya
662fa7de7023 201024_05
hgs
parents:
diff changeset
   497
    { 0x0e01, 0x0e31, MLineBreaker::ESaLineBreakClass },  //thai character ko kai
662fa7de7023 201024_05
hgs
parents:
diff changeset
   498
    { 0x0e31, 0x0e32, MLineBreaker::ECmLineBreakClass },  //thai character mai han-akat
662fa7de7023 201024_05
hgs
parents:
diff changeset
   499
    { 0x0e32, 0x0e34, MLineBreaker::ESaLineBreakClass },  //thai character sara aa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   500
    { 0x0e34, 0x0e3b, MLineBreaker::ECmLineBreakClass },  //thai character sara i
662fa7de7023 201024_05
hgs
parents:
diff changeset
   501
    { 0x0e3f, 0x0e40, MLineBreaker::EPrLineBreakClass },  //thai currency symbol baht
662fa7de7023 201024_05
hgs
parents:
diff changeset
   502
    { 0x0e40, 0x0e47, MLineBreaker::ESaLineBreakClass },  //thai character sara e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   503
    { 0x0e47, 0x0e4f, MLineBreaker::ECmLineBreakClass },  //thai character maitaikhu
662fa7de7023 201024_05
hgs
parents:
diff changeset
   504
    { 0x0e4f, 0x0e50, MLineBreaker::EAlLineBreakClass },  //thai character fongman
662fa7de7023 201024_05
hgs
parents:
diff changeset
   505
    { 0x0e50, 0x0e5a, MLineBreaker::ENuLineBreakClass },  //thai digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   506
    { 0x0e5a, 0x0e5c, MLineBreaker::ENsLineBreakClass },  //thai character angkhankhu
662fa7de7023 201024_05
hgs
parents:
diff changeset
   507
    { 0x0e81, 0x0e83, MLineBreaker::ESaLineBreakClass },  //lao letter ko
662fa7de7023 201024_05
hgs
parents:
diff changeset
   508
    { 0x0e84, 0x0e85, MLineBreaker::ESaLineBreakClass },  //lao letter kho tam
662fa7de7023 201024_05
hgs
parents:
diff changeset
   509
    { 0x0e87, 0x0e89, MLineBreaker::ESaLineBreakClass },  //lao letter ngo
662fa7de7023 201024_05
hgs
parents:
diff changeset
   510
    { 0x0e8a, 0x0e8b, MLineBreaker::ESaLineBreakClass },  //lao letter so tam
662fa7de7023 201024_05
hgs
parents:
diff changeset
   511
    { 0x0e8d, 0x0e8e, MLineBreaker::ESaLineBreakClass },  //lao letter nyo
662fa7de7023 201024_05
hgs
parents:
diff changeset
   512
    { 0x0e94, 0x0e98, MLineBreaker::ESaLineBreakClass },  //lao letter do
662fa7de7023 201024_05
hgs
parents:
diff changeset
   513
    { 0x0e99, 0x0ea0, MLineBreaker::ESaLineBreakClass },  //lao letter no
662fa7de7023 201024_05
hgs
parents:
diff changeset
   514
    { 0x0ea1, 0x0ea4, MLineBreaker::ESaLineBreakClass },  //lao letter mo
662fa7de7023 201024_05
hgs
parents:
diff changeset
   515
    { 0x0ea5, 0x0ea6, MLineBreaker::ESaLineBreakClass },  //lao letter lo loot
662fa7de7023 201024_05
hgs
parents:
diff changeset
   516
    { 0x0ea7, 0x0ea8, MLineBreaker::ESaLineBreakClass },  //lao letter wo
662fa7de7023 201024_05
hgs
parents:
diff changeset
   517
    { 0x0eaa, 0x0eac, MLineBreaker::ESaLineBreakClass },  //lao letter so sung
662fa7de7023 201024_05
hgs
parents:
diff changeset
   518
    { 0x0ead, 0x0eb1, MLineBreaker::ESaLineBreakClass },  //lao letter o
662fa7de7023 201024_05
hgs
parents:
diff changeset
   519
    { 0x0eb1, 0x0eb2, MLineBreaker::ECmLineBreakClass },  //lao vowel sign mai kan
662fa7de7023 201024_05
hgs
parents:
diff changeset
   520
    { 0x0eb2, 0x0eb4, MLineBreaker::ESaLineBreakClass },  //lao vowel sign aa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   521
    { 0x0eb4, 0x0eba, MLineBreaker::ECmLineBreakClass },  //lao vowel sign i
662fa7de7023 201024_05
hgs
parents:
diff changeset
   522
    { 0x0ebb, 0x0ebd, MLineBreaker::ECmLineBreakClass },  //lao vowel sign mai kon
662fa7de7023 201024_05
hgs
parents:
diff changeset
   523
    { 0x0ebd, 0x0ebe, MLineBreaker::ESaLineBreakClass },  //lao semivowel sign nyo
662fa7de7023 201024_05
hgs
parents:
diff changeset
   524
    { 0x0ec0, 0x0ec5, MLineBreaker::ESaLineBreakClass },  //lao vowel sign e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   525
    { 0x0ec6, 0x0ec7, MLineBreaker::ESaLineBreakClass },  //lao ko la
662fa7de7023 201024_05
hgs
parents:
diff changeset
   526
    { 0x0ec8, 0x0ece, MLineBreaker::ECmLineBreakClass },  //lao tone mai ek
662fa7de7023 201024_05
hgs
parents:
diff changeset
   527
    { 0x0ed0, 0x0eda, MLineBreaker::ENuLineBreakClass },  //lao digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   528
    { 0x0edc, 0x0ede, MLineBreaker::ESaLineBreakClass },  //lao ho no
662fa7de7023 201024_05
hgs
parents:
diff changeset
   529
    { 0x0f00, 0x0f0b, MLineBreaker::EAlLineBreakClass },  //tibetan syllable om
662fa7de7023 201024_05
hgs
parents:
diff changeset
   530
    { 0x0f0b, 0x0f0c, MLineBreaker::EBaLineBreakClass },  //tibetan mark intersyllabic tsheg
662fa7de7023 201024_05
hgs
parents:
diff changeset
   531
    { 0x0f0c, 0x0f0d, MLineBreaker::EGlLineBreakClass },  //tibetan mark delimiter tsheg bstar
662fa7de7023 201024_05
hgs
parents:
diff changeset
   532
    { 0x0f0d, 0x0f18, MLineBreaker::EAlLineBreakClass },  //tibetan mark shad
662fa7de7023 201024_05
hgs
parents:
diff changeset
   533
    { 0x0f18, 0x0f1a, MLineBreaker::ECmLineBreakClass },  //tibetan astrological sign -khyud pa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   534
    { 0x0f1a, 0x0f20, MLineBreaker::EAlLineBreakClass },  //tibetan sign rdel dkar gcig
662fa7de7023 201024_05
hgs
parents:
diff changeset
   535
    { 0x0f20, 0x0f2a, MLineBreaker::ENuLineBreakClass },  //tibetan digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   536
    { 0x0f2a, 0x0f35, MLineBreaker::EAlLineBreakClass },  //tibetan digit half one
662fa7de7023 201024_05
hgs
parents:
diff changeset
   537
    { 0x0f35, 0x0f36, MLineBreaker::ECmLineBreakClass },  //tibetan mark ngas bzung nyi zla
662fa7de7023 201024_05
hgs
parents:
diff changeset
   538
    { 0x0f36, 0x0f37, MLineBreaker::EAlLineBreakClass },  //tibetan mark caret -dzud rtags bzhi mig can
662fa7de7023 201024_05
hgs
parents:
diff changeset
   539
    { 0x0f37, 0x0f38, MLineBreaker::ECmLineBreakClass },  //tibetan mark ngas bzung sgor rtags
662fa7de7023 201024_05
hgs
parents:
diff changeset
   540
    { 0x0f38, 0x0f39, MLineBreaker::EAlLineBreakClass },  //tibetan mark che mgo
662fa7de7023 201024_05
hgs
parents:
diff changeset
   541
    { 0x0f39, 0x0f3a, MLineBreaker::ECmLineBreakClass },  //tibetan mark tsa -phru
662fa7de7023 201024_05
hgs
parents:
diff changeset
   542
    { 0x0f3a, 0x0f3b, MLineBreaker::EOpLineBreakClass },  //tibetan mark gug rtags gyon
662fa7de7023 201024_05
hgs
parents:
diff changeset
   543
    { 0x0f3b, 0x0f3c, MLineBreaker::EClLineBreakClass },  //tibetan mark gug rtags gyas
662fa7de7023 201024_05
hgs
parents:
diff changeset
   544
    { 0x0f3c, 0x0f3d, MLineBreaker::EOpLineBreakClass },  //tibetan mark ang khang gyon
662fa7de7023 201024_05
hgs
parents:
diff changeset
   545
    { 0x0f3d, 0x0f3e, MLineBreaker::EClLineBreakClass },  //tibetan mark ang khang gyas
662fa7de7023 201024_05
hgs
parents:
diff changeset
   546
    { 0x0f3e, 0x0f40, MLineBreaker::ECmLineBreakClass },  //tibetan sign yar tshes
662fa7de7023 201024_05
hgs
parents:
diff changeset
   547
    { 0x0f40, 0x0f48, MLineBreaker::EAlLineBreakClass },  //tibetan letter ka
662fa7de7023 201024_05
hgs
parents:
diff changeset
   548
    { 0x0f49, 0x0f6b, MLineBreaker::EAlLineBreakClass },  //tibetan letter nya
662fa7de7023 201024_05
hgs
parents:
diff changeset
   549
    { 0x0f71, 0x0f85, MLineBreaker::ECmLineBreakClass },  //tibetan vowel sign aa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   550
    { 0x0f85, 0x0f86, MLineBreaker::EAlLineBreakClass },  //tibetan mark paluta
662fa7de7023 201024_05
hgs
parents:
diff changeset
   551
    { 0x0f86, 0x0f88, MLineBreaker::ECmLineBreakClass },  //tibetan sign lci rtags
662fa7de7023 201024_05
hgs
parents:
diff changeset
   552
    { 0x0f88, 0x0f8c, MLineBreaker::EAlLineBreakClass },  //tibetan sign lce tsa can
662fa7de7023 201024_05
hgs
parents:
diff changeset
   553
    { 0x0f90, 0x0f98, MLineBreaker::ECmLineBreakClass },  //tibetan subjoined letter ka
662fa7de7023 201024_05
hgs
parents:
diff changeset
   554
    { 0x0f99, 0x0fbd, MLineBreaker::ECmLineBreakClass },  //tibetan subjoined letter nya
662fa7de7023 201024_05
hgs
parents:
diff changeset
   555
    { 0x0fbe, 0x0fc6, MLineBreaker::EAlLineBreakClass },  //tibetan ku ru kha
662fa7de7023 201024_05
hgs
parents:
diff changeset
   556
    { 0x0fc6, 0x0fc7, MLineBreaker::ECmLineBreakClass },  //tibetan symbol padma gdan
662fa7de7023 201024_05
hgs
parents:
diff changeset
   557
    { 0x0fc7, 0x0fcd, MLineBreaker::EAlLineBreakClass },  //tibetan symbol rdo rje rgya gram
662fa7de7023 201024_05
hgs
parents:
diff changeset
   558
    { 0x0fcf, 0x0fd0, MLineBreaker::EAlLineBreakClass },  //tibetan sign rdel nag gsum
662fa7de7023 201024_05
hgs
parents:
diff changeset
   559
    { 0x0fd0, 0x0fd2, MLineBreaker::EBbLineBreakClass },  //TIBETAN MARK BSKA- SHOG GI MGO RGYAN
662fa7de7023 201024_05
hgs
parents:
diff changeset
   560
    { 0x1000, 0x1022, MLineBreaker::ESaLineBreakClass },  //myanmar letter ka
662fa7de7023 201024_05
hgs
parents:
diff changeset
   561
    { 0x1023, 0x1028, MLineBreaker::ESaLineBreakClass },  //myanmar letter i
662fa7de7023 201024_05
hgs
parents:
diff changeset
   562
    { 0x1029, 0x102b, MLineBreaker::ESaLineBreakClass },  //myanmar letter o
662fa7de7023 201024_05
hgs
parents:
diff changeset
   563
    { 0x102c, 0x1033, MLineBreaker::ECmLineBreakClass },  //myanmar vowel sign aa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   564
    { 0x1036, 0x103a, MLineBreaker::ECmLineBreakClass },  //myanmar sign anusvara
662fa7de7023 201024_05
hgs
parents:
diff changeset
   565
    { 0x1040, 0x104a, MLineBreaker::ENuLineBreakClass },  //myanmar digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   566
    { 0x104a, 0x1050, MLineBreaker::EAlLineBreakClass },  //myanmar sign little section
662fa7de7023 201024_05
hgs
parents:
diff changeset
   567
    { 0x1050, 0x1056, MLineBreaker::ESaLineBreakClass },  //myanmar letter sha
662fa7de7023 201024_05
hgs
parents:
diff changeset
   568
    { 0x1056, 0x105a, MLineBreaker::ECmLineBreakClass },  //myanmar vowel sign vocalic r
662fa7de7023 201024_05
hgs
parents:
diff changeset
   569
    { 0x10a0, 0x10c6, MLineBreaker::EAlLineBreakClass },  //georgian capital letter an
662fa7de7023 201024_05
hgs
parents:
diff changeset
   570
    { 0x10d0, 0x10fb, MLineBreaker::EAlLineBreakClass },  //georgian letter an
662fa7de7023 201024_05
hgs
parents:
diff changeset
   571
    { 0x10fb, 0x10fc, MLineBreaker::EAlLineBreakClass },  //georgian paragraph separator
662fa7de7023 201024_05
hgs
parents:
diff changeset
   572
    { 0x10fc, 0x10fd, MLineBreaker::EAlLineBreakClass },  //MODIFIER LETTER GEORGIAN NAR
662fa7de7023 201024_05
hgs
parents:
diff changeset
   573
    { 0x1100, 0x115a, MLineBreaker::EIdLineBreakClass },  //hangul choseong kiyeok
662fa7de7023 201024_05
hgs
parents:
diff changeset
   574
    { 0x115f, 0x1160, MLineBreaker::EIdLineBreakClass },  //hangul choseong filler
662fa7de7023 201024_05
hgs
parents:
diff changeset
   575
    { 0x1160, 0x11a3, MLineBreaker::ECmLineBreakClass },  //hangul jungseong filler
662fa7de7023 201024_05
hgs
parents:
diff changeset
   576
    { 0x11a8, 0x11fa, MLineBreaker::ECmLineBreakClass },  //hangul jongseong kiyeok
662fa7de7023 201024_05
hgs
parents:
diff changeset
   577
    { 0x1200, 0x1248, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable ha
662fa7de7023 201024_05
hgs
parents:
diff changeset
   578
    { 0x1248, 0x1249, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable qwa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   579
    { 0x124a, 0x124e, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable qwi
662fa7de7023 201024_05
hgs
parents:
diff changeset
   580
    { 0x1250, 0x1257, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable qha
662fa7de7023 201024_05
hgs
parents:
diff changeset
   581
    { 0x1258, 0x1259, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable qhwa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   582
    { 0x125a, 0x125e, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable qhwi
662fa7de7023 201024_05
hgs
parents:
diff changeset
   583
    { 0x1260, 0x1288, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable ba
662fa7de7023 201024_05
hgs
parents:
diff changeset
   584
    { 0x1288, 0x1289, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable xwa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   585
    { 0x128a, 0x128e, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable xwi
662fa7de7023 201024_05
hgs
parents:
diff changeset
   586
    { 0x1290, 0x12b0, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable na
662fa7de7023 201024_05
hgs
parents:
diff changeset
   587
    { 0x12b0, 0x12b1, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable kwa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   588
    { 0x12b2, 0x12b6, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable kwi
662fa7de7023 201024_05
hgs
parents:
diff changeset
   589
    { 0x12b8, 0x12bf, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable kxa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   590
    { 0x12c0, 0x12c1, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable kxwa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   591
    { 0x12c2, 0x12c6, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable kxwi
662fa7de7023 201024_05
hgs
parents:
diff changeset
   592
    { 0x12c8, 0x12d7, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable wa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   593
    { 0x12d8, 0x1310, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable za
662fa7de7023 201024_05
hgs
parents:
diff changeset
   594
    { 0x1310, 0x1311, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable gwa
662fa7de7023 201024_05
hgs
parents:
diff changeset
   595
    { 0x1312, 0x1316, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable gwi
662fa7de7023 201024_05
hgs
parents:
diff changeset
   596
    { 0x1318, 0x135b, MLineBreaker::EAlLineBreakClass },  //ethiopic syllable gga
662fa7de7023 201024_05
hgs
parents:
diff changeset
   597
    { 0x135f, 0x1360, MLineBreaker::ECmLineBreakClass },  //ETHIOPIC COMBINING GEMINATION MARK
662fa7de7023 201024_05
hgs
parents:
diff changeset
   598
    { 0x1360, 0x1361, MLineBreaker::EAlLineBreakClass },  //ETHIOPIC SECTION MARK
662fa7de7023 201024_05
hgs
parents:
diff changeset
   599
    { 0x1361, 0x1362, MLineBreaker::EBaLineBreakClass },  //ethiopic wordspace
662fa7de7023 201024_05
hgs
parents:
diff changeset
   600
    { 0x1362, 0x1369, MLineBreaker::EAlLineBreakClass },  //ethiopic full stop
662fa7de7023 201024_05
hgs
parents:
diff changeset
   601
    { 0x1369, 0x1372, MLineBreaker::ENuLineBreakClass },  //ethiopic digit one
662fa7de7023 201024_05
hgs
parents:
diff changeset
   602
    { 0x1372, 0x137d, MLineBreaker::EAlLineBreakClass },  //ethiopic number ten
662fa7de7023 201024_05
hgs
parents:
diff changeset
   603
    { 0x1380, 0x139a, MLineBreaker::EAlLineBreakClass },  //ETHIOPIC SYLLABLE SEBATBEIT MWA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   604
    { 0x13a0, 0x13f5, MLineBreaker::EAlLineBreakClass },  //cherokee letter a
662fa7de7023 201024_05
hgs
parents:
diff changeset
   605
    { 0x1401, 0x1677, MLineBreaker::EAlLineBreakClass },  //canadian syllabics e
662fa7de7023 201024_05
hgs
parents:
diff changeset
   606
    { 0x1680, 0x1681, MLineBreaker::EBaLineBreakClass },  //ogham space mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   607
    { 0x1681, 0x169b, MLineBreaker::EAlLineBreakClass },  //ogham letter beith
662fa7de7023 201024_05
hgs
parents:
diff changeset
   608
    { 0x169b, 0x169c, MLineBreaker::EOpLineBreakClass },  //ogham feather mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   609
    { 0x169c, 0x169d, MLineBreaker::EClLineBreakClass },  //ogham reversed feather mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   610
    { 0x16a0, 0x16f1, MLineBreaker::EAlLineBreakClass },  //runic letter fehu feoh fe f
662fa7de7023 201024_05
hgs
parents:
diff changeset
   611
    { 0x1700, 0x170d, MLineBreaker::EAlLineBreakClass },  //TAGALOG LETTER A
662fa7de7023 201024_05
hgs
parents:
diff changeset
   612
    { 0x170e, 0x1712, MLineBreaker::EAlLineBreakClass },  //TAGALOG LETTER LA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   613
    { 0x1712, 0x1715, MLineBreaker::ECmLineBreakClass },  //TAGALOG VOWEL SIGN I
662fa7de7023 201024_05
hgs
parents:
diff changeset
   614
    { 0x1720, 0x1732, MLineBreaker::EAlLineBreakClass },  //HANUNOO LETTER A
662fa7de7023 201024_05
hgs
parents:
diff changeset
   615
    { 0x1732, 0x1735, MLineBreaker::ECmLineBreakClass },  //HANUNOO VOWEL SIGN I
662fa7de7023 201024_05
hgs
parents:
diff changeset
   616
    { 0x1735, 0x1737, MLineBreaker::EBaLineBreakClass },  //PHILIPPINE SINGLE PUNCTUATION
662fa7de7023 201024_05
hgs
parents:
diff changeset
   617
    { 0x1740, 0x1752, MLineBreaker::EAlLineBreakClass },  //BUHID LETTER A
662fa7de7023 201024_05
hgs
parents:
diff changeset
   618
    { 0x1752, 0x1754, MLineBreaker::ECmLineBreakClass },  //BUHID VOWEL SIGN I
662fa7de7023 201024_05
hgs
parents:
diff changeset
   619
    { 0x1760, 0x176d, MLineBreaker::EAlLineBreakClass },  //TAGBANWA LETTER A
662fa7de7023 201024_05
hgs
parents:
diff changeset
   620
    { 0x176e, 0x1771, MLineBreaker::EAlLineBreakClass },  //TAGBANWA LETTER LA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   621
    { 0x1772, 0x1774, MLineBreaker::ECmLineBreakClass },  //TAGBANWA VOWEL SIGN I
662fa7de7023 201024_05
hgs
parents:
diff changeset
   622
    { 0x1780, 0x17b4, MLineBreaker::ESaLineBreakClass },  //khmer letter ka
662fa7de7023 201024_05
hgs
parents:
diff changeset
   623
    { 0x17b4, 0x17d4, MLineBreaker::ECmLineBreakClass },  //khmer vowel inherent aq
662fa7de7023 201024_05
hgs
parents:
diff changeset
   624
    { 0x17d4, 0x17d5, MLineBreaker::ENsLineBreakClass },  //khmer sign khan
662fa7de7023 201024_05
hgs
parents:
diff changeset
   625
    { 0x17d5, 0x17d6, MLineBreaker::EBaLineBreakClass },  //khmer sign bariyoosan
662fa7de7023 201024_05
hgs
parents:
diff changeset
   626
    { 0x17d6, 0x17db, MLineBreaker::ENsLineBreakClass },  //khmer sign camnuc pii kuuh
662fa7de7023 201024_05
hgs
parents:
diff changeset
   627
    { 0x17db, 0x17dc, MLineBreaker::EPrLineBreakClass },  //khmer currency symbol riel
662fa7de7023 201024_05
hgs
parents:
diff changeset
   628
    { 0x17dc, 0x17dd, MLineBreaker::EAlLineBreakClass },  //khmer sign avakrahasanya
662fa7de7023 201024_05
hgs
parents:
diff changeset
   629
    { 0x17dd, 0x17de, MLineBreaker::ESaLineBreakClass },  //KHMER SIGN ATTHACAN
662fa7de7023 201024_05
hgs
parents:
diff changeset
   630
    { 0x17e0, 0x17ea, MLineBreaker::ENuLineBreakClass },  //khmer digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   631
    { 0x17f0, 0x17fa, MLineBreaker::EAlLineBreakClass },  //KHMER SYMBOL LEK ATTAK SON
662fa7de7023 201024_05
hgs
parents:
diff changeset
   632
    { 0x1800, 0x1806, MLineBreaker::EAlLineBreakClass },  //mongolian birga
662fa7de7023 201024_05
hgs
parents:
diff changeset
   633
    { 0x1806, 0x1807, MLineBreaker::EBbLineBreakClass },  //mongolian todo soft hyphen
662fa7de7023 201024_05
hgs
parents:
diff changeset
   634
    { 0x1807, 0x180b, MLineBreaker::EAlLineBreakClass },  //mongolian sibe syllable boundary marker
662fa7de7023 201024_05
hgs
parents:
diff changeset
   635
    { 0x180b, 0x180f, MLineBreaker::ECmLineBreakClass },  //mongolian free variation selector one
662fa7de7023 201024_05
hgs
parents:
diff changeset
   636
    { 0x1810, 0x181a, MLineBreaker::ENuLineBreakClass },  //mongolian digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   637
    { 0x1820, 0x1878, MLineBreaker::EAlLineBreakClass },  //mongolian letter a
662fa7de7023 201024_05
hgs
parents:
diff changeset
   638
    { 0x1880, 0x18a9, MLineBreaker::EAlLineBreakClass },  //mongolian letter ali gali anusvara one
662fa7de7023 201024_05
hgs
parents:
diff changeset
   639
    { 0x18a9, 0x18aa, MLineBreaker::ECmLineBreakClass },  //mongolian letter ali gali dagalga
662fa7de7023 201024_05
hgs
parents:
diff changeset
   640
    { 0x1900, 0x191d, MLineBreaker::EAlLineBreakClass },  //LIMBU VOWEL-CARRIER LETTER
662fa7de7023 201024_05
hgs
parents:
diff changeset
   641
    { 0x1920, 0x192c, MLineBreaker::ECmLineBreakClass },  //LIMBU VOWEL SIGN A
662fa7de7023 201024_05
hgs
parents:
diff changeset
   642
    { 0x1930, 0x193c, MLineBreaker::ECmLineBreakClass },  //LIMBU SMALL LETTER KA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   643
    { 0x1940, 0x1941, MLineBreaker::EAlLineBreakClass },  //LIMBU SIGN LOO
662fa7de7023 201024_05
hgs
parents:
diff changeset
   644
    { 0x1944, 0x1946, MLineBreaker::EExLineBreakClass },  //LIMBU EXCLAMATION MARK
662fa7de7023 201024_05
hgs
parents:
diff changeset
   645
    { 0x1946, 0x1950, MLineBreaker::ENuLineBreakClass },  //LIMBU DIGIT ZERO
662fa7de7023 201024_05
hgs
parents:
diff changeset
   646
    { 0x1950, 0x196e, MLineBreaker::ESaLineBreakClass },  //TAI LE LETTER KA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   647
    { 0x1970, 0x1975, MLineBreaker::ESaLineBreakClass },  //TAI LE LETTER TONE-2
662fa7de7023 201024_05
hgs
parents:
diff changeset
   648
    { 0x1980, 0x19aa, MLineBreaker::ESaLineBreakClass },  //NEW TAI LUE LETTER HIGH QA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   649
    { 0x19b0, 0x19ca, MLineBreaker::ESaLineBreakClass },  //NEW TAI LUE VOWEL SIGN VOWEL SHORTENER
662fa7de7023 201024_05
hgs
parents:
diff changeset
   650
    { 0x19d0, 0x19da, MLineBreaker::ENuLineBreakClass },  //NEW TAI LUE DIGIT ZERO
662fa7de7023 201024_05
hgs
parents:
diff changeset
   651
    { 0x19de, 0x19e0, MLineBreaker::ESaLineBreakClass },  //NEW TAI LUE SIGN LAE
662fa7de7023 201024_05
hgs
parents:
diff changeset
   652
    { 0x19e0, 0x1a17, MLineBreaker::EAlLineBreakClass },  //KHMER SYMBOL PATHAMASAT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   653
    { 0x1a17, 0x1a1c, MLineBreaker::ECmLineBreakClass },  //BUGINESE VOWEL SIGN I
662fa7de7023 201024_05
hgs
parents:
diff changeset
   654
    { 0x1a1e, 0x1a1f, MLineBreaker::EBaLineBreakClass },  //BUGINESE PALLAWA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   655
    { 0x1a1f, 0x1a20, MLineBreaker::EAlLineBreakClass },  //BUGINESE END OF SECTION
662fa7de7023 201024_05
hgs
parents:
diff changeset
   656
    { 0x1b00, 0x1b05, MLineBreaker::ECmLineBreakClass },  //BALINESE SIGN ULU RICEM
662fa7de7023 201024_05
hgs
parents:
diff changeset
   657
    { 0x1b05, 0x1b34, MLineBreaker::EAlLineBreakClass },  //BALINESE LETTER AKARA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   658
    { 0x1b34, 0x1b45, MLineBreaker::ECmLineBreakClass },  //BALINESE SIGN REREKAN
662fa7de7023 201024_05
hgs
parents:
diff changeset
   659
    { 0x1b45, 0x1b4c, MLineBreaker::EAlLineBreakClass },  //BALINESE LETTER KAF SASAK
662fa7de7023 201024_05
hgs
parents:
diff changeset
   660
    { 0x1b50, 0x1b5a, MLineBreaker::ENuLineBreakClass },  //BALINESE DIGIT ZERO
662fa7de7023 201024_05
hgs
parents:
diff changeset
   661
    { 0x1b5a, 0x1b61, MLineBreaker::EBaLineBreakClass },  //BALINESE PANTI
662fa7de7023 201024_05
hgs
parents:
diff changeset
   662
    { 0x1b61, 0x1b6b, MLineBreaker::EAlLineBreakClass },  //BALINESE MUSICAL SYMBOL DONG
662fa7de7023 201024_05
hgs
parents:
diff changeset
   663
    { 0x1b6b, 0x1b74, MLineBreaker::ECmLineBreakClass },  //BALINESE MUSICAL SYMBOL COMBINING TEGEH
662fa7de7023 201024_05
hgs
parents:
diff changeset
   664
    { 0x1b74, 0x1b7d, MLineBreaker::EAlLineBreakClass },  //BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG
662fa7de7023 201024_05
hgs
parents:
diff changeset
   665
    { 0x1d00, 0x1dc0, MLineBreaker::EAlLineBreakClass },  //LATIN LETTER SMALL CAPITAL A
662fa7de7023 201024_05
hgs
parents:
diff changeset
   666
    { 0x1dc0, 0x1dcb, MLineBreaker::ECmLineBreakClass },  //COMBINING DOTTED GRAVE ACCENT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   667
    { 0x1dfe, 0x1e00, MLineBreaker::ECmLineBreakClass },  //COMBINING LEFT ARROWHEAD ABOVE
662fa7de7023 201024_05
hgs
parents:
diff changeset
   668
    { 0x1e00, 0x1e9c, MLineBreaker::EAlLineBreakClass },  //latin capital letter a with ring below
662fa7de7023 201024_05
hgs
parents:
diff changeset
   669
    { 0x1ea0, 0x1efa, MLineBreaker::EAlLineBreakClass },  //latin capital letter a with dot below
662fa7de7023 201024_05
hgs
parents:
diff changeset
   670
    { 0x1f00, 0x1f16, MLineBreaker::EAlLineBreakClass },  //greek small letter alpha with psili
662fa7de7023 201024_05
hgs
parents:
diff changeset
   671
    { 0x1f18, 0x1f1e, MLineBreaker::EAlLineBreakClass },  //greek capital letter epsilon with psili
662fa7de7023 201024_05
hgs
parents:
diff changeset
   672
    { 0x1f20, 0x1f46, MLineBreaker::EAlLineBreakClass },  //greek small letter eta with psili
662fa7de7023 201024_05
hgs
parents:
diff changeset
   673
    { 0x1f48, 0x1f4e, MLineBreaker::EAlLineBreakClass },  //greek capital letter omicron with psili
662fa7de7023 201024_05
hgs
parents:
diff changeset
   674
    { 0x1f50, 0x1f58, MLineBreaker::EAlLineBreakClass },  //greek small letter upsilon with psili
662fa7de7023 201024_05
hgs
parents:
diff changeset
   675
    { 0x1f59, 0x1f5a, MLineBreaker::EAlLineBreakClass },  //greek capital letter upsilon with dasia
662fa7de7023 201024_05
hgs
parents:
diff changeset
   676
    { 0x1f5b, 0x1f5c, MLineBreaker::EAlLineBreakClass },  //greek capital letter upsilon with dasia and varia
662fa7de7023 201024_05
hgs
parents:
diff changeset
   677
    { 0x1f5d, 0x1f5e, MLineBreaker::EAlLineBreakClass },  //greek capital letter upsilon with dasia and oxia
662fa7de7023 201024_05
hgs
parents:
diff changeset
   678
    { 0x1f5f, 0x1f7e, MLineBreaker::EAlLineBreakClass },  //greek capital letter upsilon with dasia and perispomeni
662fa7de7023 201024_05
hgs
parents:
diff changeset
   679
    { 0x1f80, 0x1fb5, MLineBreaker::EAlLineBreakClass },  //greek small letter alpha with psili and ypogegrammeni
662fa7de7023 201024_05
hgs
parents:
diff changeset
   680
    { 0x1fb6, 0x1fc5, MLineBreaker::EAlLineBreakClass },  //greek small letter alpha with perispomeni
662fa7de7023 201024_05
hgs
parents:
diff changeset
   681
    { 0x1fc6, 0x1fd4, MLineBreaker::EAlLineBreakClass },  //greek small letter eta with perispomeni
662fa7de7023 201024_05
hgs
parents:
diff changeset
   682
    { 0x1fd6, 0x1fdc, MLineBreaker::EAlLineBreakClass },  //greek small letter iota with perispomeni
662fa7de7023 201024_05
hgs
parents:
diff changeset
   683
    { 0x1fdd, 0x1ff0, MLineBreaker::EAlLineBreakClass },  //greek dasia and varia
662fa7de7023 201024_05
hgs
parents:
diff changeset
   684
    { 0x1ff2, 0x1ff5, MLineBreaker::EAlLineBreakClass },  //greek small letter omega with varia and ypogegrammeni
662fa7de7023 201024_05
hgs
parents:
diff changeset
   685
    { 0x1ff6, 0x1fff, MLineBreaker::EAlLineBreakClass },  //greek small letter omega with perispomeni
662fa7de7023 201024_05
hgs
parents:
diff changeset
   686
    { 0x2000, 0x2007, MLineBreaker::EBaLineBreakClass },  //en quad
662fa7de7023 201024_05
hgs
parents:
diff changeset
   687
    { 0x2007, 0x2008, MLineBreaker::EGlLineBreakClass },  //figure space
662fa7de7023 201024_05
hgs
parents:
diff changeset
   688
    { 0x2008, 0x200b, MLineBreaker::EBaLineBreakClass },  //punctuation space
662fa7de7023 201024_05
hgs
parents:
diff changeset
   689
    { 0x200b, 0x200c, MLineBreaker::EZwLineBreakClass },  //zero width space
662fa7de7023 201024_05
hgs
parents:
diff changeset
   690
    { 0x200c, 0x2010, MLineBreaker::ECmLineBreakClass },  //zero width non-joiner
662fa7de7023 201024_05
hgs
parents:
diff changeset
   691
    { 0x2010, 0x2011, MLineBreaker::EBaLineBreakClass },  //hyphen
662fa7de7023 201024_05
hgs
parents:
diff changeset
   692
    { 0x2011, 0x2012, MLineBreaker::EGlLineBreakClass },  //non-breaking hyphen
662fa7de7023 201024_05
hgs
parents:
diff changeset
   693
    { 0x2012, 0x2014, MLineBreaker::EBaLineBreakClass },  //figure dash
662fa7de7023 201024_05
hgs
parents:
diff changeset
   694
    { 0x2014, 0x2015, MLineBreaker::EB2LineBreakClass },  //em dash
662fa7de7023 201024_05
hgs
parents:
diff changeset
   695
    { 0x2015, 0x2016, MLineBreaker::EAlLineBreakClass },  //horizontal bar
662fa7de7023 201024_05
hgs
parents:
diff changeset
   696
    { 0x2016, 0x2017, MLineBreaker::EAiLineBreakClass },  //double vertical line
662fa7de7023 201024_05
hgs
parents:
diff changeset
   697
    { 0x2017, 0x2018, MLineBreaker::EAlLineBreakClass },  //double low line
662fa7de7023 201024_05
hgs
parents:
diff changeset
   698
    { 0x2018, 0x201a, MLineBreaker::EQuLineBreakClass },  //left single quotation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   699
    { 0x201a, 0x201b, MLineBreaker::EOpLineBreakClass },  //single low-9 quotation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   700
    { 0x201b, 0x201e, MLineBreaker::EQuLineBreakClass },  //single high-reversed-9 quotation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   701
    { 0x201e, 0x201f, MLineBreaker::EOpLineBreakClass },  //double low-9 quotation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   702
    { 0x201f, 0x2020, MLineBreaker::EQuLineBreakClass },  //double high-reversed-9 quotation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   703
    { 0x2020, 0x2022, MLineBreaker::EAiLineBreakClass },  //dagger
662fa7de7023 201024_05
hgs
parents:
diff changeset
   704
    { 0x2022, 0x2024, MLineBreaker::EAlLineBreakClass },  //bullet
662fa7de7023 201024_05
hgs
parents:
diff changeset
   705
    { 0x2024, 0x2027, MLineBreaker::EInLineBreakClass },  //one dot leader
662fa7de7023 201024_05
hgs
parents:
diff changeset
   706
    { 0x2027, 0x2028, MLineBreaker::EBaLineBreakClass },  //hyphenation point
662fa7de7023 201024_05
hgs
parents:
diff changeset
   707
    { 0x2028, 0x202a, MLineBreaker::EBkLineBreakClass },  //line separator
662fa7de7023 201024_05
hgs
parents:
diff changeset
   708
    { 0x202a, 0x202f, MLineBreaker::ECmLineBreakClass },  //left-to-right embedding
662fa7de7023 201024_05
hgs
parents:
diff changeset
   709
    { 0x202f, 0x2030, MLineBreaker::EGlLineBreakClass },  //narrow no-break space
662fa7de7023 201024_05
hgs
parents:
diff changeset
   710
    { 0x2030, 0x2038, MLineBreaker::EPoLineBreakClass },  //per mille sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   711
    { 0x2038, 0x2039, MLineBreaker::EAlLineBreakClass },  //caret
662fa7de7023 201024_05
hgs
parents:
diff changeset
   712
    { 0x2039, 0x203b, MLineBreaker::EQuLineBreakClass },  //single left-pointing angle quotation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   713
    { 0x203b, 0x203c, MLineBreaker::EAiLineBreakClass },  //reference mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   714
    { 0x203c, 0x203d, MLineBreaker::ENsLineBreakClass },  //double exclamation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   715
    { 0x203d, 0x2044, MLineBreaker::EAlLineBreakClass },  //interrobang
662fa7de7023 201024_05
hgs
parents:
diff changeset
   716
    { 0x2044, 0x2045, MLineBreaker::ENsLineBreakClass },  //fraction slash
662fa7de7023 201024_05
hgs
parents:
diff changeset
   717
    { 0x2045, 0x2046, MLineBreaker::EOpLineBreakClass },  //left square bracket with quill
662fa7de7023 201024_05
hgs
parents:
diff changeset
   718
    { 0x2046, 0x2047, MLineBreaker::EClLineBreakClass },  //right square bracket with quill
662fa7de7023 201024_05
hgs
parents:
diff changeset
   719
    { 0x2047, 0x2048, MLineBreaker::ENsLineBreakClass },  //DOUBLE QUESTION MARK
662fa7de7023 201024_05
hgs
parents:
diff changeset
   720
    { 0x2048, 0x2056, MLineBreaker::EAlLineBreakClass },  //question exclamation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
   721
    { 0x2056, 0x2057, MLineBreaker::EBaLineBreakClass },  //THREE DOT PUNCTUATION
662fa7de7023 201024_05
hgs
parents:
diff changeset
   722
    { 0x2057, 0x2058, MLineBreaker::EAlLineBreakClass },  //QUADRUPLE PRIME
662fa7de7023 201024_05
hgs
parents:
diff changeset
   723
    { 0x2058, 0x205c, MLineBreaker::EBaLineBreakClass },  //FOUR DOT PUNCTUATION
662fa7de7023 201024_05
hgs
parents:
diff changeset
   724
    { 0x205c, 0x205d, MLineBreaker::EAlLineBreakClass },  //DOTTED CROSS
662fa7de7023 201024_05
hgs
parents:
diff changeset
   725
    { 0x205d, 0x2060, MLineBreaker::EBaLineBreakClass },  //TRICOLON
662fa7de7023 201024_05
hgs
parents:
diff changeset
   726
    { 0x2060, 0x2061, MLineBreaker::EGlLineBreakClass },  //WORD JOINER
662fa7de7023 201024_05
hgs
parents:
diff changeset
   727
    { 0x2061, 0x2064, MLineBreaker::EAlLineBreakClass },  //FUNCTION APPLICATION
662fa7de7023 201024_05
hgs
parents:
diff changeset
   728
    { 0x206a, 0x2070, MLineBreaker::ECmLineBreakClass },  //inhibit symmetric swapping
662fa7de7023 201024_05
hgs
parents:
diff changeset
   729
    { 0x2070, 0x2071, MLineBreaker::EAlLineBreakClass },  //superscript zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   730
    { 0x2071, 0x2072, MLineBreaker::EAlLineBreakClass },  //SUPERSCRIPT LATIN SMALL LETTER I
662fa7de7023 201024_05
hgs
parents:
diff changeset
   731
    { 0x2074, 0x2075, MLineBreaker::EAiLineBreakClass },  //superscript four
662fa7de7023 201024_05
hgs
parents:
diff changeset
   732
    { 0x2075, 0x207d, MLineBreaker::EAlLineBreakClass },  //superscript five
662fa7de7023 201024_05
hgs
parents:
diff changeset
   733
    { 0x207d, 0x207e, MLineBreaker::EOpLineBreakClass },  //superscript left parenthesis
662fa7de7023 201024_05
hgs
parents:
diff changeset
   734
    { 0x207e, 0x207f, MLineBreaker::EClLineBreakClass },  //superscript right parenthesis
662fa7de7023 201024_05
hgs
parents:
diff changeset
   735
    { 0x207f, 0x2080, MLineBreaker::EAiLineBreakClass },  //superscript latin small letter n
662fa7de7023 201024_05
hgs
parents:
diff changeset
   736
    { 0x2080, 0x2081, MLineBreaker::EAlLineBreakClass },  //subscript zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   737
    { 0x2081, 0x2085, MLineBreaker::EAiLineBreakClass },  //subscript one
662fa7de7023 201024_05
hgs
parents:
diff changeset
   738
    { 0x2085, 0x208d, MLineBreaker::EAlLineBreakClass },  //subscript five
662fa7de7023 201024_05
hgs
parents:
diff changeset
   739
    { 0x208d, 0x208e, MLineBreaker::EOpLineBreakClass },  //subscript left parenthesis
662fa7de7023 201024_05
hgs
parents:
diff changeset
   740
    { 0x208e, 0x208f, MLineBreaker::EClLineBreakClass },  //subscript right parenthesis
662fa7de7023 201024_05
hgs
parents:
diff changeset
   741
    { 0x2090, 0x2095, MLineBreaker::EAlLineBreakClass },  //LATIN SUBSCRIPT SMALL LETTER A
662fa7de7023 201024_05
hgs
parents:
diff changeset
   742
    { 0x20a0, 0x20a7, MLineBreaker::EPrLineBreakClass },  //euro-currency sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   743
    { 0x20a7, 0x20a8, MLineBreaker::EPoLineBreakClass },  //peseta sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   744
    { 0x20a8, 0x20b6, MLineBreaker::EPrLineBreakClass },  //rupee sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   745
    { 0x20d0, 0x20f0, MLineBreaker::ECmLineBreakClass },  //combining left harpoon above
662fa7de7023 201024_05
hgs
parents:
diff changeset
   746
    { 0x2100, 0x2103, MLineBreaker::EAlLineBreakClass },  //account of
662fa7de7023 201024_05
hgs
parents:
diff changeset
   747
    { 0x2103, 0x2104, MLineBreaker::EPoLineBreakClass },  //degree celsius
662fa7de7023 201024_05
hgs
parents:
diff changeset
   748
    { 0x2104, 0x2105, MLineBreaker::EAlLineBreakClass },  //centre line symbol
662fa7de7023 201024_05
hgs
parents:
diff changeset
   749
    { 0x2105, 0x2106, MLineBreaker::EAiLineBreakClass },  //care of
662fa7de7023 201024_05
hgs
parents:
diff changeset
   750
    { 0x2106, 0x2109, MLineBreaker::EAlLineBreakClass },  //cada una
662fa7de7023 201024_05
hgs
parents:
diff changeset
   751
    { 0x2109, 0x210a, MLineBreaker::EPoLineBreakClass },  //degree fahrenheit
662fa7de7023 201024_05
hgs
parents:
diff changeset
   752
    { 0x210a, 0x2113, MLineBreaker::EAlLineBreakClass },  //script small g
662fa7de7023 201024_05
hgs
parents:
diff changeset
   753
    { 0x2113, 0x2114, MLineBreaker::EAiLineBreakClass },  //script small l
662fa7de7023 201024_05
hgs
parents:
diff changeset
   754
    { 0x2114, 0x2116, MLineBreaker::EAlLineBreakClass },  //l b bar symbol
662fa7de7023 201024_05
hgs
parents:
diff changeset
   755
    { 0x2116, 0x2117, MLineBreaker::EPrLineBreakClass },  //numero sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   756
    { 0x2117, 0x2121, MLineBreaker::EAlLineBreakClass },  //sound recording copyright
662fa7de7023 201024_05
hgs
parents:
diff changeset
   757
    { 0x2121, 0x2123, MLineBreaker::EAiLineBreakClass },  //telephone sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   758
    { 0x2123, 0x2126, MLineBreaker::EAlLineBreakClass },  //versicle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   759
    { 0x2126, 0x2127, MLineBreaker::EPoLineBreakClass },  //ohm sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   760
    { 0x2127, 0x212b, MLineBreaker::EAlLineBreakClass },  //inverted ohm sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   761
    { 0x212b, 0x212c, MLineBreaker::EAiLineBreakClass },  //angstrom sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   762
    { 0x212c, 0x214f, MLineBreaker::EAlLineBreakClass },  //script capital b
662fa7de7023 201024_05
hgs
parents:
diff changeset
   763
    { 0x2153, 0x2154, MLineBreaker::EAlLineBreakClass },  //vulgar fraction one third
662fa7de7023 201024_05
hgs
parents:
diff changeset
   764
    { 0x2154, 0x2156, MLineBreaker::EAiLineBreakClass },  //vulgar fraction two thirds
662fa7de7023 201024_05
hgs
parents:
diff changeset
   765
    { 0x2156, 0x215b, MLineBreaker::EAlLineBreakClass },  //vulgar fraction two fifths
662fa7de7023 201024_05
hgs
parents:
diff changeset
   766
    { 0x215b, 0x215c, MLineBreaker::EAiLineBreakClass },  //vulgar fraction one eighth
662fa7de7023 201024_05
hgs
parents:
diff changeset
   767
    { 0x215c, 0x215e, MLineBreaker::EAlLineBreakClass },  //vulgar fraction three eighths
662fa7de7023 201024_05
hgs
parents:
diff changeset
   768
    { 0x215e, 0x215f, MLineBreaker::EAiLineBreakClass },  //vulgar fraction seven eighths
662fa7de7023 201024_05
hgs
parents:
diff changeset
   769
    { 0x215f, 0x2160, MLineBreaker::EAlLineBreakClass },  //fraction numerator one
662fa7de7023 201024_05
hgs
parents:
diff changeset
   770
    { 0x2160, 0x216c, MLineBreaker::EAiLineBreakClass },  //roman numeral one
662fa7de7023 201024_05
hgs
parents:
diff changeset
   771
    { 0x216c, 0x2170, MLineBreaker::EAlLineBreakClass },  //roman numeral fifty
662fa7de7023 201024_05
hgs
parents:
diff changeset
   772
    { 0x2170, 0x217a, MLineBreaker::EAiLineBreakClass },  //small roman numeral one
662fa7de7023 201024_05
hgs
parents:
diff changeset
   773
    { 0x217a, 0x2185, MLineBreaker::EAlLineBreakClass },  //small roman numeral eleven
662fa7de7023 201024_05
hgs
parents:
diff changeset
   774
    { 0x2190, 0x219a, MLineBreaker::EAiLineBreakClass },  //leftwards arrow
662fa7de7023 201024_05
hgs
parents:
diff changeset
   775
    { 0x219a, 0x21d2, MLineBreaker::EAlLineBreakClass },  //leftwards arrow with stroke
662fa7de7023 201024_05
hgs
parents:
diff changeset
   776
    { 0x21d2, 0x21d3, MLineBreaker::EAiLineBreakClass },  //rightwards double arrow
662fa7de7023 201024_05
hgs
parents:
diff changeset
   777
    { 0x21d3, 0x21d4, MLineBreaker::EAlLineBreakClass },  //downwards double arrow
662fa7de7023 201024_05
hgs
parents:
diff changeset
   778
    { 0x21d4, 0x21d5, MLineBreaker::EAiLineBreakClass },  //left right double arrow
662fa7de7023 201024_05
hgs
parents:
diff changeset
   779
    { 0x21d5, 0x2200, MLineBreaker::EAlLineBreakClass },  //up down double arrow
662fa7de7023 201024_05
hgs
parents:
diff changeset
   780
    { 0x2200, 0x2201, MLineBreaker::EAiLineBreakClass },  //for all
662fa7de7023 201024_05
hgs
parents:
diff changeset
   781
    { 0x2201, 0x2202, MLineBreaker::EAlLineBreakClass },  //complement
662fa7de7023 201024_05
hgs
parents:
diff changeset
   782
    { 0x2202, 0x2204, MLineBreaker::EAiLineBreakClass },  //partial differential
662fa7de7023 201024_05
hgs
parents:
diff changeset
   783
    { 0x2204, 0x2207, MLineBreaker::EAlLineBreakClass },  //there does not exist
662fa7de7023 201024_05
hgs
parents:
diff changeset
   784
    { 0x2207, 0x2209, MLineBreaker::EAiLineBreakClass },  //nabla
662fa7de7023 201024_05
hgs
parents:
diff changeset
   785
    { 0x2209, 0x220b, MLineBreaker::EAlLineBreakClass },  //not an element of
662fa7de7023 201024_05
hgs
parents:
diff changeset
   786
    { 0x220b, 0x220c, MLineBreaker::EAiLineBreakClass },  //contains as member
662fa7de7023 201024_05
hgs
parents:
diff changeset
   787
    { 0x220c, 0x220f, MLineBreaker::EAlLineBreakClass },  //does not contain as member
662fa7de7023 201024_05
hgs
parents:
diff changeset
   788
    { 0x220f, 0x2210, MLineBreaker::EAiLineBreakClass },  //n-ary product
662fa7de7023 201024_05
hgs
parents:
diff changeset
   789
    { 0x2210, 0x2211, MLineBreaker::EAlLineBreakClass },  //n-ary coproduct
662fa7de7023 201024_05
hgs
parents:
diff changeset
   790
    { 0x2211, 0x2212, MLineBreaker::EAiLineBreakClass },  //n-ary summation
662fa7de7023 201024_05
hgs
parents:
diff changeset
   791
    { 0x2212, 0x2214, MLineBreaker::EPrLineBreakClass },  //minus sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   792
    { 0x2214, 0x2215, MLineBreaker::EAlLineBreakClass },  //dot plus
662fa7de7023 201024_05
hgs
parents:
diff changeset
   793
    { 0x2215, 0x2216, MLineBreaker::EAiLineBreakClass },  //division slash
662fa7de7023 201024_05
hgs
parents:
diff changeset
   794
    { 0x2216, 0x221a, MLineBreaker::EAlLineBreakClass },  //set minus
662fa7de7023 201024_05
hgs
parents:
diff changeset
   795
    { 0x221a, 0x221b, MLineBreaker::EAiLineBreakClass },  //square root
662fa7de7023 201024_05
hgs
parents:
diff changeset
   796
    { 0x221b, 0x221d, MLineBreaker::EAlLineBreakClass },  //cube root
662fa7de7023 201024_05
hgs
parents:
diff changeset
   797
    { 0x221d, 0x2221, MLineBreaker::EAiLineBreakClass },  //proportional to
662fa7de7023 201024_05
hgs
parents:
diff changeset
   798
    { 0x2221, 0x2223, MLineBreaker::EAlLineBreakClass },  //measured angle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   799
    { 0x2223, 0x2224, MLineBreaker::EAiLineBreakClass },  //divides
662fa7de7023 201024_05
hgs
parents:
diff changeset
   800
    { 0x2224, 0x2225, MLineBreaker::EAlLineBreakClass },  //does not divide
662fa7de7023 201024_05
hgs
parents:
diff changeset
   801
    { 0x2225, 0x2226, MLineBreaker::EAiLineBreakClass },  //parallel to
662fa7de7023 201024_05
hgs
parents:
diff changeset
   802
    { 0x2226, 0x2227, MLineBreaker::EAlLineBreakClass },  //not parallel to
662fa7de7023 201024_05
hgs
parents:
diff changeset
   803
    { 0x2227, 0x222d, MLineBreaker::EAiLineBreakClass },  //logical and
662fa7de7023 201024_05
hgs
parents:
diff changeset
   804
    { 0x222d, 0x222e, MLineBreaker::EAlLineBreakClass },  //triple integral
662fa7de7023 201024_05
hgs
parents:
diff changeset
   805
    { 0x222e, 0x222f, MLineBreaker::EAiLineBreakClass },  //contour integral
662fa7de7023 201024_05
hgs
parents:
diff changeset
   806
    { 0x222f, 0x2234, MLineBreaker::EAlLineBreakClass },  //surface integral
662fa7de7023 201024_05
hgs
parents:
diff changeset
   807
    { 0x2234, 0x2238, MLineBreaker::EAiLineBreakClass },  //therefore
662fa7de7023 201024_05
hgs
parents:
diff changeset
   808
    { 0x2238, 0x223c, MLineBreaker::EAlLineBreakClass },  //dot minus
662fa7de7023 201024_05
hgs
parents:
diff changeset
   809
    { 0x223c, 0x223e, MLineBreaker::EAiLineBreakClass },  //tilde operator
662fa7de7023 201024_05
hgs
parents:
diff changeset
   810
    { 0x223e, 0x2248, MLineBreaker::EAlLineBreakClass },  //inverted lazy s
662fa7de7023 201024_05
hgs
parents:
diff changeset
   811
    { 0x2248, 0x2249, MLineBreaker::EAiLineBreakClass },  //almost equal to
662fa7de7023 201024_05
hgs
parents:
diff changeset
   812
    { 0x2249, 0x224c, MLineBreaker::EAlLineBreakClass },  //not almost equal to
662fa7de7023 201024_05
hgs
parents:
diff changeset
   813
    { 0x224c, 0x224d, MLineBreaker::EAiLineBreakClass },  //all equal to
662fa7de7023 201024_05
hgs
parents:
diff changeset
   814
    { 0x224d, 0x2252, MLineBreaker::EAlLineBreakClass },  //equivalent to
662fa7de7023 201024_05
hgs
parents:
diff changeset
   815
    { 0x2252, 0x2253, MLineBreaker::EAiLineBreakClass },  //approximately equal to or the image of
662fa7de7023 201024_05
hgs
parents:
diff changeset
   816
    { 0x2253, 0x2260, MLineBreaker::EAlLineBreakClass },  //image of or approximately equal to
662fa7de7023 201024_05
hgs
parents:
diff changeset
   817
    { 0x2260, 0x2262, MLineBreaker::EAiLineBreakClass },  //not equal to
662fa7de7023 201024_05
hgs
parents:
diff changeset
   818
    { 0x2262, 0x2264, MLineBreaker::EAlLineBreakClass },  //not identical to
662fa7de7023 201024_05
hgs
parents:
diff changeset
   819
    { 0x2264, 0x2268, MLineBreaker::EAiLineBreakClass },  //less-than or equal to
662fa7de7023 201024_05
hgs
parents:
diff changeset
   820
    { 0x2268, 0x226a, MLineBreaker::EAlLineBreakClass },  //less-than but not equal to
662fa7de7023 201024_05
hgs
parents:
diff changeset
   821
    { 0x226a, 0x226c, MLineBreaker::EAiLineBreakClass },  //much less-than
662fa7de7023 201024_05
hgs
parents:
diff changeset
   822
    { 0x226c, 0x226e, MLineBreaker::EAlLineBreakClass },  //between
662fa7de7023 201024_05
hgs
parents:
diff changeset
   823
    { 0x226e, 0x2270, MLineBreaker::EAiLineBreakClass },  //not less-than
662fa7de7023 201024_05
hgs
parents:
diff changeset
   824
    { 0x2270, 0x2282, MLineBreaker::EAlLineBreakClass },  //neither less-than nor equal to
662fa7de7023 201024_05
hgs
parents:
diff changeset
   825
    { 0x2282, 0x2284, MLineBreaker::EAiLineBreakClass },  //subset of
662fa7de7023 201024_05
hgs
parents:
diff changeset
   826
    { 0x2284, 0x2286, MLineBreaker::EAlLineBreakClass },  //not a subset of
662fa7de7023 201024_05
hgs
parents:
diff changeset
   827
    { 0x2286, 0x2288, MLineBreaker::EAiLineBreakClass },  //subset of or equal to
662fa7de7023 201024_05
hgs
parents:
diff changeset
   828
    { 0x2288, 0x2295, MLineBreaker::EAlLineBreakClass },  //neither a subset of nor equal to
662fa7de7023 201024_05
hgs
parents:
diff changeset
   829
    { 0x2295, 0x2296, MLineBreaker::EAiLineBreakClass },  //circled plus
662fa7de7023 201024_05
hgs
parents:
diff changeset
   830
    { 0x2296, 0x2299, MLineBreaker::EAlLineBreakClass },  //circled minus
662fa7de7023 201024_05
hgs
parents:
diff changeset
   831
    { 0x2299, 0x229a, MLineBreaker::EAiLineBreakClass },  //circled dot operator
662fa7de7023 201024_05
hgs
parents:
diff changeset
   832
    { 0x229a, 0x22a5, MLineBreaker::EAlLineBreakClass },  //circled ring operator
662fa7de7023 201024_05
hgs
parents:
diff changeset
   833
    { 0x22a5, 0x22a6, MLineBreaker::EAiLineBreakClass },  //up tack
662fa7de7023 201024_05
hgs
parents:
diff changeset
   834
    { 0x22a6, 0x22bf, MLineBreaker::EAlLineBreakClass },  //assertion
662fa7de7023 201024_05
hgs
parents:
diff changeset
   835
    { 0x22bf, 0x22c0, MLineBreaker::EAiLineBreakClass },  //right triangle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   836
    { 0x22c0, 0x2312, MLineBreaker::EAlLineBreakClass },  //n-ary logical and
662fa7de7023 201024_05
hgs
parents:
diff changeset
   837
    { 0x2312, 0x2313, MLineBreaker::EAiLineBreakClass },  //arc
662fa7de7023 201024_05
hgs
parents:
diff changeset
   838
    { 0x2313, 0x2329, MLineBreaker::EAlLineBreakClass },  //segment
662fa7de7023 201024_05
hgs
parents:
diff changeset
   839
    { 0x2329, 0x232a, MLineBreaker::EOpLineBreakClass },  //left-pointing angle bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
   840
    { 0x232a, 0x232b, MLineBreaker::EClLineBreakClass },  //right-pointing angle bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
   841
    { 0x232b, 0x23e8, MLineBreaker::EAlLineBreakClass },  //erase to the left
662fa7de7023 201024_05
hgs
parents:
diff changeset
   842
    { 0x2400, 0x2427, MLineBreaker::EAlLineBreakClass },  //symbol for null
662fa7de7023 201024_05
hgs
parents:
diff changeset
   843
    { 0x2440, 0x244b, MLineBreaker::EAlLineBreakClass },  //ocr hook
662fa7de7023 201024_05
hgs
parents:
diff changeset
   844
    { 0x2460, 0x24c0, MLineBreaker::EAiLineBreakClass },  //circled digit one
662fa7de7023 201024_05
hgs
parents:
diff changeset
   845
    { 0x24c0, 0x24d0, MLineBreaker::EAlLineBreakClass },  //circled latin capital letter k
662fa7de7023 201024_05
hgs
parents:
diff changeset
   846
    { 0x24d0, 0x24ea, MLineBreaker::EAiLineBreakClass },  //circled latin small letter a
662fa7de7023 201024_05
hgs
parents:
diff changeset
   847
    { 0x24ea, 0x24eb, MLineBreaker::EAlLineBreakClass },  //circled digit zero
662fa7de7023 201024_05
hgs
parents:
diff changeset
   848
    { 0x24eb, 0x24ff, MLineBreaker::EAiLineBreakClass },  //NEGATIVE CIRCLED NUMBER ELEVEN
662fa7de7023 201024_05
hgs
parents:
diff changeset
   849
    { 0x24ff, 0x2500, MLineBreaker::EAlLineBreakClass },  //NEGATIVE CIRCLED DIGIT ZERO
662fa7de7023 201024_05
hgs
parents:
diff changeset
   850
    { 0x2500, 0x254c, MLineBreaker::EAiLineBreakClass },  //box drawings light horizontal
662fa7de7023 201024_05
hgs
parents:
diff changeset
   851
    { 0x254c, 0x2550, MLineBreaker::EAlLineBreakClass },  //box drawings light double dash horizontal
662fa7de7023 201024_05
hgs
parents:
diff changeset
   852
    { 0x2550, 0x2575, MLineBreaker::EAiLineBreakClass },  //box drawings double horizontal
662fa7de7023 201024_05
hgs
parents:
diff changeset
   853
    { 0x2575, 0x2580, MLineBreaker::EAlLineBreakClass },  //box drawings light up
662fa7de7023 201024_05
hgs
parents:
diff changeset
   854
    { 0x2580, 0x2590, MLineBreaker::EAiLineBreakClass },  //upper half block
662fa7de7023 201024_05
hgs
parents:
diff changeset
   855
    { 0x2590, 0x2592, MLineBreaker::EAlLineBreakClass },  //right half block
662fa7de7023 201024_05
hgs
parents:
diff changeset
   856
    { 0x2592, 0x2596, MLineBreaker::EAiLineBreakClass },  //medium shade
662fa7de7023 201024_05
hgs
parents:
diff changeset
   857
    { 0x2596, 0x25a0, MLineBreaker::EAlLineBreakClass },  //QUADRANT LOWER LEFT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   858
    { 0x25a0, 0x25a2, MLineBreaker::EAiLineBreakClass },  //black square
662fa7de7023 201024_05
hgs
parents:
diff changeset
   859
    { 0x25a2, 0x25a3, MLineBreaker::EAlLineBreakClass },  //white square with rounded corners
662fa7de7023 201024_05
hgs
parents:
diff changeset
   860
    { 0x25a3, 0x25aa, MLineBreaker::EAiLineBreakClass },  //white square containing black small square
662fa7de7023 201024_05
hgs
parents:
diff changeset
   861
    { 0x25aa, 0x25b2, MLineBreaker::EAlLineBreakClass },  //black small square
662fa7de7023 201024_05
hgs
parents:
diff changeset
   862
    { 0x25b2, 0x25b4, MLineBreaker::EAiLineBreakClass },  //black up-pointing triangle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   863
    { 0x25b4, 0x25b6, MLineBreaker::EAlLineBreakClass },  //black up-pointing small triangle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   864
    { 0x25b6, 0x25b8, MLineBreaker::EAiLineBreakClass },  //black right-pointing triangle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   865
    { 0x25b8, 0x25bc, MLineBreaker::EAlLineBreakClass },  //black right-pointing small triangle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   866
    { 0x25bc, 0x25be, MLineBreaker::EAiLineBreakClass },  //black down-pointing triangle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   867
    { 0x25be, 0x25c0, MLineBreaker::EAlLineBreakClass },  //black down-pointing small triangle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   868
    { 0x25c0, 0x25c2, MLineBreaker::EAiLineBreakClass },  //black left-pointing triangle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   869
    { 0x25c2, 0x25c6, MLineBreaker::EAlLineBreakClass },  //black left-pointing small triangle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   870
    { 0x25c6, 0x25c8, MLineBreaker::EAiLineBreakClass },  //black diamond
662fa7de7023 201024_05
hgs
parents:
diff changeset
   871
    { 0x25c8, 0x25cb, MLineBreaker::EAlLineBreakClass },  //white diamond containing black small diamond
662fa7de7023 201024_05
hgs
parents:
diff changeset
   872
    { 0x25cb, 0x25cc, MLineBreaker::EAiLineBreakClass },  //white circle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   873
    { 0x25cc, 0x25ce, MLineBreaker::EAlLineBreakClass },  //dotted circle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   874
    { 0x25ce, 0x25d2, MLineBreaker::EAiLineBreakClass },  //bullseye
662fa7de7023 201024_05
hgs
parents:
diff changeset
   875
    { 0x25d2, 0x25e2, MLineBreaker::EAlLineBreakClass },  //circle with lower half black
662fa7de7023 201024_05
hgs
parents:
diff changeset
   876
    { 0x25e2, 0x25e6, MLineBreaker::EAiLineBreakClass },  //black lower right triangle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   877
    { 0x25e6, 0x25ef, MLineBreaker::EAlLineBreakClass },  //white bullet
662fa7de7023 201024_05
hgs
parents:
diff changeset
   878
    { 0x25ef, 0x25f0, MLineBreaker::EAiLineBreakClass },  //large circle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   879
    { 0x25f0, 0x2605, MLineBreaker::EAlLineBreakClass },  //white square with upper left quadrant
662fa7de7023 201024_05
hgs
parents:
diff changeset
   880
    { 0x2605, 0x2607, MLineBreaker::EAiLineBreakClass },  //black star
662fa7de7023 201024_05
hgs
parents:
diff changeset
   881
    { 0x2607, 0x2609, MLineBreaker::EAlLineBreakClass },  //lightning
662fa7de7023 201024_05
hgs
parents:
diff changeset
   882
    { 0x2609, 0x260a, MLineBreaker::EAiLineBreakClass },  //sun
662fa7de7023 201024_05
hgs
parents:
diff changeset
   883
    { 0x260a, 0x260e, MLineBreaker::EAlLineBreakClass },  //ascending node
662fa7de7023 201024_05
hgs
parents:
diff changeset
   884
    { 0x260e, 0x2610, MLineBreaker::EAiLineBreakClass },  //black telephone
662fa7de7023 201024_05
hgs
parents:
diff changeset
   885
    { 0x2610, 0x2614, MLineBreaker::EAlLineBreakClass },  //ballot box
662fa7de7023 201024_05
hgs
parents:
diff changeset
   886
    { 0x2614, 0x2618, MLineBreaker::EAiLineBreakClass },  //UMBRELLA WITH RAIN DROPS
662fa7de7023 201024_05
hgs
parents:
diff changeset
   887
    { 0x2618, 0x261c, MLineBreaker::EAlLineBreakClass },  //SHAMROCK
662fa7de7023 201024_05
hgs
parents:
diff changeset
   888
    { 0x261c, 0x261d, MLineBreaker::EAiLineBreakClass },  //white left pointing index
662fa7de7023 201024_05
hgs
parents:
diff changeset
   889
    { 0x261d, 0x261e, MLineBreaker::EAlLineBreakClass },  //white up pointing index
662fa7de7023 201024_05
hgs
parents:
diff changeset
   890
    { 0x261e, 0x261f, MLineBreaker::EAiLineBreakClass },  //white right pointing index
662fa7de7023 201024_05
hgs
parents:
diff changeset
   891
    { 0x261f, 0x2640, MLineBreaker::EAlLineBreakClass },  //white down pointing index
662fa7de7023 201024_05
hgs
parents:
diff changeset
   892
    { 0x2640, 0x2641, MLineBreaker::EAiLineBreakClass },  //female sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   893
    { 0x2641, 0x2642, MLineBreaker::EAlLineBreakClass },  //earth
662fa7de7023 201024_05
hgs
parents:
diff changeset
   894
    { 0x2642, 0x2643, MLineBreaker::EAiLineBreakClass },  //male sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   895
    { 0x2643, 0x2660, MLineBreaker::EAlLineBreakClass },  //jupiter
662fa7de7023 201024_05
hgs
parents:
diff changeset
   896
    { 0x2660, 0x2662, MLineBreaker::EAiLineBreakClass },  //black spade suit
662fa7de7023 201024_05
hgs
parents:
diff changeset
   897
    { 0x2662, 0x2663, MLineBreaker::EAlLineBreakClass },  //white diamond suit
662fa7de7023 201024_05
hgs
parents:
diff changeset
   898
    { 0x2663, 0x2666, MLineBreaker::EAiLineBreakClass },  //black club suit
662fa7de7023 201024_05
hgs
parents:
diff changeset
   899
    { 0x2666, 0x2667, MLineBreaker::EAlLineBreakClass },  //black diamond suit
662fa7de7023 201024_05
hgs
parents:
diff changeset
   900
    { 0x2667, 0x266b, MLineBreaker::EAiLineBreakClass },  //white club suit
662fa7de7023 201024_05
hgs
parents:
diff changeset
   901
    { 0x266b, 0x266c, MLineBreaker::EAlLineBreakClass },  //beamed eighth notes
662fa7de7023 201024_05
hgs
parents:
diff changeset
   902
    { 0x266c, 0x266e, MLineBreaker::EAiLineBreakClass },  //beamed sixteenth notes
662fa7de7023 201024_05
hgs
parents:
diff changeset
   903
    { 0x266e, 0x266f, MLineBreaker::EAlLineBreakClass },  //music natural sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   904
    { 0x266f, 0x2670, MLineBreaker::EAiLineBreakClass },  //music sharp sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   905
    { 0x2670, 0x269d, MLineBreaker::EAlLineBreakClass },  //west syriac cross
662fa7de7023 201024_05
hgs
parents:
diff changeset
   906
    { 0x26a0, 0x26b3, MLineBreaker::EAlLineBreakClass },  //WARNING SIGN
662fa7de7023 201024_05
hgs
parents:
diff changeset
   907
    { 0x2701, 0x2705, MLineBreaker::EAlLineBreakClass },  //upper blade scissors
662fa7de7023 201024_05
hgs
parents:
diff changeset
   908
    { 0x2706, 0x270a, MLineBreaker::EAlLineBreakClass },  //telephone location sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
   909
    { 0x270c, 0x2728, MLineBreaker::EAlLineBreakClass },  //victory hand
662fa7de7023 201024_05
hgs
parents:
diff changeset
   910
    { 0x2729, 0x274c, MLineBreaker::EAlLineBreakClass },  //stress outlined white star
662fa7de7023 201024_05
hgs
parents:
diff changeset
   911
    { 0x274d, 0x274e, MLineBreaker::EAlLineBreakClass },  //shadowed white circle
662fa7de7023 201024_05
hgs
parents:
diff changeset
   912
    { 0x274f, 0x2753, MLineBreaker::EAlLineBreakClass },  //lower right drop-shadowed white square
662fa7de7023 201024_05
hgs
parents:
diff changeset
   913
    { 0x2756, 0x2757, MLineBreaker::EAlLineBreakClass },  //black diamond minus white x
662fa7de7023 201024_05
hgs
parents:
diff changeset
   914
    { 0x2758, 0x275f, MLineBreaker::EAlLineBreakClass },  //light vertical bar
662fa7de7023 201024_05
hgs
parents:
diff changeset
   915
    { 0x2761, 0x2768, MLineBreaker::EAlLineBreakClass },  //curved stem paragraph sign ornament
662fa7de7023 201024_05
hgs
parents:
diff changeset
   916
    { 0x2768, 0x2769, MLineBreaker::EOpLineBreakClass },  //MEDIUM LEFT PARENTHESIS ORNAMENT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   917
    { 0x2769, 0x276a, MLineBreaker::EClLineBreakClass },  //MEDIUM RIGHT PARENTHESIS ORNAMENT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   918
    { 0x276a, 0x276b, MLineBreaker::EOpLineBreakClass },  //MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   919
    { 0x276b, 0x276c, MLineBreaker::EClLineBreakClass },  //MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   920
    { 0x276c, 0x276d, MLineBreaker::EOpLineBreakClass },  //MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   921
    { 0x276d, 0x276e, MLineBreaker::EClLineBreakClass },  //MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   922
    { 0x276e, 0x276f, MLineBreaker::EOpLineBreakClass },  //HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   923
    { 0x276f, 0x2770, MLineBreaker::EClLineBreakClass },  //HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   924
    { 0x2770, 0x2771, MLineBreaker::EOpLineBreakClass },  //HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   925
    { 0x2771, 0x2772, MLineBreaker::EClLineBreakClass },  //HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   926
    { 0x2772, 0x2773, MLineBreaker::EOpLineBreakClass },  //LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   927
    { 0x2773, 0x2774, MLineBreaker::EClLineBreakClass },  //LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   928
    { 0x2774, 0x2775, MLineBreaker::EOpLineBreakClass },  //MEDIUM LEFT CURLY BRACKET ORNAMENT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   929
    { 0x2775, 0x2776, MLineBreaker::EClLineBreakClass },  //MEDIUM RIGHT CURLY BRACKET ORNAMENT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   930
    { 0x2776, 0x2795, MLineBreaker::EAlLineBreakClass },  //dingbat negative circled digit one
662fa7de7023 201024_05
hgs
parents:
diff changeset
   931
    { 0x2798, 0x27b0, MLineBreaker::EAlLineBreakClass },  //heavy south east arrow
662fa7de7023 201024_05
hgs
parents:
diff changeset
   932
    { 0x27b1, 0x27bf, MLineBreaker::EAlLineBreakClass },  //notched upper right-shadowed white rightwards arrow
662fa7de7023 201024_05
hgs
parents:
diff changeset
   933
    { 0x27c0, 0x27c5, MLineBreaker::EAlLineBreakClass },  //THREE DIMENSIONAL ANGLE
662fa7de7023 201024_05
hgs
parents:
diff changeset
   934
    { 0x27c5, 0x27c6, MLineBreaker::EOpLineBreakClass },  //LEFT S-SHAPED BAG DELIMITER
662fa7de7023 201024_05
hgs
parents:
diff changeset
   935
    { 0x27c6, 0x27c7, MLineBreaker::EClLineBreakClass },  //RIGHT S-SHAPED BAG DELIMITER
662fa7de7023 201024_05
hgs
parents:
diff changeset
   936
    { 0x27c7, 0x27cb, MLineBreaker::EAlLineBreakClass },  //OR WITH DOT INSIDE
662fa7de7023 201024_05
hgs
parents:
diff changeset
   937
    { 0x27d0, 0x27e6, MLineBreaker::EAlLineBreakClass },  //WHITE DIAMOND WITH CENTRED DOT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   938
    { 0x27e6, 0x27e7, MLineBreaker::EOpLineBreakClass },  //MATHEMATICAL LEFT WHITE SQUARE BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   939
    { 0x27e7, 0x27e8, MLineBreaker::EClLineBreakClass },  //MATHEMATICAL RIGHT WHITE SQUARE BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   940
    { 0x27e8, 0x27e9, MLineBreaker::EOpLineBreakClass },  //MATHEMATICAL LEFT ANGLE BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   941
    { 0x27e9, 0x27ea, MLineBreaker::EClLineBreakClass },  //MATHEMATICAL RIGHT ANGLE BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   942
    { 0x27ea, 0x27eb, MLineBreaker::EOpLineBreakClass },  //MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   943
    { 0x27eb, 0x27ec, MLineBreaker::EClLineBreakClass },  //MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   944
    { 0x27f0, 0x2983, MLineBreaker::EAlLineBreakClass },  //UPWARDS QUADRUPLE ARROW
662fa7de7023 201024_05
hgs
parents:
diff changeset
   945
    { 0x2983, 0x2984, MLineBreaker::EOpLineBreakClass },  //LEFT WHITE CURLY BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   946
    { 0x2984, 0x2985, MLineBreaker::EClLineBreakClass },  //RIGHT WHITE CURLY BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   947
    { 0x2985, 0x2986, MLineBreaker::EOpLineBreakClass },  //LEFT WHITE PARENTHESIS
662fa7de7023 201024_05
hgs
parents:
diff changeset
   948
    { 0x2986, 0x2987, MLineBreaker::EClLineBreakClass },  //RIGHT WHITE PARENTHESIS
662fa7de7023 201024_05
hgs
parents:
diff changeset
   949
    { 0x2987, 0x2988, MLineBreaker::EOpLineBreakClass },  //Z NOTATION LEFT IMAGE BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   950
    { 0x2988, 0x2989, MLineBreaker::EClLineBreakClass },  //Z NOTATION RIGHT IMAGE BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   951
    { 0x2989, 0x298a, MLineBreaker::EOpLineBreakClass },  //Z NOTATION LEFT BINDING BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   952
    { 0x298a, 0x298b, MLineBreaker::EClLineBreakClass },  //Z NOTATION RIGHT BINDING BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   953
    { 0x298b, 0x298c, MLineBreaker::EOpLineBreakClass },  //LEFT SQUARE BRACKET WITH UNDERBAR
662fa7de7023 201024_05
hgs
parents:
diff changeset
   954
    { 0x298c, 0x298d, MLineBreaker::EClLineBreakClass },  //RIGHT SQUARE BRACKET WITH UNDERBAR
662fa7de7023 201024_05
hgs
parents:
diff changeset
   955
    { 0x298d, 0x298e, MLineBreaker::EOpLineBreakClass },  //LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
662fa7de7023 201024_05
hgs
parents:
diff changeset
   956
    { 0x298e, 0x298f, MLineBreaker::EClLineBreakClass },  //RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
662fa7de7023 201024_05
hgs
parents:
diff changeset
   957
    { 0x298f, 0x2990, MLineBreaker::EOpLineBreakClass },  //LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
662fa7de7023 201024_05
hgs
parents:
diff changeset
   958
    { 0x2990, 0x2991, MLineBreaker::EClLineBreakClass },  //RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
662fa7de7023 201024_05
hgs
parents:
diff changeset
   959
    { 0x2991, 0x2992, MLineBreaker::EOpLineBreakClass },  //LEFT ANGLE BRACKET WITH DOT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   960
    { 0x2992, 0x2993, MLineBreaker::EClLineBreakClass },  //RIGHT ANGLE BRACKET WITH DOT
662fa7de7023 201024_05
hgs
parents:
diff changeset
   961
    { 0x2993, 0x2994, MLineBreaker::EOpLineBreakClass },  //LEFT ARC LESS-THAN BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   962
    { 0x2994, 0x2995, MLineBreaker::EClLineBreakClass },  //RIGHT ARC GREATER-THAN BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   963
    { 0x2995, 0x2996, MLineBreaker::EOpLineBreakClass },  //DOUBLE LEFT ARC GREATER-THAN BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   964
    { 0x2996, 0x2997, MLineBreaker::EClLineBreakClass },  //DOUBLE RIGHT ARC LESS-THAN BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   965
    { 0x2997, 0x2998, MLineBreaker::EOpLineBreakClass },  //LEFT BLACK TORTOISE SHELL BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   966
    { 0x2998, 0x2999, MLineBreaker::EClLineBreakClass },  //RIGHT BLACK TORTOISE SHELL BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   967
    { 0x2999, 0x29d8, MLineBreaker::EAlLineBreakClass },  //DOTTED FENCE
662fa7de7023 201024_05
hgs
parents:
diff changeset
   968
    { 0x29d8, 0x29d9, MLineBreaker::EOpLineBreakClass },  //LEFT WIGGLY FENCE
662fa7de7023 201024_05
hgs
parents:
diff changeset
   969
    { 0x29d9, 0x29da, MLineBreaker::EClLineBreakClass },  //RIGHT WIGGLY FENCE
662fa7de7023 201024_05
hgs
parents:
diff changeset
   970
    { 0x29da, 0x29db, MLineBreaker::EOpLineBreakClass },  //LEFT DOUBLE WIGGLY FENCE
662fa7de7023 201024_05
hgs
parents:
diff changeset
   971
    { 0x29db, 0x29dc, MLineBreaker::EClLineBreakClass },  //RIGHT DOUBLE WIGGLY FENCE
662fa7de7023 201024_05
hgs
parents:
diff changeset
   972
    { 0x29dc, 0x29fc, MLineBreaker::EAlLineBreakClass },  //INCOMPLETE INFINITY
662fa7de7023 201024_05
hgs
parents:
diff changeset
   973
    { 0x29fc, 0x29fd, MLineBreaker::EOpLineBreakClass },  //LEFT-POINTING CURVED ANGLE BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   974
    { 0x29fd, 0x29fe, MLineBreaker::EClLineBreakClass },  //RIGHT-POINTING CURVED ANGLE BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
   975
    { 0x29fe, 0x2b1b, MLineBreaker::EAlLineBreakClass },  //TINY
662fa7de7023 201024_05
hgs
parents:
diff changeset
   976
    { 0x2b20, 0x2b24, MLineBreaker::EAlLineBreakClass },  //WHITE PENTAGON
662fa7de7023 201024_05
hgs
parents:
diff changeset
   977
    { 0x2c00, 0x2c2f, MLineBreaker::EAlLineBreakClass },  //GLAGOLITIC CAPITAL LETTER AZU
662fa7de7023 201024_05
hgs
parents:
diff changeset
   978
    { 0x2c30, 0x2c5f, MLineBreaker::EAlLineBreakClass },  //GLAGOLITIC SMALL LETTER AZU
662fa7de7023 201024_05
hgs
parents:
diff changeset
   979
    { 0x2c60, 0x2c6d, MLineBreaker::EAlLineBreakClass },  //LATIN CAPITAL LETTER L WITH DOUBLE BAR
662fa7de7023 201024_05
hgs
parents:
diff changeset
   980
    { 0x2c74, 0x2c78, MLineBreaker::EAlLineBreakClass },  //LATIN SMALL LETTER V WITH CURL
662fa7de7023 201024_05
hgs
parents:
diff changeset
   981
    { 0x2c80, 0x2ceb, MLineBreaker::EAlLineBreakClass },  //COPTIC CAPITAL LETTER ALFA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   982
    { 0x2cf9, 0x2cfd, MLineBreaker::EBaLineBreakClass },  //COPTIC OLD NUBIAN FULL STOP
662fa7de7023 201024_05
hgs
parents:
diff changeset
   983
    { 0x2cfd, 0x2cfe, MLineBreaker::EAlLineBreakClass },  //COPTIC FRACTION ONE HALF
662fa7de7023 201024_05
hgs
parents:
diff changeset
   984
    { 0x2cfe, 0x2d00, MLineBreaker::EBaLineBreakClass },  //COPTIC FULL STOP
662fa7de7023 201024_05
hgs
parents:
diff changeset
   985
    { 0x2d00, 0x2d26, MLineBreaker::EAlLineBreakClass },  //GEORGIAN SMALL LETTER AN
662fa7de7023 201024_05
hgs
parents:
diff changeset
   986
    { 0x2d30, 0x2d66, MLineBreaker::EAlLineBreakClass },  //TIFINAGH LETTER YA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   987
    { 0x2d6f, 0x2d70, MLineBreaker::EAlLineBreakClass },  //TIFINAGH MODIFIER LETTER LABIALIZATION MARK
662fa7de7023 201024_05
hgs
parents:
diff changeset
   988
    { 0x2d80, 0x2d97, MLineBreaker::EAlLineBreakClass },  //ETHIOPIC SYLLABLE LOA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   989
    { 0x2da0, 0x2da7, MLineBreaker::EAlLineBreakClass },  //ETHIOPIC SYLLABLE SSA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   990
    { 0x2da8, 0x2daf, MLineBreaker::EAlLineBreakClass },  //ETHIOPIC SYLLABLE CCA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   991
    { 0x2db0, 0x2db7, MLineBreaker::EAlLineBreakClass },  //ETHIOPIC SYLLABLE ZZA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   992
    { 0x2db8, 0x2dbf, MLineBreaker::EAlLineBreakClass },  //ETHIOPIC SYLLABLE CCHA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   993
    { 0x2dc0, 0x2dc7, MLineBreaker::EAlLineBreakClass },  //ETHIOPIC SYLLABLE QYA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   994
    { 0x2dc8, 0x2dcf, MLineBreaker::EAlLineBreakClass },  //ETHIOPIC SYLLABLE KYA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   995
    { 0x2dd0, 0x2dd7, MLineBreaker::EAlLineBreakClass },  //ETHIOPIC SYLLABLE XYA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   996
    { 0x2dd8, 0x2ddf, MLineBreaker::EAlLineBreakClass },  //ETHIOPIC SYLLABLE GYA
662fa7de7023 201024_05
hgs
parents:
diff changeset
   997
    { 0x2e00, 0x2e0e, MLineBreaker::EQuLineBreakClass },  //RIGHT ANGLE SUBSTITUTION MARKER
662fa7de7023 201024_05
hgs
parents:
diff changeset
   998
    { 0x2e0e, 0x2e16, MLineBreaker::EBaLineBreakClass },  //EDITORIAL CORONIS
662fa7de7023 201024_05
hgs
parents:
diff changeset
   999
    { 0x2e16, 0x2e17, MLineBreaker::EAlLineBreakClass },  //DOTTED RIGHT-POINTING ANGLE
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1000
    { 0x2e17, 0x2e18, MLineBreaker::EBaLineBreakClass },  //DOUBLE OBLIQUE HYPHEN
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1001
    { 0x2e1c, 0x2e1e, MLineBreaker::EQuLineBreakClass },  //LEFT LOW PARAPHRASE BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1002
    { 0x2e80, 0x2e9a, MLineBreaker::EIdLineBreakClass },  //cjk radical repeat
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1003
    { 0x2e9b, 0x2ef4, MLineBreaker::EIdLineBreakClass },  //cjk radical choke
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1004
    { 0x2f00, 0x2fd6, MLineBreaker::EIdLineBreakClass },  //kangxi radical one
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1005
    { 0x2ff0, 0x2ffc, MLineBreaker::EIdLineBreakClass },  //ideographic description character left to right
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1006
    { 0x3000, 0x3001, MLineBreaker::EIdLineBreakClass },  //ideographic space
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1007
    { 0x3001, 0x3003, MLineBreaker::EClLineBreakClass },  //ideographic comma
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1008
    { 0x3003, 0x3005, MLineBreaker::EIdLineBreakClass },  //ditto mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1009
    { 0x3005, 0x3006, MLineBreaker::ENsLineBreakClass },  //ideographic iteration mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1010
    { 0x3006, 0x3008, MLineBreaker::EIdLineBreakClass },  //ideographic closing mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1011
    { 0x3008, 0x3009, MLineBreaker::EOpLineBreakClass },  //left angle bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1012
    { 0x3009, 0x300a, MLineBreaker::EClLineBreakClass },  //right angle bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1013
    { 0x300a, 0x300b, MLineBreaker::EOpLineBreakClass },  //left double angle bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1014
    { 0x300b, 0x300c, MLineBreaker::EClLineBreakClass },  //right double angle bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1015
    { 0x300c, 0x300d, MLineBreaker::EOpLineBreakClass },  //left corner bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1016
    { 0x300d, 0x300e, MLineBreaker::EClLineBreakClass },  //right corner bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1017
    { 0x300e, 0x300f, MLineBreaker::EOpLineBreakClass },  //left white corner bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1018
    { 0x300f, 0x3010, MLineBreaker::EClLineBreakClass },  //right white corner bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1019
    { 0x3010, 0x3011, MLineBreaker::EOpLineBreakClass },  //left black lenticular bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1020
    { 0x3011, 0x3012, MLineBreaker::EClLineBreakClass },  //right black lenticular bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1021
    { 0x3012, 0x3014, MLineBreaker::EIdLineBreakClass },  //postal mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1022
    { 0x3014, 0x3015, MLineBreaker::EOpLineBreakClass },  //left tortoise shell bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1023
    { 0x3015, 0x3016, MLineBreaker::EClLineBreakClass },  //right tortoise shell bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1024
    { 0x3016, 0x3017, MLineBreaker::EOpLineBreakClass },  //left white lenticular bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1025
    { 0x3017, 0x3018, MLineBreaker::EClLineBreakClass },  //right white lenticular bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1026
    { 0x3018, 0x3019, MLineBreaker::EOpLineBreakClass },  //left white tortoise shell bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1027
    { 0x3019, 0x301a, MLineBreaker::EClLineBreakClass },  //right white tortoise shell bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1028
    { 0x301a, 0x301b, MLineBreaker::EOpLineBreakClass },  //left white square bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1029
    { 0x301b, 0x301c, MLineBreaker::EClLineBreakClass },  //right white square bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1030
    { 0x301c, 0x301d, MLineBreaker::ENsLineBreakClass },  //wave dash
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1031
    { 0x301d, 0x301e, MLineBreaker::EOpLineBreakClass },  //reversed double prime quotation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1032
    { 0x301e, 0x3020, MLineBreaker::EClLineBreakClass },  //double prime quotation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1033
    { 0x3020, 0x302a, MLineBreaker::EIdLineBreakClass },  //postal mark face
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1034
    { 0x302a, 0x3030, MLineBreaker::ECmLineBreakClass },  //ideographic level tone mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1035
    { 0x3030, 0x303b, MLineBreaker::EIdLineBreakClass },  //wavy dash
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1036
    { 0x303b, 0x303d, MLineBreaker::ENsLineBreakClass },  //VERTICAL IDEOGRAPHIC ITERATION MARK
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1037
    { 0x303d, 0x3040, MLineBreaker::EIdLineBreakClass },  //PART ALTERNATION MARK
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1038
    { 0x3041, 0x3042, MLineBreaker::ENsLineBreakClass },  //hiragana letter small a
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1039
    { 0x3042, 0x3043, MLineBreaker::EIdLineBreakClass },  //hiragana letter a
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1040
    { 0x3043, 0x3044, MLineBreaker::ENsLineBreakClass },  //hiragana letter small i
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1041
    { 0x3044, 0x3045, MLineBreaker::EIdLineBreakClass },  //hiragana letter i
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1042
    { 0x3045, 0x3046, MLineBreaker::ENsLineBreakClass },  //hiragana letter small u
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1043
    { 0x3046, 0x3047, MLineBreaker::EIdLineBreakClass },  //hiragana letter u
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1044
    { 0x3047, 0x3048, MLineBreaker::ENsLineBreakClass },  //hiragana letter small e
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1045
    { 0x3048, 0x3049, MLineBreaker::EIdLineBreakClass },  //hiragana letter e
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1046
    { 0x3049, 0x304a, MLineBreaker::ENsLineBreakClass },  //hiragana letter small o
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1047
    { 0x304a, 0x3063, MLineBreaker::EIdLineBreakClass },  //hiragana letter o
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1048
    { 0x3063, 0x3064, MLineBreaker::ENsLineBreakClass },  //hiragana letter small tu
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1049
    { 0x3064, 0x3083, MLineBreaker::EIdLineBreakClass },  //hiragana letter tu
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1050
    { 0x3083, 0x3084, MLineBreaker::ENsLineBreakClass },  //hiragana letter small ya
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1051
    { 0x3084, 0x3085, MLineBreaker::EIdLineBreakClass },  //hiragana letter ya
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1052
    { 0x3085, 0x3086, MLineBreaker::ENsLineBreakClass },  //hiragana letter small yu
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1053
    { 0x3086, 0x3087, MLineBreaker::EIdLineBreakClass },  //hiragana letter yu
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1054
    { 0x3087, 0x3088, MLineBreaker::ENsLineBreakClass },  //hiragana letter small yo
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1055
    { 0x3088, 0x308e, MLineBreaker::EIdLineBreakClass },  //hiragana letter yo
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1056
    { 0x308e, 0x308f, MLineBreaker::ENsLineBreakClass },  //hiragana letter small wa
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1057
    { 0x308f, 0x3095, MLineBreaker::EIdLineBreakClass },  //hiragana letter wa
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1058
    { 0x3095, 0x3097, MLineBreaker::ENsLineBreakClass },  //HIRAGANA LETTER SMALL KA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1059
    { 0x3099, 0x309b, MLineBreaker::ECmLineBreakClass },  //combining katakana-hiragana voiced sound mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1060
    { 0x309b, 0x309f, MLineBreaker::ENsLineBreakClass },  //katakana-hiragana voiced sound mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1061
    { 0x309f, 0x30a0, MLineBreaker::EIdLineBreakClass },  //HIRAGANA DIGRAPH YORI
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1062
    { 0x30a0, 0x30a1, MLineBreaker::ENsLineBreakClass },  //KATAKANA-HIRAGANA DOUBLE HYPHEN
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1063
    { 0x30a1, 0x30a2, MLineBreaker::ENsLineBreakClass },  //katakana letter small a
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1064
    { 0x30a2, 0x30a3, MLineBreaker::EIdLineBreakClass },  //katakana letter a
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1065
    { 0x30a3, 0x30a4, MLineBreaker::ENsLineBreakClass },  //katakana letter small i
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1066
    { 0x30a4, 0x30a5, MLineBreaker::EIdLineBreakClass },  //katakana letter i
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1067
    { 0x30a5, 0x30a6, MLineBreaker::ENsLineBreakClass },  //katakana letter small u
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1068
    { 0x30a6, 0x30a7, MLineBreaker::EIdLineBreakClass },  //katakana letter u
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1069
    { 0x30a7, 0x30a8, MLineBreaker::ENsLineBreakClass },  //katakana letter small e
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1070
    { 0x30a8, 0x30a9, MLineBreaker::EIdLineBreakClass },  //katakana letter e
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1071
    { 0x30a9, 0x30aa, MLineBreaker::ENsLineBreakClass },  //katakana letter small o
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1072
    { 0x30aa, 0x30c3, MLineBreaker::EIdLineBreakClass },  //katakana letter o
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1073
    { 0x30c3, 0x30c4, MLineBreaker::ENsLineBreakClass },  //katakana letter small tu
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1074
    { 0x30c4, 0x30e3, MLineBreaker::EIdLineBreakClass },  //katakana letter tu
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1075
    { 0x30e3, 0x30e4, MLineBreaker::ENsLineBreakClass },  //katakana letter small ya
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1076
    { 0x30e4, 0x30e5, MLineBreaker::EIdLineBreakClass },  //katakana letter ya
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1077
    { 0x30e5, 0x30e6, MLineBreaker::ENsLineBreakClass },  //katakana letter small yu
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1078
    { 0x30e6, 0x30e7, MLineBreaker::EIdLineBreakClass },  //katakana letter yu
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1079
    { 0x30e7, 0x30e8, MLineBreaker::ENsLineBreakClass },  //katakana letter small yo
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1080
    { 0x30e8, 0x30ee, MLineBreaker::EIdLineBreakClass },  //katakana letter yo
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1081
    { 0x30ee, 0x30ef, MLineBreaker::ENsLineBreakClass },  //katakana letter small wa
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1082
    { 0x30ef, 0x30f5, MLineBreaker::EIdLineBreakClass },  //katakana letter wa
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1083
    { 0x30f5, 0x30f7, MLineBreaker::ENsLineBreakClass },  //katakana letter small ka
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1084
    { 0x30f7, 0x30fb, MLineBreaker::EIdLineBreakClass },  //katakana letter va
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1085
    { 0x30fb, 0x30fc, MLineBreaker::ENsLineBreakClass },  //katakana middle dot
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1086
    { 0x30fc, 0x30fd, MLineBreaker::EIdLineBreakClass },  //katakana-hiragana prolonged sound mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1087
    { 0x30fd, 0x30fe, MLineBreaker::ENsLineBreakClass },  //katakana iteration mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1088
    { 0x30fe, 0x30ff, MLineBreaker::EIdLineBreakClass },  //katakana voiced iteration mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1089
    { 0x30ff, 0x3100, MLineBreaker::EIdLineBreakClass },  //KATAKANA DIGRAPH KOTO
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1090
    { 0x3105, 0x312d, MLineBreaker::EIdLineBreakClass },  //bopomofo letter b
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1091
    { 0x3131, 0x318f, MLineBreaker::EIdLineBreakClass },  //hangul letter kiyeok
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1092
    { 0x3190, 0x31b8, MLineBreaker::EIdLineBreakClass },  //ideographic annotation linking mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1093
    { 0x31c0, 0x31d0, MLineBreaker::EIdLineBreakClass },  //CJK STROKE T
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1094
    { 0x31f0, 0x3200, MLineBreaker::ENsLineBreakClass },  //KATAKANA LETTER SMALL KU
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1095
    { 0x3200, 0x321f, MLineBreaker::EIdLineBreakClass },  //parenthesized hangul kiyeok
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1096
    { 0x3220, 0x3244, MLineBreaker::EIdLineBreakClass },  //parenthesized ideograph one
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1097
    { 0x3250, 0x32ff, MLineBreaker::EIdLineBreakClass },  //PARTNERSHIP SIGN
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1098
    { 0x3300, 0x4db6, MLineBreaker::EIdLineBreakClass },  //square apaato
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1099
    { 0x4dc0, 0x4e00, MLineBreaker::EAlLineBreakClass },  //HEXAGRAM FOR THE CREATIVE HEAVEN
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1100
    { 0x4e00, 0x9fbb, MLineBreaker::EIdLineBreakClass },  //<cjk ideograph,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1101
    { 0xa000, 0xa48d, MLineBreaker::EIdLineBreakClass },  //yi syllable it
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1102
    { 0xa490, 0xa4c6, MLineBreaker::EIdLineBreakClass },  //yi radical qot
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1103
    { 0xa4c6, 0xa4c7, MLineBreaker::EIdLineBreakClass },  //yi radical ke
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1104
    { 0xa700, 0xa71b, MLineBreaker::EAlLineBreakClass },  //MODIFIER LETTER CHINESE TONE YIN PING
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1105
    { 0xa720, 0xa722, MLineBreaker::EAlLineBreakClass },  //MODIFIER LETTER STRESS AND HIGH TONE
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1106
    { 0xa800, 0xa802, MLineBreaker::EAlLineBreakClass },  //SYLOTI NAGRI LETTER A
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1107
    { 0xa802, 0xa803, MLineBreaker::ECmLineBreakClass },  //SYLOTI NAGRI SIGN DVISVARA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1108
    { 0xa803, 0xa806, MLineBreaker::EAlLineBreakClass },  //SYLOTI NAGRI LETTER U
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1109
    { 0xa806, 0xa807, MLineBreaker::ECmLineBreakClass },  //SYLOTI NAGRI SIGN HASANTA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1110
    { 0xa807, 0xa80b, MLineBreaker::EAlLineBreakClass },  //SYLOTI NAGRI LETTER KO
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1111
    { 0xa80b, 0xa80c, MLineBreaker::ECmLineBreakClass },  //SYLOTI NAGRI SIGN ANUSVARA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1112
    { 0xa80c, 0xa823, MLineBreaker::EAlLineBreakClass },  //SYLOTI NAGRI LETTER CO
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1113
    { 0xa823, 0xa828, MLineBreaker::ECmLineBreakClass },  //SYLOTI NAGRI VOWEL SIGN A
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1114
    { 0xa828, 0xa82c, MLineBreaker::EAlLineBreakClass },  //SYLOTI NAGRI POETRY MARK-1
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1115
    { 0xa840, 0xa874, MLineBreaker::EAlLineBreakClass },  //PHAGS-PA LETTER KA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1116
    { 0xa874, 0xa876, MLineBreaker::EBbLineBreakClass },  //PHAGS-PA SINGLE HEAD MARK
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1117
    { 0xa876, 0xa878, MLineBreaker::EExLineBreakClass },  //PHAGS-PA MARK SHAD
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1118
    { 0xac00, 0xd7a4, MLineBreaker::EIdLineBreakClass },  //<hangul syllable,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1119
    { 0xd800, 0xe000, MLineBreaker::ESgLineBreakClass },  //<non private use high surrogate,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1120
    { 0xe000, 0xf900, MLineBreaker::EAiLineBreakClass },  //<private use,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1121
    { 0xf900, 0xfa2e, MLineBreaker::EIdLineBreakClass },  //cjk compatibility ideograph-f900
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1122
    { 0xfa30, 0xfa6b, MLineBreaker::EIdLineBreakClass },  //CJK COMPATIBILITY IDEOGRAPH-FA30
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1123
    { 0xfa70, 0xfada, MLineBreaker::EIdLineBreakClass },  //CJK COMPATIBILITY IDEOGRAPH-FA70
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1124
    { 0xfb00, 0xfb07, MLineBreaker::EAlLineBreakClass },  //latin small ligature ff
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1125
    { 0xfb13, 0xfb18, MLineBreaker::EAlLineBreakClass },  //armenian small ligature men now
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1126
    { 0xfb1d, 0xfb1e, MLineBreaker::EAlLineBreakClass },  //hebrew letter yod with hiriq
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1127
    { 0xfb1e, 0xfb1f, MLineBreaker::ECmLineBreakClass },  //hebrew point judeo-spanish varika
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1128
    { 0xfb1f, 0xfb37, MLineBreaker::EAlLineBreakClass },  //hebrew ligature yiddish yod yod patah
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1129
    { 0xfb38, 0xfb3d, MLineBreaker::EAlLineBreakClass },  //hebrew letter tet with dagesh
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1130
    { 0xfb3e, 0xfb3f, MLineBreaker::EAlLineBreakClass },  //hebrew letter mem with dagesh
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1131
    { 0xfb40, 0xfb42, MLineBreaker::EAlLineBreakClass },  //hebrew letter nun with dagesh
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1132
    { 0xfb43, 0xfb45, MLineBreaker::EAlLineBreakClass },  //hebrew letter final pe with dagesh
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1133
    { 0xfb46, 0xfbb2, MLineBreaker::EAlLineBreakClass },  //hebrew letter tsadi with dagesh
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1134
    { 0xfbd3, 0xfd3e, MLineBreaker::EAlLineBreakClass },  //arabic letter ng isolated form
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1135
    { 0xfd3e, 0xfd3f, MLineBreaker::EOpLineBreakClass },  //ornate left parenthesis
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1136
    { 0xfd3f, 0xfd40, MLineBreaker::EClLineBreakClass },  //ornate right parenthesis
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1137
    { 0xfd50, 0xfd90, MLineBreaker::EAlLineBreakClass },  //arabic ligature teh with jeem with meem initial form
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1138
    { 0xfd92, 0xfdc8, MLineBreaker::EAlLineBreakClass },  //arabic ligature meem with jeem with khah initial form
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1139
    { 0xfdf0, 0xfdfc, MLineBreaker::EAlLineBreakClass },  //arabic ligature salla used as koranic stop sign isolated form
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1140
    { 0xfdfc, 0xfdfd, MLineBreaker::EPoLineBreakClass },  //RIAL SIGN
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1141
    { 0xfdfd, 0xfdfe, MLineBreaker::EAlLineBreakClass },  //ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1142
    { 0xfe00, 0xfe10, MLineBreaker::ECmLineBreakClass },  //VARIATION SELECTOR-1
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1143
    { 0xfe10, 0xfe11, MLineBreaker::EIsLineBreakClass },  //PRESENTATION FORM FOR VERTICAL COMMA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1144
    { 0xfe11, 0xfe13, MLineBreaker::EClLineBreakClass },  //PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1145
    { 0xfe13, 0xfe15, MLineBreaker::EIsLineBreakClass },  //PRESENTATION FORM FOR VERTICAL COLON
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1146
    { 0xfe15, 0xfe17, MLineBreaker::EExLineBreakClass },  //PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1147
    { 0xfe17, 0xfe18, MLineBreaker::EOpLineBreakClass },  //PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1148
    { 0xfe18, 0xfe19, MLineBreaker::EClLineBreakClass },  //PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1149
    { 0xfe19, 0xfe1a, MLineBreaker::EInLineBreakClass },  //PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1150
    { 0xfe20, 0xfe24, MLineBreaker::ECmLineBreakClass },  //combining ligature left half
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1151
    { 0xfe30, 0xfe35, MLineBreaker::EIdLineBreakClass },  //presentation form for vertical two dot leader
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1152
    { 0xfe35, 0xfe36, MLineBreaker::EOpLineBreakClass },  //presentation form for vertical left parenthesis
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1153
    { 0xfe36, 0xfe37, MLineBreaker::EClLineBreakClass },  //presentation form for vertical right parenthesis
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1154
    { 0xfe37, 0xfe38, MLineBreaker::EOpLineBreakClass },  //presentation form for vertical left curly bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1155
    { 0xfe38, 0xfe39, MLineBreaker::EClLineBreakClass },  //presentation form for vertical right curly bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1156
    { 0xfe39, 0xfe3a, MLineBreaker::EOpLineBreakClass },  //presentation form for vertical left tortoise shell bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1157
    { 0xfe3a, 0xfe3b, MLineBreaker::EClLineBreakClass },  //presentation form for vertical right tortoise shell bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1158
    { 0xfe3b, 0xfe3c, MLineBreaker::EOpLineBreakClass },  //presentation form for vertical left black lenticular bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1159
    { 0xfe3c, 0xfe3d, MLineBreaker::EClLineBreakClass },  //presentation form for vertical right black lenticular bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1160
    { 0xfe3d, 0xfe3e, MLineBreaker::EOpLineBreakClass },  //presentation form for vertical left double angle bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1161
    { 0xfe3e, 0xfe3f, MLineBreaker::EClLineBreakClass },  //presentation form for vertical right double angle bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1162
    { 0xfe3f, 0xfe40, MLineBreaker::EOpLineBreakClass },  //presentation form for vertical left angle bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1163
    { 0xfe40, 0xfe41, MLineBreaker::EClLineBreakClass },  //presentation form for vertical right angle bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1164
    { 0xfe41, 0xfe42, MLineBreaker::EOpLineBreakClass },  //presentation form for vertical left corner bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1165
    { 0xfe42, 0xfe43, MLineBreaker::EClLineBreakClass },  //presentation form for vertical right corner bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1166
    { 0xfe43, 0xfe44, MLineBreaker::EOpLineBreakClass },  //presentation form for vertical left white corner bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1167
    { 0xfe44, 0xfe45, MLineBreaker::EClLineBreakClass },  //presentation form for vertical right white corner bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1168
    { 0xfe45, 0xfe47, MLineBreaker::EIdLineBreakClass },  //SESAME DOT
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1169
    { 0xfe47, 0xfe48, MLineBreaker::EOpLineBreakClass },  //PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1170
    { 0xfe48, 0xfe49, MLineBreaker::EClLineBreakClass },  //PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1171
    { 0xfe49, 0xfe50, MLineBreaker::EIdLineBreakClass },  //dashed overline
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1172
    { 0xfe50, 0xfe51, MLineBreaker::EClLineBreakClass },  //small comma
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1173
    { 0xfe51, 0xfe52, MLineBreaker::EIdLineBreakClass },  //small ideographic comma
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1174
    { 0xfe52, 0xfe53, MLineBreaker::EClLineBreakClass },  //small full stop
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1175
    { 0xfe54, 0xfe56, MLineBreaker::ENsLineBreakClass },  //small semicolon
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1176
    { 0xfe56, 0xfe58, MLineBreaker::EExLineBreakClass },  //small question mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1177
    { 0xfe58, 0xfe59, MLineBreaker::EIdLineBreakClass },  //small em dash
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1178
    { 0xfe59, 0xfe5a, MLineBreaker::EOpLineBreakClass },  //small left parenthesis
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1179
    { 0xfe5a, 0xfe5b, MLineBreaker::EClLineBreakClass },  //small right parenthesis
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1180
    { 0xfe5b, 0xfe5c, MLineBreaker::EOpLineBreakClass },  //small left curly bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1181
    { 0xfe5c, 0xfe5d, MLineBreaker::EClLineBreakClass },  //small right curly bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1182
    { 0xfe5d, 0xfe5e, MLineBreaker::EOpLineBreakClass },  //small left tortoise shell bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1183
    { 0xfe5e, 0xfe5f, MLineBreaker::EClLineBreakClass },  //small right tortoise shell bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1184
    { 0xfe5f, 0xfe67, MLineBreaker::EIdLineBreakClass },  //small number sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1185
    { 0xfe68, 0xfe69, MLineBreaker::EIdLineBreakClass },  //small reverse solidus
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1186
    { 0xfe69, 0xfe6a, MLineBreaker::EPrLineBreakClass },  //small dollar sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1187
    { 0xfe6a, 0xfe6b, MLineBreaker::EPoLineBreakClass },  //small percent sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1188
    { 0xfe6b, 0xfe6c, MLineBreaker::EAlLineBreakClass },  //small commercial at
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1189
    { 0xfe70, 0xfe74, MLineBreaker::EAlLineBreakClass },  //arabic fathatan isolated form
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1190
    { 0xfe74, 0xfe75, MLineBreaker::EAlLineBreakClass },  //arabic kasratan isolated form
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1191
    { 0xfe76, 0xfefd, MLineBreaker::EAlLineBreakClass },  //arabic fatha isolated form
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1192
    { 0xfeff, 0xff00, MLineBreaker::EGlLineBreakClass },  //zero width no-break space
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1193
    { 0xff01, 0xff02, MLineBreaker::EExLineBreakClass },  //fullwidth exclamation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1194
    { 0xff02, 0xff04, MLineBreaker::EIdLineBreakClass },  //fullwidth quotation mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1195
    { 0xff04, 0xff05, MLineBreaker::EPrLineBreakClass },  //fullwidth dollar sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1196
    { 0xff05, 0xff06, MLineBreaker::EPoLineBreakClass },  //fullwidth percent sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1197
    { 0xff06, 0xff08, MLineBreaker::EIdLineBreakClass },  //fullwidth ampersand
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1198
    { 0xff08, 0xff09, MLineBreaker::EOpLineBreakClass },  //fullwidth left parenthesis
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1199
    { 0xff09, 0xff0a, MLineBreaker::EClLineBreakClass },  //fullwidth right parenthesis
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1200
    { 0xff0a, 0xff0c, MLineBreaker::EIdLineBreakClass },  //fullwidth asterisk
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1201
    { 0xff0c, 0xff0d, MLineBreaker::EClLineBreakClass },  //fullwidth comma
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1202
    { 0xff0d, 0xff0e, MLineBreaker::EIdLineBreakClass },  //fullwidth hyphen-minus
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1203
    { 0xff0e, 0xff0f, MLineBreaker::EClLineBreakClass },  //fullwidth full stop
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1204
    { 0xff0f, 0xff1a, MLineBreaker::EIdLineBreakClass },  //fullwidth solidus
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1205
    { 0xff1a, 0xff1c, MLineBreaker::ENsLineBreakClass },  //fullwidth colon
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1206
    { 0xff1c, 0xff1f, MLineBreaker::EIdLineBreakClass },  //fullwidth less-than sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1207
    { 0xff1f, 0xff20, MLineBreaker::EExLineBreakClass },  //fullwidth question mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1208
    { 0xff20, 0xff3b, MLineBreaker::EIdLineBreakClass },  //fullwidth commercial at
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1209
    { 0xff3b, 0xff3c, MLineBreaker::EOpLineBreakClass },  //fullwidth left square bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1210
    { 0xff3c, 0xff3d, MLineBreaker::EIdLineBreakClass },  //fullwidth reverse solidus
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1211
    { 0xff3d, 0xff3e, MLineBreaker::EClLineBreakClass },  //fullwidth right square bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1212
    { 0xff3e, 0xff5b, MLineBreaker::EIdLineBreakClass },  //fullwidth circumflex accent
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1213
    { 0xff5b, 0xff5c, MLineBreaker::EOpLineBreakClass },  //fullwidth left curly bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1214
    { 0xff5c, 0xff5d, MLineBreaker::EIdLineBreakClass },  //fullwidth vertical line
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1215
    { 0xff5d, 0xff5e, MLineBreaker::EClLineBreakClass },  //fullwidth right curly bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1216
    { 0xff5e, 0xff5f, MLineBreaker::EIdLineBreakClass },  //fullwidth tilde
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1217
    { 0xff5f, 0xff60, MLineBreaker::EOpLineBreakClass },  //FULLWIDTH LEFT WHITE PARENTHESIS
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1218
    { 0xff60, 0xff61, MLineBreaker::EClLineBreakClass },  //FULLWIDTH RIGHT WHITE PARENTHESIS
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1219
    { 0xff61, 0xff62, MLineBreaker::EClLineBreakClass },  //halfwidth ideographic full stop
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1220
    { 0xff62, 0xff63, MLineBreaker::EOpLineBreakClass },  //halfwidth left corner bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1221
    { 0xff63, 0xff65, MLineBreaker::EClLineBreakClass },  //halfwidth right corner bracket
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1222
    { 0xff65, 0xff66, MLineBreaker::ENsLineBreakClass },  //halfwidth katakana middle dot
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1223
    { 0xff66, 0xff67, MLineBreaker::EAlLineBreakClass },  //halfwidth katakana letter wo
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1224
    { 0xff67, 0xff71, MLineBreaker::ENsLineBreakClass },  //halfwidth katakana letter small a
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1225
    { 0xff71, 0xff9e, MLineBreaker::EAlLineBreakClass },  //halfwidth katakana letter a
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1226
    { 0xff9e, 0xffa0, MLineBreaker::ENsLineBreakClass },  //halfwidth katakana voiced sound mark
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1227
    { 0xffa0, 0xffbf, MLineBreaker::EAlLineBreakClass },  //halfwidth hangul filler
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1228
    { 0xffc2, 0xffc8, MLineBreaker::EAlLineBreakClass },  //halfwidth hangul letter a
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1229
    { 0xffca, 0xffd0, MLineBreaker::EAlLineBreakClass },  //halfwidth hangul letter yeo
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1230
    { 0xffd2, 0xffd8, MLineBreaker::EAlLineBreakClass },  //halfwidth hangul letter yo
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1231
    { 0xffda, 0xffdd, MLineBreaker::EAlLineBreakClass },  //halfwidth hangul letter eu
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1232
    { 0xffe0, 0xffe1, MLineBreaker::EPoLineBreakClass },  //fullwidth cent sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1233
    { 0xffe1, 0xffe2, MLineBreaker::EPrLineBreakClass },  //fullwidth pound sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1234
    { 0xffe2, 0xffe5, MLineBreaker::EIdLineBreakClass },  //fullwidth not sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1235
    { 0xffe5, 0xffe7, MLineBreaker::EPrLineBreakClass },  //fullwidth yen sign
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1236
    { 0xffe8, 0xffef, MLineBreaker::EAlLineBreakClass },  //halfwidth forms light vertical
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1237
    { 0xfff9, 0xfffc, MLineBreaker::ECmLineBreakClass },  //interlinear annotation anchor
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1238
    { 0xfffc, 0xfffd, MLineBreaker::ECbLineBreakClass },  //object replacement character
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1239
    { 0xfffd, 0xfffe, MLineBreaker::EAiLineBreakClass },  //replacement character
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1240
    { 0x10000, 0x1000c, MLineBreaker::EAlLineBreakClass },  //LINEAR B SYLLABLE B008 A
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1241
    { 0x1000d, 0x10027, MLineBreaker::EAlLineBreakClass },  //LINEAR B SYLLABLE B036 JO
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1242
    { 0x10028, 0x1003b, MLineBreaker::EAlLineBreakClass },  //LINEAR B SYLLABLE B060 RA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1243
    { 0x1003c, 0x1003e, MLineBreaker::EAlLineBreakClass },  //LINEAR B SYLLABLE B017 ZA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1244
    { 0x1003f, 0x1004e, MLineBreaker::EAlLineBreakClass },  //LINEAR B SYLLABLE B020 ZO
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1245
    { 0x10050, 0x1005e, MLineBreaker::EAlLineBreakClass },  //LINEAR B SYMBOL B018
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1246
    { 0x10080, 0x100fb, MLineBreaker::EAlLineBreakClass },  //LINEAR B IDEOGRAM B100 MAN
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1247
    { 0x10100, 0x10103, MLineBreaker::EBaLineBreakClass },  //AEGEAN WORD SEPARATOR LINE
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1248
    { 0x10107, 0x10134, MLineBreaker::EAlLineBreakClass },  //AEGEAN NUMBER ONE
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1249
    { 0x10137, 0x1018b, MLineBreaker::EAlLineBreakClass },  //AEGEAN WEIGHT BASE UNIT
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1250
    { 0x10300, 0x1031f, MLineBreaker::EAlLineBreakClass },  //OLD ITALIC LETTER A
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1251
    { 0x10320, 0x10324, MLineBreaker::EAlLineBreakClass },  //OLD ITALIC NUMERAL ONE
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1252
    { 0x10330, 0x1034b, MLineBreaker::EAlLineBreakClass },  //GOTHIC LETTER AHSA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1253
    { 0x10380, 0x1039e, MLineBreaker::EAlLineBreakClass },  //UGARITIC LETTER ALPA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1254
    { 0x1039f, 0x103a0, MLineBreaker::EBaLineBreakClass },  //UGARITIC WORD DIVIDER
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1255
    { 0x103a0, 0x103c4, MLineBreaker::EAlLineBreakClass },  //OLD PERSIAN SIGN A
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1256
    { 0x103c8, 0x103d0, MLineBreaker::EAlLineBreakClass },  //OLD PERSIAN SIGN AURAMAZDAA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1257
    { 0x103d0, 0x103d1, MLineBreaker::EBaLineBreakClass },  //OLD PERSIAN WORD DIVIDER
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1258
    { 0x103d1, 0x103d6, MLineBreaker::EAlLineBreakClass },  //OLD PERSIAN NUMBER ONE
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1259
    { 0x10400, 0x1049e, MLineBreaker::EAlLineBreakClass },  //DESERET CAPITAL LETTER LONG I
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1260
    { 0x104a0, 0x104aa, MLineBreaker::ENuLineBreakClass },  //OSMANYA DIGIT ZERO
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1261
    { 0x10800, 0x10806, MLineBreaker::EAlLineBreakClass },  //CYPRIOT SYLLABLE A
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1262
    { 0x10808, 0x10809, MLineBreaker::EAlLineBreakClass },  //CYPRIOT SYLLABLE JO
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1263
    { 0x1080a, 0x10836, MLineBreaker::EAlLineBreakClass },  //CYPRIOT SYLLABLE KA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1264
    { 0x10837, 0x10839, MLineBreaker::EAlLineBreakClass },  //CYPRIOT SYLLABLE XA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1265
    { 0x1083c, 0x1083d, MLineBreaker::EAlLineBreakClass },  //CYPRIOT SYLLABLE ZA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1266
    { 0x1083f, 0x10840, MLineBreaker::EAlLineBreakClass },  //CYPRIOT SYLLABLE ZO
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1267
    { 0x10900, 0x1091a, MLineBreaker::EAlLineBreakClass },  //PHOENICIAN LETTER ALF
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1268
    { 0x1091f, 0x10920, MLineBreaker::EBaLineBreakClass },  //PHOENICIAN WORD SEPARATOR
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1269
    { 0x10a00, 0x10a01, MLineBreaker::EAlLineBreakClass },  //KHAROSHTHI LETTER A
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1270
    { 0x10a01, 0x10a04, MLineBreaker::ECmLineBreakClass },  //KHAROSHTHI VOWEL SIGN I
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1271
    { 0x10a05, 0x10a07, MLineBreaker::ECmLineBreakClass },  //KHAROSHTHI VOWEL SIGN E
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1272
    { 0x10a0c, 0x10a10, MLineBreaker::ECmLineBreakClass },  //KHAROSHTHI VOWEL LENGTH MARK
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1273
    { 0x10a10, 0x10a14, MLineBreaker::EAlLineBreakClass },  //KHAROSHTHI LETTER KA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1274
    { 0x10a15, 0x10a18, MLineBreaker::EAlLineBreakClass },  //KHAROSHTHI LETTER CA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1275
    { 0x10a19, 0x10a34, MLineBreaker::EAlLineBreakClass },  //KHAROSHTHI LETTER NYA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1276
    { 0x10a38, 0x10a3b, MLineBreaker::ECmLineBreakClass },  //KHAROSHTHI SIGN BAR ABOVE
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1277
    { 0x10a3f, 0x10a40, MLineBreaker::ECmLineBreakClass },  //KHAROSHTHI VIRAMA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1278
    { 0x10a40, 0x10a48, MLineBreaker::EAlLineBreakClass },  //KHAROSHTHI DIGIT ONE
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1279
    { 0x10a50, 0x10a58, MLineBreaker::EBaLineBreakClass },  //KHAROSHTHI PUNCTUATION DOT
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1280
    { 0x10a58, 0x10a59, MLineBreaker::EAlLineBreakClass },  //KHAROSHTHI PUNCTUATION LINES
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1281
    { 0x12000, 0x1236f, MLineBreaker::EAlLineBreakClass },  //CUNEIFORM SIGN A
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1282
    { 0x12400, 0x12463, MLineBreaker::EAlLineBreakClass },  //CUNEIFORM NUMERIC SIGN TWO ASH
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1283
    { 0x12470, 0x12474, MLineBreaker::EBaLineBreakClass },  //CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1284
    { 0x1d000, 0x1d0f6, MLineBreaker::EAlLineBreakClass },  //BYZANTINE MUSICAL SYMBOL PSILI
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1285
    { 0x1d100, 0x1d127, MLineBreaker::EAlLineBreakClass },  //MUSICAL SYMBOL SINGLE BARLINE
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1286
    { 0x1d12a, 0x1d165, MLineBreaker::EAlLineBreakClass },  //MUSICAL SYMBOL DOUBLE SHARP
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1287
    { 0x1d165, 0x1d16a, MLineBreaker::ECmLineBreakClass },  //MUSICAL SYMBOL COMBINING STEM
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1288
    { 0x1d16a, 0x1d16d, MLineBreaker::EAlLineBreakClass },  //MUSICAL SYMBOL FINGERED TREMOLO-1
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1289
    { 0x1d16d, 0x1d183, MLineBreaker::ECmLineBreakClass },  //MUSICAL SYMBOL COMBINING AUGMENTATION DOT
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1290
    { 0x1d183, 0x1d185, MLineBreaker::EAlLineBreakClass },  //MUSICAL SYMBOL ARPEGGIATO UP
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1291
    { 0x1d185, 0x1d18c, MLineBreaker::ECmLineBreakClass },  //MUSICAL SYMBOL COMBINING DOIT
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1292
    { 0x1d18c, 0x1d1aa, MLineBreaker::EAlLineBreakClass },  //MUSICAL SYMBOL RINFORZANDO
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1293
    { 0x1d1aa, 0x1d1ae, MLineBreaker::ECmLineBreakClass },  //MUSICAL SYMBOL COMBINING DOWN BOW
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1294
    { 0x1d1ae, 0x1d1de, MLineBreaker::EAlLineBreakClass },  //MUSICAL SYMBOL PEDAL MARK
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1295
    { 0x1d200, 0x1d242, MLineBreaker::EAlLineBreakClass },  //GREEK VOCAL NOTATION SYMBOL-1
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1296
    { 0x1d242, 0x1d245, MLineBreaker::ECmLineBreakClass },  //COMBINING GREEK MUSICAL TRISEME
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1297
    { 0x1d245, 0x1d246, MLineBreaker::EAlLineBreakClass },  //GREEK MUSICAL LEIMMA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1298
    { 0x1d300, 0x1d357, MLineBreaker::EAlLineBreakClass },  //MONOGRAM FOR EARTH
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1299
    { 0x1d360, 0x1d372, MLineBreaker::EAlLineBreakClass },  //COUNTING ROD UNIT DIGIT ONE
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1300
    { 0x1d400, 0x1d455, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL BOLD CAPITAL A
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1301
    { 0x1d456, 0x1d49d, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL ITALIC SMALL I
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1302
    { 0x1d49e, 0x1d4a0, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL SCRIPT CAPITAL C
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1303
    { 0x1d4a2, 0x1d4a3, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL SCRIPT CAPITAL G
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1304
    { 0x1d4a5, 0x1d4a7, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL SCRIPT CAPITAL J
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1305
    { 0x1d4a9, 0x1d4ad, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL SCRIPT CAPITAL N
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1306
    { 0x1d4ae, 0x1d4ba, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL SCRIPT CAPITAL S
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1307
    { 0x1d4bb, 0x1d4bc, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL SCRIPT SMALL F
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1308
    { 0x1d4bd, 0x1d4c4, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL SCRIPT SMALL H
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1309
    { 0x1d4c5, 0x1d506, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL SCRIPT SMALL P
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1310
    { 0x1d507, 0x1d50b, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL FRAKTUR CAPITAL D
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1311
    { 0x1d50d, 0x1d515, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL FRAKTUR CAPITAL J
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1312
    { 0x1d516, 0x1d51d, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL FRAKTUR CAPITAL S
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1313
    { 0x1d51e, 0x1d53a, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL FRAKTUR SMALL A
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1314
    { 0x1d53b, 0x1d53f, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL DOUBLE-STRUCK CAPITAL D
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1315
    { 0x1d540, 0x1d545, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL DOUBLE-STRUCK CAPITAL I
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1316
    { 0x1d546, 0x1d547, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL DOUBLE-STRUCK CAPITAL O
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1317
    { 0x1d54a, 0x1d551, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL DOUBLE-STRUCK CAPITAL S
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1318
    { 0x1d552, 0x1d6a6, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL DOUBLE-STRUCK SMALL A
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1319
    { 0x1d6a8, 0x1d7cc, MLineBreaker::EAlLineBreakClass },  //MATHEMATICAL BOLD CAPITAL ALPHA
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1320
    { 0x1d7ce, 0x1d800, MLineBreaker::ENuLineBreakClass },  //MATHEMATICAL BOLD DIGIT ZERO
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1321
    { 0x20000, 0x2a6d6, MLineBreaker::EIdLineBreakClass },  //<CJK Ideograph Extension B, First>..<CJK Ideograph Extension B, Last>
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1322
    { 0x2f800, 0x2fa1e, MLineBreaker::EIdLineBreakClass },  //CJK COMPATIBILITY IDEOGRAPH-2F800
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1323
    { 0xe0001, 0xe0002, MLineBreaker::ECmLineBreakClass },  //LANGUAGE TAG
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1324
    { 0xe0020, 0xe0080, MLineBreaker::ECmLineBreakClass },  //TAG SPACE
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1325
    { 0xe0100, 0xe01f0, MLineBreaker::ECmLineBreakClass },  //VARIATION SELECTOR-17
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1326
    { 0xf0000, 0xffffd, MLineBreaker::EXxLineBreakClass },  //<Plane 15 Private Use, First>..<Plane 15 Private Use, Last>
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1327
    { 0x100000, 0x10fffd, MLineBreaker::EXxLineBreakClass },  //<Plane 16 Private Use, First>..<Plane 16 Private Use, Last>
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1328
	};
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1329
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1330
static const TInt TheLineBreakRanges = sizeof(TheLineBreakRangeTable) / sizeof(TheLineBreakRangeTable[0]);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1331
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1332
void TestLineBreakTables(void)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1333
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1334
#ifdef _DEBUG
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1335
	TUint prev_end = 0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1336
	for (int i = 0; i < TheLineBreakRanges; i++)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1337
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1338
		const TLineBreakRange& r = TheLineBreakRangeTable[i];
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1339
		if (r.iStart >= r.iEnd || r.iClass >= MLineBreaker::ELineBreakClasses || r.iStart < prev_end)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1340
			Panic(ELineBreakPanic_BadTable);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1341
		prev_end = r.iEnd;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1342
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1343
#endif
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1344
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1345
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1346
TUint TLineBreakClassCache::LineBreakClass(TUint aChar)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1347
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1348
	if (aChar >= iStart && aChar < iEnd)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1349
		return iClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1350
	TUint new_start, new_end;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1351
	TUint new_class = iBreaker.LineBreakClass(aChar,new_start,new_end);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1352
	if (new_start < new_end - 1)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1353
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1354
		iStart = new_start;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1355
		iEnd = new_end;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1356
		iClass = new_class;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1357
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1358
	return new_class;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1359
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1360
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1361
EXPORT_C TBool MLineBreaker::LineBreakPossible(
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1362
	TUint aPrevClass, TUint aNextClass, TBool aHaveSpaces) const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1363
/** Returns whether line breaks are legal between a character of line breaking 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1364
class aPrevClass and aNextClass, with intervening spaces or not as determined 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1365
by aHaveSpaces. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1366
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1367
@param aPrevClass The class before the potential line break.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1368
@param aNextClass The class after the potential line break.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1369
@param aHaveSpaces Whether spaces separate the characters.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1370
@return ETrue if and only if a line break is legal in the situation described. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1371
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1372
	if (aPrevClass >= ELineBreakClasses || aNextClass >= ELineBreakClasses)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1373
		return FALSE;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1374
	const TLineBreakRule& rule = TheLineBreakRuleTable[aPrevClass];
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1375
	TUint flag = 1 << aNextClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1376
	if (rule.iForbid & flag)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1377
		return FALSE;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1378
	return aHaveSpaces || (rule.iAllow & flag);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1379
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1380
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1381
EXPORT_C TUint MLineBreaker::LineBreakClass(TUint aCode,TUint& aRangeStart,TUint& aRangeEnd) const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1382
/** Converts Unicode character into line breaking class. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1383
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1384
@param aCode Input Unicode value.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1385
@param aRangeStart Returns the start of the contiguous range of characters 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1386
including aCode that have the returned line breaking class.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1387
@param aRangeEnd Returns the end of the contiguous range of characters including 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1388
aCode that have the returned line breaking class.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1389
@return The line breaking class for aCode. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1390
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1391
	aRangeStart = aCode;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1392
	aRangeEnd = aCode + 1;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1393
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1394
	// First check for a space; this needs to be fast.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1395
	if (aCode == 0x0020)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1396
		return ESpLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1397
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1398
	// Now search the table.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1399
	const TLineBreakRange* base = TheLineBreakRangeTable;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1400
	const TLineBreakRange* end = base + TheLineBreakRanges;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1401
	while (base < end)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1402
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1403
		int n = end - base;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1404
		const TLineBreakRange* r = &base[n / 2];
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1405
		if (r->iStart > aCode)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1406
			end = r;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1407
		else if (r->iEnd <= aCode)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1408
			base = r + 1;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1409
		else
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1410
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1411
			aRangeStart = r->iStart;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1412
			aRangeEnd = r->iEnd;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1413
			return r->iClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1414
			}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1415
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1416
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1417
	// If the character was not in the table determine the line break class using the Unicode character category.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1418
	TChar::TCategory cat = TChar(aCode).GetCategory();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1419
	switch (cat)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1420
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1421
		case TChar::ELuCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1422
		case TChar::ELlCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1423
		case TChar::ELtCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1424
		case TChar::ELoCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1425
		case TChar::ESmCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1426
		case TChar::ESoCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1427
			return EAlLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1428
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1429
		case TChar::ESkCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1430
			if (TChar(aCode).GetCjkWidth() == TChar::EWide)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1431
				return ENsLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1432
			else
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1433
				return EAlLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1434
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1435
		case TChar::ELmCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1436
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1437
			TChar::TCjkWidth cjk_width = TChar(aCode).GetCjkWidth();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1438
			if (cjk_width == TChar::EWide || cjk_width == TChar::EHalfWidth)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1439
				return ENsLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1440
			}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1441
			break;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1442
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1443
		case TChar::EMnCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1444
		case TChar::EMcCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1445
		case TChar::EMeCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1446
		case TChar::ECcCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1447
		case TChar::ECfCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1448
			return ECmLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1449
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1450
		case TChar::ENdCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1451
			return ENuLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1452
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1453
		case TChar::EPsCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1454
			return EOpLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1455
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1456
		case TChar::EPeCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1457
			return EClLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1458
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1459
		case TChar::EScCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1460
			return EPrLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1461
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1462
		case TChar::EPfCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1463
		case TChar::EPiCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1464
			return EQuLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1465
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1466
		case TChar::ECsCategory:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1467
			return ESgLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1468
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1469
		default:
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1470
			break;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1471
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1472
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1473
	// If it has still not been found it may be an ideographic character not covered above.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1474
	if (aCode >= 0x3000 && aCode <= 0x3FFF)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1475
		return EIdLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1476
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1477
	// Or it may be a surrogate; assume plane 1 is alphabetic, plane 2 is ideographic.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1478
	if (aCode >= 0x10000 && aCode <= 0x1FFFF)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1479
		return EAlLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1480
	if (aCode >= 0x20000 && aCode <= 0x2FFFF)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1481
		return EIdLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1482
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1483
	// Return the catch-all class.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1484
	return EXxLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1485
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1486
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1487
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1488
EXPORT_C TBool MLineBreaker::IsHangingCharacter(TUint) const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1489
/** Returns ETrue if the character value may be positioned outside the margins. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1490
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1491
@param aChar Chatacter to test
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1492
@return ETrue if the character value may be positioned outside the margins. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1493
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1494
	return EFalse;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1495
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1496
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1497
TInt MakeSurrogate(TInt aHigh, TInt aLow)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1498
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1499
	return (aHigh << 10) + (aLow & 0x3FF)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1500
		+ (0x10000 - 0xD800*0x400);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1501
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1502
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1503
inline TBool IsSurrogate(TInt aChar)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1504
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1505
	return (aChar & 0xF800) == 0xD800;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1506
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1507
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1508
inline TBool IsHighSurrogate(TInt aChar)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1509
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1510
	return (aChar & 0xFC00) == 0xD800;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1511
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1512
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1513
inline TBool IsLowSurrogate(TInt aChar)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1514
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1515
	return (aChar & 0xFC00) == 0xDC00;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1516
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1517
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1518
/**
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1519
Move past the current character and return the next.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1520
@param aPtr
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1521
	Pointer to the current character. On return, contains a pointer to the next
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1522
	character.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1523
@param aLimit
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1524
	Limit of the iteration. For positive aOffset (moving forwards) this should
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1525
	be one less than the end of the text. For negative aOffset (moving
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1526
	backwards) this should be the start of the text.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1527
@param aOffset
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1528
	1 for moving forward, -1 for moving backward.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1529
@return
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1530
	Unicode character value or -1 on error.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1531
@internalComponent
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1532
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1533
TInt MoveTextPtr(const TText*& aPtr, const TText* aLimit, TInt aOffset)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1534
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1535
	// if (aPtr - aLimit) has the same sign as aOffset then we are
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1536
	// already too far.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1537
	if (0 <= ((aPtr - aLimit) ^ aOffset)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1538
		&& aLimit)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1539
		return -1;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1540
	TInt c = 0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1541
	for (;;)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1542
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1543
		if (aPtr == aLimit)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1544
			return -1;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1545
		aPtr += aOffset;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1546
		TInt lastc = c;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1547
		c = *aPtr;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1548
		if (!IsSurrogate(c))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1549
			return c;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1550
		if (aOffset < 0)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1551
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1552
			if (IsHighSurrogate(c) && IsLowSurrogate(lastc))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1553
				return MakeSurrogate(c, lastc);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1554
			}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1555
		else
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1556
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1557
			if (IsHighSurrogate(lastc) && IsLowSurrogate(c))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1558
				{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1559
				// found a surrogate pair
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1560
				// Set the pointer to the first of the pair
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1561
				--aPtr;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1562
				return MakeSurrogate(lastc, c);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1563
				}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1564
			}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1565
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1566
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1567
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1568
/** Find the line break class of the latest character within [aFirst, aP+1]
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1569
to have non-CM line break class.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1570
@pre aP points to a character of CM class.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1571
*/
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1572
inline TUint GetGlyphClusterLineBreakClass(const TText* aP,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1573
	const TText* aFirst, TLineBreakClassCache& aBreaker)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1574
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1575
	TInt ch = MoveTextPtr(aP, aFirst, -1);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1576
	while (0 <= ch)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1577
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1578
		TUint cl = aBreaker.LineBreakClass(ch);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1579
		if (cl != MLineBreaker::ECmLineBreakClass)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1580
			return cl;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1581
		ch = MoveTextPtr(aP, aFirst, -1);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1582
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1583
	return MLineBreaker::ECmLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1584
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1585
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1586
void TLineBreakClassIterator::Set(const TText* aFirst, const TText* aText, TLineBreakClassCache& aBreaker)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1587
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1588
	iFirst = aFirst;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1589
	iCurrent = aText;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1590
	TInt c = *aText;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1591
	if (IsHighSurrogate(c))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1592
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1593
		if (IsLowSurrogate(aText[1]))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1594
			c = MakeSurrogate(c, aText[1]);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1595
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1596
	iClass = aBreaker.LineBreakClass(c);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1597
	if (iClass == MLineBreaker::ECmLineBreakClass)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1598
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1599
		TUint baseLbCls = GetGlyphClusterLineBreakClass(iCurrent, iFirst, aBreaker);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1600
		if (baseLbCls ==  MLineBreaker::ESaLineBreakClass)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1601
			iClass = MLineBreaker::ESaLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1602
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1603
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1604
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1605
void TLineBreakClassIterator::SetNull()
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1606
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1607
	iFirst = iCurrent = 0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1608
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1609
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1610
TBool TLineBreakClassIterator::Move(const TText* aLimit,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1611
	const TText* aLimitAfterSpaces, TInt aOffset,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1612
	TBool& aHasSpaces, TLineBreakClassCache& aBreaker)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1613
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1614
	TInt c = MoveTextPtr(iCurrent, aLimit, aOffset);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1615
	if (c < 0)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1616
		return EFalse;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1617
	TUint lbClass = aBreaker.LineBreakClass(c);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1618
	if (lbClass == MLineBreaker::ESpLineBreakClass)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1619
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1620
		aHasSpaces = ETrue;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1621
		while (lbClass == MLineBreaker::ESpLineBreakClass)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1622
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1623
			c = MoveTextPtr(iCurrent, aLimitAfterSpaces, aOffset);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1624
			// We have hit the limit, but there might be more text to search
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1625
			// after the spaces.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1626
			if (c < 0)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1627
				{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1628
				iClass = MLineBreaker::ESpLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1629
				return ETrue;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1630
				}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1631
			lbClass = aBreaker.LineBreakClass(c);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1632
			}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1633
		iClass = lbClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1634
		return ETrue;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1635
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1636
		
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1637
	// Cm class characters taken on their base character's 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1638
	// line break property in the combining character sequence
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1639
	// See D14 in Conformance chapter of Unicode 3.0 book.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1640
	// We do this just for Complex content to maintain backwards
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1641
	// compatibility otherwise original test cases fail.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1642
	if (lbClass == MLineBreaker::ECmLineBreakClass)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1643
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1644
		TUint baseLbCls = GetGlyphClusterLineBreakClass(iCurrent, iFirst, aBreaker);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1645
	    if (baseLbCls ==  MLineBreaker::ESaLineBreakClass)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1646
	        lbClass = MLineBreaker::ESaLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1647
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1648
	    
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1649
	aHasSpaces = EFalse;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1650
	if (lbClass == MLineBreaker::ESaLineBreakClass
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1651
		&& iClass == MLineBreaker::ESaLineBreakClass)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1652
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1653
		// We have at least two SA characters, so we need to find the
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1654
		// total extent of the SA block. GetLineBreakInContext will be asked
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1655
		// to find the break.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1656
		const TText* p = iCurrent;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1657
		while (0 <= c && lbClass == MLineBreaker::ESaLineBreakClass)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1658
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1659
			iCurrent = p;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1660
			c = MoveTextPtr(p, aOffset < 0? iFirst : aLimitAfterSpaces, aOffset);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1661
			lbClass = aBreaker.LineBreakClass(c);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1662
			
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1663
			// Cm class characters taken on their base character's 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1664
	        // line break property. See above.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1665
        	if (lbClass == MLineBreaker::ECmLineBreakClass)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1666
        		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1667
				TUint baseLbCls = GetGlyphClusterLineBreakClass(p, iFirst, aBreaker);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1668
        	    if (baseLbCls ==  MLineBreaker::ESaLineBreakClass)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1669
        	        lbClass = MLineBreaker::ESaLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1670
        		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1671
        	if (lbClass == MLineBreaker::EZwLineBreakClass)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1672
   				{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1673
   				iCurrent = p;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1674
   				}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1675
			}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1676
		return ETrue;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1677
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1678
	iClass = lbClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1679
	return ETrue;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1680
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1681
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1682
TLineBreakIterator::TLineBreakIterator(TLineBreakClassCache& aBreaker,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1683
	const TText* aText, TInt aLength, TBool aForwards,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1684
	TInt aMinBreakPos, TInt aMaxBreakPos)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1685
	: iBreaker(aBreaker), iText(aText), iTextLength(aLength), iHasSpaces(EFalse)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1686
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1687
	if (aMinBreakPos < 1)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1688
		aMinBreakPos = 1;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1689
	// Find the next valid character and see if it can hang
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1690
	// over the margin.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1691
	const TText* endText = aText + aLength;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1692
	const TText* max = aText + aMaxBreakPos;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1693
	if (endText <= max && aText < endText)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1694
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1695
		// let 'max' point to last character
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1696
		max = endText - 1;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1697
		if (IsLowSurrogate(*max))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1698
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1699
			ASSERT(aLength > 1);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1700
			--max;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1701
			ASSERT(IsHighSurrogate(*max));
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1702
			}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1703
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1704
	TInt c = 0xFFFF;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1705
	while (max < endText)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1706
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1707
		TInt lastc = c;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1708
		c = *max;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1709
		if ((c & 0xF800) != 0xD800)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1710
			break;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1711
		if ((lastc & 0xFC00) == 0xD800
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1712
			&& (c & 0xFC00) == 0xDC00)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1713
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1714
			c = MakeSurrogate(lastc, c);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1715
			break;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1716
			}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1717
		++max;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1718
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1719
	if (c != 0xFFFF && max + 1 < endText
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1720
		&& aBreaker.Breaker().IsHangingCharacter(c))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1721
		// Set max to just beyond hanging character
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1722
		++max;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1723
	// till here, 'max' points to the "end" of a character
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1724
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1725
	// set up the iteration.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1726
	iMinBreakPos = aText + aMinBreakPos;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1727
	iMaxBreakPos = aText + aMaxBreakPos;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1728
	// Increment or Decrement must be called to complete set up.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1729
	if (max < aText + aMinBreakPos)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1730
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1731
		// no possible line breaks
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1732
		iLimit = 0;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1733
		iAfterBreak.SetNull();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1734
		iBeforeBreak.SetNull();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1735
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1736
	else if (aForwards)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1737
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1738
		iLimit = max;	// point to the 'end' of the last character (low surrogate if supplementary)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1739
		iLimitAfterSpaces = endText - 1;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1740
		iAfterBreak.Set(iText, aText + aMinBreakPos - 1, aBreaker);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1741
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1742
	else
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1743
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1744
		iLimit = aText + aMinBreakPos - 1;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1745
		iLimitAfterSpaces = iLimit;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1746
		iBeforeBreak.Set(iText, max - 1, aBreaker);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1747
		iBeforeBreak.Move(endText - 1, endText - 1, 1, iHasSpaces, aBreaker);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1748
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1749
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1750
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1751
TBool TLineBreakIterator::IsBreak(TBool aForwards)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1752
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1753
	TInt beforeClass = iBeforeBreak.Class();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1754
	TInt afterClass = iAfterBreak.Class();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1755
	const MLineBreaker& breaker = iBreaker.Breaker();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1756
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1757
	// Line break characters overhang the margin
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1758
	// along with the spaces that precede them.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1759
	if (afterClass == MLineBreaker::EBkLineBreakClass)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1760
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1761
		const TText* p = iAfterBreak.Ptr();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1762
		MoveTextPtr(p, iText + iTextLength, 1);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1763
		iAfterBreak.Set(iText, p, iBreaker);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1764
		return ETrue;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1765
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1766
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1767
	// Find break within this run of SA text
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1768
	const TText* startOfSaText = iBeforeBreak.Ptr();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1769
	const TText* endOfSaText = iAfterBreak.Ptr();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1770
	
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1771
	if ((beforeClass != MLineBreaker::ESaLineBreakClass && *startOfSaText != KWhiteSpace) || 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1772
			(afterClass != MLineBreaker::ESaLineBreakClass))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1773
		// Complex (South-East Asian) line breaking rules not required.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1774
		return breaker.LineBreakPossible(beforeClass, afterClass, iHasSpaces);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1775
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1776
	MoveTextPtr(endOfSaText, iText + iTextLength, 1);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1777
	const TText* minBreak = startOfSaText < iMinBreakPos ?
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1778
		iMinBreakPos : startOfSaText + 1;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1779
	const TText* maxBreak = iMaxBreakPos < endOfSaText ?
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1780
		iMaxBreakPos : endOfSaText - 1;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1781
	TInt breakPos;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1782
	TPtrC saText(startOfSaText, endOfSaText - startOfSaText);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1783
	if (!breaker.GetLineBreakInContext(saText,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1784
		minBreak - startOfSaText, maxBreak - startOfSaText,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1785
		aForwards, breakPos))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1786
		return EFalse;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1787
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1788
	// Convert the break position within SA text into iterator positions.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1789
	const TText* p = startOfSaText + breakPos;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1790
		iAfterBreak.Set(iText, p, iBreaker);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1791
		if (*p != KZeroWidthSpace) MoveTextPtr(p, 0, -1);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1792
		iBeforeBreak.Set(iText, p, iBreaker);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1793
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1794
		return ETrue;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1795
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1796
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1797
TBool TLineBreakIterator::HasContingentBreak() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1798
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1799
	return iBeforeBreak.Class() == MLineBreaker::ECbLineBreakClass
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1800
		|| iAfterBreak.Class() == MLineBreaker::ECbLineBreakClass;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1801
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1802
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1803
TInt TLineBreakIterator::PreviousClass() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1804
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1805
	return iBeforeBreak.Class();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1806
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1807
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1808
TInt TLineBreakIterator::NextClass() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1809
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1810
	return iAfterBreak.Class();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1811
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1812
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1813
TBool TLineBreakIterator::HasSpaces() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1814
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1815
	return iHasSpaces;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1816
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1817
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1818
TBool TLineBreakIterator::Decrement()
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1819
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1820
	iAfterBreak = iBeforeBreak;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1821
	return iBeforeBreak.Move(iLimit, iLimitAfterSpaces, -1, iHasSpaces, iBreaker);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1822
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1823
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1824
TBool TLineBreakIterator::Increment()
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1825
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1826
	iBeforeBreak = iAfterBreak;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1827
	return iAfterBreak.Move(iLimit, iLimitAfterSpaces, 1, iHasSpaces, iBreaker);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1828
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1829
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1830
TInt TLineBreakIterator::BreakPos() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1831
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1832
	const TText* t = iBeforeBreak.Ptr();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1833
	MoveTextPtr(t, 0, 1);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1834
	return t - iText;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1835
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1836
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1837
TInt TLineBreakIterator::BeforeBreakPos() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1838
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1839
	return iBeforeBreak.Ptr() - iText;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1840
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1841
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1842
TInt TLineBreakIterator::AfterBreakPos() const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1843
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1844
	return iAfterBreak.Ptr() - iText;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1845
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1846
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1847
TBool HasContingentBreak(TLineBreakIterator& aIterator,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1848
	MContingentLineBreaker& aCbDelegate)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1849
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1850
	if (aIterator.PreviousClass() == MLineBreaker::ECbLineBreakClass
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1851
		&& aCbDelegate.IsLegalBreakAfter(
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1852
		aIterator.BeforeBreakPos(), aIterator.NextClass(),
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1853
		aIterator.HasSpaces()))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1854
		return ETrue;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1855
	if (aIterator.NextClass() == MLineBreaker::ECbLineBreakClass
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1856
		&& aCbDelegate.IsLegalBreakBefore(
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1857
		aIterator.AfterBreakPos(), aIterator.PreviousClass(),
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1858
		aIterator.HasSpaces()))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1859
		return ETrue;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1860
	return EFalse;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1861
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1862
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1863
TBool FindBreak(TLineBreakIterator& aIterator, TBool aForwards,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1864
	MContingentLineBreaker* aCbDelegate)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1865
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1866
	while (aForwards? aIterator.Increment() : aIterator.Decrement())
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1867
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1868
		if (aCbDelegate && aIterator.HasContingentBreak())
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1869
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1870
			if (HasContingentBreak(aIterator, *aCbDelegate))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1871
				{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1872
				return ETrue;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1873
				}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1874
			}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1875
		else if (aIterator.IsBreak(aForwards))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1876
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1877
			return ETrue;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1878
			}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1879
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1880
	return EFalse;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1881
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1882
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1883
TBool HasContingentBreakL(TLineBreakIterator& aIterator,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1884
	MContingentLineBreakerL& aCbDelegate)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1885
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1886
	if (aIterator.PreviousClass() == MLineBreaker::ECbLineBreakClass
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1887
		&& aCbDelegate.IsLegalBreakAfterL(
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1888
		aIterator.BeforeBreakPos(), aIterator.NextClass(),
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1889
		aIterator.HasSpaces()))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1890
		return ETrue;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1891
	if (aIterator.NextClass() == MLineBreaker::ECbLineBreakClass
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1892
		&& aCbDelegate.IsLegalBreakBeforeL(
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1893
		aIterator.AfterBreakPos(), aIterator.PreviousClass(),
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1894
		aIterator.HasSpaces()))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1895
		return ETrue;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1896
	return EFalse;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1897
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1898
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1899
TBool FindBreakL(TLineBreakIterator& aIterator, TBool aForwards,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1900
	MContingentLineBreakerL* aCbDelegate)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1901
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1902
	while (aForwards? aIterator.Increment() : aIterator.Decrement())
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1903
		{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1904
		if (aCbDelegate && aIterator.HasContingentBreak())
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1905
			{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1906
			if (HasContingentBreakL(aIterator, *aCbDelegate))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1907
				return ETrue;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1908
			}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1909
		else if (aIterator.IsBreak(aForwards))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1910
			return ETrue;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1911
		}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1912
	return EFalse;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1913
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1914
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1915
EXPORT_C TBool MLineBreaker::GetLineBreak(const TDesC& aText,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1916
	TInt aMinBreakPos, TInt aMaxBreakPos, TBool aForwards,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1917
	MContingentLineBreaker* aCbDelegate,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1918
	TInt& aBreakPos, TInt& aBreakPosAfterSpaces) const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1919
/** Finds the line break according to the rules in the virtual functions. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1920
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1921
@param aText The text to be broken.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1922
@param aMinBreakPos The smallest allowed result.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1923
@param aMaxBreakPos The position of the first character that fails to fit the 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1924
measure.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1925
@param aForwards ETrue to find the earliest legal break opportunity, EFalse 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1926
to find the last.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1927
@param aCbDelegate Object to resolve breaks around characters with the CB (cointingent 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1928
break) line breaking class. Typically this class is only used for character 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1929
0xFFFD, which usually marks the position of embedded pictures. May be NULL, 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1930
in which case LineBreakPossible() determines whether these breaks are legal.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1931
@param aBreakPos Returns the position of the break.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1932
@param aBreakPosAfterSpaces Returns the position of the start of the next line.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1933
@return ETrue if successful, EFalse if no legal line breaks were found. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1934
    {
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1935
	TLineBreakClassCache cache(*this);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1936
	const TText* text = aText.Ptr();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1937
	TLineBreakIterator it(cache, text, aText.Length(),
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1938
		aForwards, aMinBreakPos, aMaxBreakPos);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1939
	if (!FindBreak(it, aForwards, aCbDelegate))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1940
		return EFalse;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1941
	aBreakPos = it.BreakPos();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1942
	aBreakPosAfterSpaces = it.AfterBreakPos();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1943
	return ETrue;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1944
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1945
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1946
EXPORT_C TBool MLineBreaker::GetLineBreakL(const TDesC& aText,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1947
	TInt aMinBreakPos, TInt aMaxBreakPos, TBool aForwards,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1948
	MContingentLineBreakerL* aCbDelegate,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1949
	TInt& aBreakPos, TInt& aBreakPosAfterSpaces) const
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1950
/** Exactly the same as GetLineBreak, but aCbDelegate's functions may leave so 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1951
the whole function may leave. 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1952
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1953
@param aText The text to be broken.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1954
@param aMinBreakPos The smallest allowed result.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1955
@param aMaxBreakPos he position of the first character that fails to fit the 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1956
measure.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1957
@param aForwards ETrue to find the earliest legal break opportunity, EFalse 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1958
to find the last.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1959
@param aCbDelegate Object to resolve breaks around characters with the CB (cointingent 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1960
break) line breaking class. Typically this class is only used for character 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1961
0xFFFD, which usually marks the position of embedded pictures. May be NULL, 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1962
in which case LineBreakPossible() determines whether these breaks are legal.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1963
@param aBreakPos Returns the position of the break.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1964
@param aBreakPosAfterSpaces Returns the position of the start of the next line.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1965
@return ETrue if successful, EFalse if no legal line breaks were found. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1966
	{
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1967
	if (aMaxBreakPos < aMinBreakPos)
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1968
		return EFalse;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1969
	TLineBreakClassCache cache(*this);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1970
	const TText* text = aText.Ptr();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1971
	TLineBreakIterator it(cache, text, aText.Length(),
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1972
		aForwards, aMinBreakPos, aMaxBreakPos);
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1973
	if (!FindBreakL(it, aForwards, aCbDelegate))
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1974
		return EFalse;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1975
	aBreakPos = it.BreakPos();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1976
	aBreakPosAfterSpaces = it.AfterBreakPos();
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1977
	return ETrue;
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1978
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1979
EXPORT_C void* MLineBreaker::ExtendedInterface(TUid&) const 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1980
/** Returns an interface to more functions, or 0 if these are unsupported.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1981
Currently there are no other functions, so 0 is always returned. If this
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1982
function is overridden, it must base call if aUid is not recognised,
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1983
rather than just returning 0.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1984
@param aUid Identifies the interface to be returned.
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1985
@return A pointer to the extended interface, or 0 if not supported. */
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1986
	{ 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1987
	return 0; 
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1988
	}
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1989
662fa7de7023 201024_05
hgs
parents:
diff changeset
  1990