xref: /aosp_15_r20/external/pdfium/xfa/fgas/layout/fgas_linebreak.cpp (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2014 The PDFium Authors
2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file.
4*3ac0a46fSAndroid Build Coastguard Worker 
5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6*3ac0a46fSAndroid Build Coastguard Worker 
7*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fgas/layout/fgas_linebreak.h"
8*3ac0a46fSAndroid Build Coastguard Worker 
9*3ac0a46fSAndroid Build Coastguard Worker #include <iterator>
10*3ac0a46fSAndroid Build Coastguard Worker 
11*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/fx_unicode.h"
12*3ac0a46fSAndroid Build Coastguard Worker #include "third_party/base/check.h"
13*3ac0a46fSAndroid Build Coastguard Worker 
14*3ac0a46fSAndroid Build Coastguard Worker namespace {
15*3ac0a46fSAndroid Build Coastguard Worker 
16*3ac0a46fSAndroid Build Coastguard Worker #define FX_LBUN FX_LINEBREAKTYPE::kUNKNOWN
17*3ac0a46fSAndroid Build Coastguard Worker #define FX_LBDB FX_LINEBREAKTYPE::kDIRECT_BRK
18*3ac0a46fSAndroid Build Coastguard Worker #define FX_LBIB FX_LINEBREAKTYPE::kINDIRECT_BRK
19*3ac0a46fSAndroid Build Coastguard Worker #define FX_LBCB FX_LINEBREAKTYPE::kCOM_INDIRECT_BRK
20*3ac0a46fSAndroid Build Coastguard Worker #define FX_LBCP FX_LINEBREAKTYPE::kCOM_PROHIBITED_BRK
21*3ac0a46fSAndroid Build Coastguard Worker #define FX_LBPB FX_LINEBREAKTYPE::kPROHIBITED_BRK
22*3ac0a46fSAndroid Build Coastguard Worker #define FX_LBHS FX_LINEBREAKTYPE::kHANGUL_SPACE_BRK
23*3ac0a46fSAndroid Build Coastguard Worker 
24*3ac0a46fSAndroid Build Coastguard Worker const FX_LINEBREAKTYPE kFX_LineBreak_PairTable[38][38] = {
25*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB,
26*3ac0a46fSAndroid Build Coastguard Worker      FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB,
27*3ac0a46fSAndroid Build Coastguard Worker      FX_LBPB, FX_LBPB, FX_LBPB, FX_LBCP, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB,
28*3ac0a46fSAndroid Build Coastguard Worker      FX_LBPB, FX_LBPB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
29*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
30*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBPB,
31*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB,
32*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
33*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
34*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
35*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBPB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
36*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB,
37*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBIB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB,
38*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBIB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
39*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
40*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBIB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
41*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB,
42*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBIB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB,
43*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBIB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
44*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
45*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
46*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB,
47*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
48*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
49*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
50*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
51*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB,
52*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
53*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
54*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
55*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
56*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB,
57*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
58*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
59*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
60*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
61*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB,
62*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
63*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
64*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
65*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBIB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
66*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBDB, FX_LBIB, FX_LBIB,
67*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB,
68*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBIB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
69*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
70*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBIB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
71*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB,
72*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
73*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
74*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
75*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBIB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
76*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
77*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
78*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
79*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
80*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBIB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
81*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
82*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
83*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
84*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
85*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
86*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
87*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
88*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
89*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
90*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
91*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
92*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
93*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
94*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
95*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBDB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
96*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB,
97*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
98*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
99*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
100*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBDB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
101*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB,
102*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
103*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
104*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
105*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBIB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
106*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB,
107*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBIB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB,
108*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBIB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
109*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
110*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
111*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB,
112*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBPB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
113*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
114*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
115*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB,
116*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB,
117*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB,
118*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
119*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
120*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
121*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
122*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
123*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
124*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
125*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBIB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
126*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBIB,
127*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBIB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB,
128*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBIB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
129*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
130*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
131*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
132*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
133*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBIB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
134*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
135*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
136*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
137*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
138*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
139*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
140*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
141*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
142*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB,
143*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
144*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
145*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
146*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
147*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
148*3ac0a46fSAndroid Build Coastguard Worker      FX_LBIB, FX_LBIB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
149*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
150*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
151*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
152*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
153*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
154*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
155*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
156*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
157*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
158*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
159*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
160*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
161*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
162*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
163*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
164*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
165*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
166*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
167*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
168*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
169*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
170*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
171*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
172*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
173*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
174*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
175*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
176*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
177*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
178*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
179*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
180*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
181*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
182*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
183*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
184*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
185*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
186*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
187*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
188*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
189*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
190*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
191*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
192*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
193*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
194*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
195*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBIB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
196*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB, FX_LBIB,
197*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
198*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
199*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
200*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBDB, FX_LBPB, FX_LBPB, FX_LBPB, FX_LBDB, FX_LBPB,
201*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBIB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBPB, FX_LBPB, FX_LBIB,
202*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
203*3ac0a46fSAndroid Build Coastguard Worker      FX_LBPB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
204*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
205*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
206*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
207*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
208*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
209*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
210*3ac0a46fSAndroid Build Coastguard Worker     {FX_LBDB, FX_LBPB, FX_LBIB, FX_LBDB, FX_LBIB, FX_LBPB, FX_LBPB, FX_LBPB,
211*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBDB, FX_LBIB, FX_LBIB,
212*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBPB, FX_LBCB, FX_LBPB, FX_LBDB, FX_LBDB, FX_LBDB,
213*3ac0a46fSAndroid Build Coastguard Worker      FX_LBDB, FX_LBDB, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN,
214*3ac0a46fSAndroid Build Coastguard Worker      FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN, FX_LBUN},
215*3ac0a46fSAndroid Build Coastguard Worker };
216*3ac0a46fSAndroid Build Coastguard Worker 
217*3ac0a46fSAndroid Build Coastguard Worker #undef FX_LBUN
218*3ac0a46fSAndroid Build Coastguard Worker #undef FX_LBDB
219*3ac0a46fSAndroid Build Coastguard Worker #undef FX_LBIB
220*3ac0a46fSAndroid Build Coastguard Worker #undef FX_LBCB
221*3ac0a46fSAndroid Build Coastguard Worker #undef FX_LBCP
222*3ac0a46fSAndroid Build Coastguard Worker #undef FX_LBPB
223*3ac0a46fSAndroid Build Coastguard Worker #undef FX_LBHS
224*3ac0a46fSAndroid Build Coastguard Worker 
225*3ac0a46fSAndroid Build Coastguard Worker }  // namespace
226*3ac0a46fSAndroid Build Coastguard Worker 
GetLineBreakTypeFromPair(FX_BREAKPROPERTY curr_char,FX_BREAKPROPERTY next_char)227*3ac0a46fSAndroid Build Coastguard Worker FX_LINEBREAKTYPE GetLineBreakTypeFromPair(FX_BREAKPROPERTY curr_char,
228*3ac0a46fSAndroid Build Coastguard Worker                                           FX_BREAKPROPERTY next_char) {
229*3ac0a46fSAndroid Build Coastguard Worker   size_t row = static_cast<size_t>(curr_char);
230*3ac0a46fSAndroid Build Coastguard Worker   size_t col = static_cast<size_t>(next_char);
231*3ac0a46fSAndroid Build Coastguard Worker   DCHECK(row < std::size(kFX_LineBreak_PairTable));
232*3ac0a46fSAndroid Build Coastguard Worker   DCHECK(col < std::size(kFX_LineBreak_PairTable[0]));
233*3ac0a46fSAndroid Build Coastguard Worker   return kFX_LineBreak_PairTable[row][col];
234*3ac0a46fSAndroid Build Coastguard Worker }
235