xref: /aosp_15_r20/external/pdfium/core/fxcrt/fx_unicode.h (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1 // Copyright 2014 The PDFium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 
7 #ifndef CORE_FXCRT_FX_UNICODE_H_
8 #define CORE_FXCRT_FX_UNICODE_H_
9 
10 #include <stdint.h>
11 
12 // NOTE: Order matters, less-than/greater-than comparisons are used.
13 enum class FX_BIDICLASS : uint8_t {
14   kON = 0,    // Other Neutral
15   kL = 1,     // Left Letter
16   kR = 2,     // Right Letter
17   kAN = 3,    // Arabic Number
18   kEN = 4,    // European Number
19   kAL = 5,    // Arabic Letter
20   kNSM = 6,   // Non-spacing Mark
21   kCS = 7,    // Common Number Separator
22   kES = 8,    // European Separator
23   kET = 9,    // European Number Terminator
24   kBN = 10,   // Boundary Neutral
25   kS = 11,    // Segment Separator
26   kWS = 12,   // Whitespace
27   kB = 13,    // Paragraph Separator
28   kRLO = 14,  // Right-to-Left Override
29   kRLE = 15,  // Right-to-Left Embedding
30   kLRO = 16,  // Left-to-Right Override
31   kLRE = 17,  // Left-to-Right Embedding
32   kPDF = 18,  // Pop Directional Format
33   kN = kON,
34 };
35 
36 #ifdef PDF_ENABLE_XFA
37 // As defined in http://www.unicode.org/reports/tr14
38 enum class FX_BREAKPROPERTY : uint8_t {
39   kOP = 0,
40   kCL = 1,
41   kQU = 2,
42   kGL = 3,
43   kNS = 4,
44   kEX = 5,
45   kSY = 6,
46   kIS = 7,
47   kPR = 8,
48   kPO = 9,
49   kNU = 10,
50   kAL = 11,
51   kID = 12,
52   kIN = 13,
53   kHY = 14,
54   kBA = 15,
55   kBB = 16,
56   kB2 = 17,
57   kZW = 18,
58   kCM = 19,
59   kWJ = 20,
60   kH2 = 21,
61   kH3 = 22,
62   kJL = 23,
63   kJV = 24,
64   kJT = 25,
65   kBK = 26,
66   kCR = 27,
67   kLF = 28,
68   kNL = 29,
69   kSA = 30,
70   kSG = 31,
71   kCB = 32,
72   kXX = 33,
73   kAI = 34,
74   kSP = 35,
75   kNONE = 36,
76   kTB = 37,
77 };
78 
79 enum class FX_CHARTYPE : uint8_t {
80   kUnknown = 0,
81   kTab,
82   kSpace,
83   kControl,
84   kCombination,
85   kNumeric,
86   kNormal,
87   kArabicAlef,
88   kArabicSpecial,
89   kArabicDistortion,
90   kArabicNormal,
91   kArabicForm,
92   kArabic,
93 };
94 #endif  // PDF_ENABLE_XFA
95 
96 namespace pdfium {
97 namespace unicode {
98 
99 constexpr wchar_t kRightSingleQuotationMark = 0x2019;
100 constexpr wchar_t kLineSeparator = 0x2028;
101 constexpr wchar_t kParagraphSeparator = 0x2029;
102 constexpr wchar_t kBoxDrawingsLightVerical = 0x2502;
103 constexpr wchar_t kZeroWidthNoBreakSpace = 0xfeff;
104 
105 wchar_t GetMirrorChar(wchar_t wch);
106 FX_BIDICLASS GetBidiClass(wchar_t wch);
107 
108 #ifdef PDF_ENABLE_XFA
109 FX_CHARTYPE GetCharType(wchar_t wch);
110 
111 // Analagous to ULineBreak in icu's uchar.h, but permuted order, and a
112 // subset lacking some more recent additions.
113 FX_BREAKPROPERTY GetBreakProperty(wchar_t wch);
114 #endif  // PDF_ENABLE_XFA
115 
116 }  // namespace unicode
117 }  // namespace pdfium
118 
119 #endif  // CORE_FXCRT_FX_UNICODE_H_
120