1 /* 2 * Copyright (C) 2018-2019 Muhammad Tayyab Akram 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef _SB_PUBLIC_SCRIPT_H 18 #define _SB_PUBLIC_SCRIPT_H 19 20 #include "SBBase.h" 21 22 /** 23 * Constants that specify the script of a character. 24 */ 25 enum { 26 SBScriptNil = 0x00, 27 28 SBScriptZINH = 0x01, /**< Inherited */ 29 SBScriptZYYY = 0x02, /**< Common */ 30 SBScriptZZZZ = 0x03, /**< Unknown */ 31 32 /* Unicode 1.1 */ 33 SBScriptARAB = 0x04, /**< Arabic */ 34 SBScriptARMN = 0x05, /**< Armenian */ 35 SBScriptBENG = 0x06, /**< Bengali */ 36 SBScriptBOPO = 0x07, /**< Bopomofo */ 37 SBScriptCYRL = 0x08, /**< Cyrillic */ 38 SBScriptDEVA = 0x09, /**< Devanagari */ 39 SBScriptGEOR = 0x0A, /**< Georgian */ 40 SBScriptGREK = 0x0B, /**< Greek */ 41 SBScriptGUJR = 0x0C, /**< Gujarati */ 42 SBScriptGURU = 0x0D, /**< Gurmukhi */ 43 SBScriptHANG = 0x0E, /**< Hangul */ 44 SBScriptHANI = 0x0F, /**< Han */ 45 SBScriptHEBR = 0x10, /**< Hebrew */ 46 SBScriptHIRA = 0x11, /**< Hiragana */ 47 SBScriptKANA = 0x12, /**< Katakana */ 48 SBScriptKNDA = 0x13, /**< Kannada */ 49 SBScriptLAOO = 0x14, /**< Lao */ 50 SBScriptLATN = 0x15, /**< Latin */ 51 SBScriptMLYM = 0x16, /**< Malayalam */ 52 SBScriptORYA = 0x17, /**< Oriya */ 53 SBScriptTAML = 0x18, /**< Tamil */ 54 SBScriptTELU = 0x19, /**< Telugu */ 55 SBScriptTHAI = 0x1A, /**< Thai */ 56 57 /* Unicode 2.0 */ 58 SBScriptTIBT = 0x1B, /**< Tibetan */ 59 60 /* Unicode 3.0 */ 61 SBScriptBRAI = 0x1C, /**< Braille */ 62 SBScriptCANS = 0x1D, /**< Canadian_Aboriginal */ 63 SBScriptCHER = 0x1E, /**< Cherokee */ 64 SBScriptETHI = 0x1F, /**< Ethiopic */ 65 SBScriptKHMR = 0x20, /**< Khmer */ 66 SBScriptMONG = 0x21, /**< Mongolian */ 67 SBScriptMYMR = 0x22, /**< Myanmar */ 68 SBScriptOGAM = 0x23, /**< Ogham */ 69 SBScriptRUNR = 0x24, /**< Runic */ 70 SBScriptSINH = 0x25, /**< Sinhala */ 71 SBScriptSYRC = 0x26, /**< Syriac */ 72 SBScriptTHAA = 0x27, /**< Thaana */ 73 SBScriptYIII = 0x28, /**< Yi */ 74 75 /* Unicode 3.1 */ 76 SBScriptDSRT = 0x29, /**< Deseret */ 77 SBScriptGOTH = 0x2A, /**< Gothic */ 78 SBScriptITAL = 0x2B, /**< Old_Italic */ 79 80 /* Unicode 3.2 */ 81 SBScriptBUHD = 0x2C, /**< Buhid */ 82 SBScriptHANO = 0x2D, /**< Hanunoo */ 83 SBScriptTAGB = 0x2E, /**< Tagbanwa */ 84 SBScriptTGLG = 0x2F, /**< Tagalog */ 85 86 /* Unicode 4.0 */ 87 SBScriptCPRT = 0x30, /**< Cypriot */ 88 SBScriptLIMB = 0x31, /**< Limbu */ 89 SBScriptLINB = 0x32, /**< Linear_B */ 90 SBScriptOSMA = 0x33, /**< Osmanya */ 91 SBScriptSHAW = 0x34, /**< Shavian */ 92 SBScriptTALE = 0x35, /**< Tai_Le */ 93 SBScriptUGAR = 0x36, /**< Ugaritic */ 94 95 /* Unicode 4.1 */ 96 SBScriptBUGI = 0x37, /**< Buginese */ 97 SBScriptCOPT = 0x38, /**< Coptic */ 98 SBScriptGLAG = 0x39, /**< Glagolitic */ 99 SBScriptKHAR = 0x3A, /**< Kharoshthi */ 100 SBScriptSYLO = 0x3B, /**< Syloti_Nagri */ 101 SBScriptTALU = 0x3C, /**< New_Tai_Lue */ 102 SBScriptTFNG = 0x3D, /**< Tifinagh */ 103 SBScriptXPEO = 0x3E, /**< Old_Persian */ 104 105 /* Unicode 5.0 */ 106 SBScriptBALI = 0x3F, /**< Balinese */ 107 SBScriptNKOO = 0x40, /**< Nko */ 108 SBScriptPHAG = 0x41, /**< Phags_Pa */ 109 SBScriptPHNX = 0x42, /**< Phoenician */ 110 SBScriptXSUX = 0x43, /**< Cuneiform */ 111 112 /* Unicode 5.1 */ 113 SBScriptCARI = 0x44, /**< Carian */ 114 SBScriptCHAM = 0x45, /**< Cham */ 115 SBScriptKALI = 0x46, /**< Kayah_Li */ 116 SBScriptLEPC = 0x47, /**< Lepcha */ 117 SBScriptLYCI = 0x48, /**< Lycian */ 118 SBScriptLYDI = 0x49, /**< Lydian */ 119 SBScriptOLCK = 0x4A, /**< Ol_Chiki */ 120 SBScriptRJNG = 0x4B, /**< Rejang */ 121 SBScriptSAUR = 0x4C, /**< Saurashtra */ 122 SBScriptSUND = 0x4D, /**< Sundanese */ 123 SBScriptVAII = 0x4E, /**< Vai */ 124 125 /* Unicode 5.2 */ 126 SBScriptARMI = 0x4F, /**< Imperial_Aramaic */ 127 SBScriptAVST = 0x50, /**< Avestan */ 128 SBScriptBAMU = 0x51, /**< Bamum */ 129 SBScriptEGYP = 0x52, /**< Egyptian_Hieroglyphs */ 130 SBScriptJAVA = 0x53, /**< Javanese */ 131 SBScriptKTHI = 0x54, /**< Kaithi */ 132 SBScriptLANA = 0x55, /**< Tai_Tham */ 133 SBScriptLISU = 0x56, /**< Lisu */ 134 SBScriptMTEI = 0x57, /**< Meetei_Mayek */ 135 SBScriptORKH = 0x58, /**< Old_Turkic */ 136 SBScriptPHLI = 0x59, /**< Inscriptional_Pahlavi */ 137 SBScriptPRTI = 0x5A, /**< Inscriptional_Parthian */ 138 SBScriptSAMR = 0x5B, /**< Samaritan */ 139 SBScriptSARB = 0x5C, /**< Old_South_Arabian */ 140 SBScriptTAVT = 0x5D, /**< Tai_Viet */ 141 142 /* Unicode 6.0 */ 143 SBScriptBATK = 0x5E, /**< Batak */ 144 SBScriptBRAH = 0x5F, /**< Brahmi */ 145 SBScriptMAND = 0x60, /**< Mandaic */ 146 147 /* Unicode 6.1 */ 148 SBScriptCAKM = 0x61, /**< Chakma */ 149 SBScriptMERC = 0x62, /**< Meroitic_Cursive */ 150 SBScriptMERO = 0x63, /**< Meroitic_Hieroglyphs */ 151 SBScriptPLRD = 0x64, /**< Miao */ 152 SBScriptSHRD = 0x65, /**< Sharada */ 153 SBScriptSORA = 0x66, /**< Sora_Sompeng */ 154 SBScriptTAKR = 0x67, /**< Takri */ 155 156 /* Unicode 7.0 */ 157 SBScriptAGHB = 0x68, /**< Caucasian_Albanian */ 158 SBScriptBASS = 0x69, /**< Bassa_Vah */ 159 SBScriptDUPL = 0x6A, /**< Duployan */ 160 SBScriptELBA = 0x6B, /**< Elbasan */ 161 SBScriptGRAN = 0x6C, /**< Grantha */ 162 SBScriptHMNG = 0x6D, /**< Pahawh_Hmong */ 163 SBScriptKHOJ = 0x6E, /**< Khojki */ 164 SBScriptLINA = 0x6F, /**< Linear_A */ 165 SBScriptMAHJ = 0x70, /**< Mahajani */ 166 SBScriptMANI = 0x71, /**< Manichaean */ 167 SBScriptMEND = 0x72, /**< Mende_Kikakui */ 168 SBScriptMODI = 0x73, /**< Modi */ 169 SBScriptMROO = 0x74, /**< Mro */ 170 SBScriptNARB = 0x75, /**< Old_North_Arabian */ 171 SBScriptNBAT = 0x76, /**< Nabataean */ 172 SBScriptPALM = 0x77, /**< Palmyrene */ 173 SBScriptPAUC = 0x78, /**< Pau_Cin_Hau */ 174 SBScriptPERM = 0x79, /**< Old_Permic */ 175 SBScriptPHLP = 0x7A, /**< Psalter_Pahlavi */ 176 SBScriptSIDD = 0x7B, /**< Siddham */ 177 SBScriptSIND = 0x7C, /**< Khudawadi */ 178 SBScriptTIRH = 0x7D, /**< Tirhuta */ 179 SBScriptWARA = 0x7E, /**< Warang_Citi */ 180 181 /* Unicode 8.0 */ 182 SBScriptAHOM = 0x7F, /**< Ahom */ 183 SBScriptHATR = 0x80, /**< Hatran */ 184 SBScriptHLUW = 0x81, /**< Anatolian_Hieroglyphs */ 185 SBScriptHUNG = 0x82, /**< Old_Hungarian */ 186 SBScriptMULT = 0x83, /**< Multani */ 187 SBScriptSGNW = 0x84, /**< SignWriting */ 188 189 /* Unicode 9.0 */ 190 SBScriptADLM = 0x85, /**< Adlam */ 191 SBScriptBHKS = 0x86, /**< Bhaiksuki */ 192 SBScriptMARC = 0x87, /**< Marchen */ 193 SBScriptNEWA = 0x88, /**< Newa */ 194 SBScriptOSGE = 0x89, /**< Osage */ 195 SBScriptTANG = 0x8A, /**< Tangut */ 196 197 /* Unicode 10.0 */ 198 SBScriptGONM = 0x8B, /**< Masaram_Gondi */ 199 SBScriptNSHU = 0x8C, /**< Nushu */ 200 SBScriptSOYO = 0x8D, /**< Soyombo */ 201 SBScriptZANB = 0x8E, /**< Zanabazar_Square */ 202 203 /* Unicode 11.0 */ 204 SBScriptDOGR = 0x8F, /**< Dogra */ 205 SBScriptGONG = 0x90, /**< Gunjala_Gondi */ 206 SBScriptMAKA = 0x91, /**< Makasar */ 207 SBScriptMEDF = 0x92, /**< Medefaidrin */ 208 SBScriptROHG = 0x93, /**< Hanifi_Rohingya */ 209 SBScriptSOGD = 0x94, /**< Sogdian */ 210 SBScriptSOGO = 0x95, /**< Old_Sogdian */ 211 212 /* Unicode 12.0 */ 213 SBScriptELYM = 0x96, /**< Elymaic */ 214 SBScriptHMNP = 0x97, /**< Nyiakeng_Puachue_Hmong */ 215 SBScriptNAND = 0x98, /**< Nandinagari */ 216 SBScriptWCHO = 0x99, /**< Wancho */ 217 218 /* Unicde 13.0 */ 219 SBScriptCHRS = 0x9A, /**< Chorasmian */ 220 SBScriptDIAK = 0x9B, /**< Dives_Akuru */ 221 SBScriptKITS = 0x9C, /**< Khitan_Small_Script */ 222 SBScriptYEZI = 0x9D /**< Yezidi */ 223 }; 224 225 /** 226 * A type to represent the script of a character. 227 */ 228 typedef SBUInt8 SBScript; 229 230 /** 231 * Returns the OpenType tag of a script as UInt32 in big endian byte order. The association between 232 * Unicode Script property and OpenType script tags is taken from the specification: 233 * https://docs.microsoft.com/en-us/typography/opentype/spec/scripttags. 234 * 235 * If more than one tag is associated with a script, then the latest one is retured. For example, 236 * Devanagari script has two tags, `deva` and `dev2`. So in this case, `dev2` will be returned. 237 * 238 * If no tag is associated with a script, then `DFLT` is returned. 239 * 240 * @param script 241 * The script whose OpenType tag is returned. 242 * @return 243 * The OpenType tag of specified script as UInt32 in big endian byte order. 244 */ 245 SBUInt32 SBScriptGetOpenTypeTag(SBScript script); 246 247 #endif 248