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