/* * Copyright (C) 2018-2019 Muhammad Tayyab Akram * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef _SB_PUBLIC_SCRIPT_H #define _SB_PUBLIC_SCRIPT_H #include "SBBase.h" /** * Constants that specify the script of a character. */ enum { SBScriptNil = 0x00, SBScriptZINH = 0x01, /**< Inherited */ SBScriptZYYY = 0x02, /**< Common */ SBScriptZZZZ = 0x03, /**< Unknown */ /* Unicode 1.1 */ SBScriptARAB = 0x04, /**< Arabic */ SBScriptARMN = 0x05, /**< Armenian */ SBScriptBENG = 0x06, /**< Bengali */ SBScriptBOPO = 0x07, /**< Bopomofo */ SBScriptCYRL = 0x08, /**< Cyrillic */ SBScriptDEVA = 0x09, /**< Devanagari */ SBScriptGEOR = 0x0A, /**< Georgian */ SBScriptGREK = 0x0B, /**< Greek */ SBScriptGUJR = 0x0C, /**< Gujarati */ SBScriptGURU = 0x0D, /**< Gurmukhi */ SBScriptHANG = 0x0E, /**< Hangul */ SBScriptHANI = 0x0F, /**< Han */ SBScriptHEBR = 0x10, /**< Hebrew */ SBScriptHIRA = 0x11, /**< Hiragana */ SBScriptKANA = 0x12, /**< Katakana */ SBScriptKNDA = 0x13, /**< Kannada */ SBScriptLAOO = 0x14, /**< Lao */ SBScriptLATN = 0x15, /**< Latin */ SBScriptMLYM = 0x16, /**< Malayalam */ SBScriptORYA = 0x17, /**< Oriya */ SBScriptTAML = 0x18, /**< Tamil */ SBScriptTELU = 0x19, /**< Telugu */ SBScriptTHAI = 0x1A, /**< Thai */ /* Unicode 2.0 */ SBScriptTIBT = 0x1B, /**< Tibetan */ /* Unicode 3.0 */ SBScriptBRAI = 0x1C, /**< Braille */ SBScriptCANS = 0x1D, /**< Canadian_Aboriginal */ SBScriptCHER = 0x1E, /**< Cherokee */ SBScriptETHI = 0x1F, /**< Ethiopic */ SBScriptKHMR = 0x20, /**< Khmer */ SBScriptMONG = 0x21, /**< Mongolian */ SBScriptMYMR = 0x22, /**< Myanmar */ SBScriptOGAM = 0x23, /**< Ogham */ SBScriptRUNR = 0x24, /**< Runic */ SBScriptSINH = 0x25, /**< Sinhala */ SBScriptSYRC = 0x26, /**< Syriac */ SBScriptTHAA = 0x27, /**< Thaana */ SBScriptYIII = 0x28, /**< Yi */ /* Unicode 3.1 */ SBScriptDSRT = 0x29, /**< Deseret */ SBScriptGOTH = 0x2A, /**< Gothic */ SBScriptITAL = 0x2B, /**< Old_Italic */ /* Unicode 3.2 */ SBScriptBUHD = 0x2C, /**< Buhid */ SBScriptHANO = 0x2D, /**< Hanunoo */ SBScriptTAGB = 0x2E, /**< Tagbanwa */ SBScriptTGLG = 0x2F, /**< Tagalog */ /* Unicode 4.0 */ SBScriptCPRT = 0x30, /**< Cypriot */ SBScriptLIMB = 0x31, /**< Limbu */ SBScriptLINB = 0x32, /**< Linear_B */ SBScriptOSMA = 0x33, /**< Osmanya */ SBScriptSHAW = 0x34, /**< Shavian */ SBScriptTALE = 0x35, /**< Tai_Le */ SBScriptUGAR = 0x36, /**< Ugaritic */ /* Unicode 4.1 */ SBScriptBUGI = 0x37, /**< Buginese */ SBScriptCOPT = 0x38, /**< Coptic */ SBScriptGLAG = 0x39, /**< Glagolitic */ SBScriptKHAR = 0x3A, /**< Kharoshthi */ SBScriptSYLO = 0x3B, /**< Syloti_Nagri */ SBScriptTALU = 0x3C, /**< New_Tai_Lue */ SBScriptTFNG = 0x3D, /**< Tifinagh */ SBScriptXPEO = 0x3E, /**< Old_Persian */ /* Unicode 5.0 */ SBScriptBALI = 0x3F, /**< Balinese */ SBScriptNKOO = 0x40, /**< Nko */ SBScriptPHAG = 0x41, /**< Phags_Pa */ SBScriptPHNX = 0x42, /**< Phoenician */ SBScriptXSUX = 0x43, /**< Cuneiform */ /* Unicode 5.1 */ SBScriptCARI = 0x44, /**< Carian */ SBScriptCHAM = 0x45, /**< Cham */ SBScriptKALI = 0x46, /**< Kayah_Li */ SBScriptLEPC = 0x47, /**< Lepcha */ SBScriptLYCI = 0x48, /**< Lycian */ SBScriptLYDI = 0x49, /**< Lydian */ SBScriptOLCK = 0x4A, /**< Ol_Chiki */ SBScriptRJNG = 0x4B, /**< Rejang */ SBScriptSAUR = 0x4C, /**< Saurashtra */ SBScriptSUND = 0x4D, /**< Sundanese */ SBScriptVAII = 0x4E, /**< Vai */ /* Unicode 5.2 */ SBScriptARMI = 0x4F, /**< Imperial_Aramaic */ SBScriptAVST = 0x50, /**< Avestan */ SBScriptBAMU = 0x51, /**< Bamum */ SBScriptEGYP = 0x52, /**< Egyptian_Hieroglyphs */ SBScriptJAVA = 0x53, /**< Javanese */ SBScriptKTHI = 0x54, /**< Kaithi */ SBScriptLANA = 0x55, /**< Tai_Tham */ SBScriptLISU = 0x56, /**< Lisu */ SBScriptMTEI = 0x57, /**< Meetei_Mayek */ SBScriptORKH = 0x58, /**< Old_Turkic */ SBScriptPHLI = 0x59, /**< Inscriptional_Pahlavi */ SBScriptPRTI = 0x5A, /**< Inscriptional_Parthian */ SBScriptSAMR = 0x5B, /**< Samaritan */ SBScriptSARB = 0x5C, /**< Old_South_Arabian */ SBScriptTAVT = 0x5D, /**< Tai_Viet */ /* Unicode 6.0 */ SBScriptBATK = 0x5E, /**< Batak */ SBScriptBRAH = 0x5F, /**< Brahmi */ SBScriptMAND = 0x60, /**< Mandaic */ /* Unicode 6.1 */ SBScriptCAKM = 0x61, /**< Chakma */ SBScriptMERC = 0x62, /**< Meroitic_Cursive */ SBScriptMERO = 0x63, /**< Meroitic_Hieroglyphs */ SBScriptPLRD = 0x64, /**< Miao */ SBScriptSHRD = 0x65, /**< Sharada */ SBScriptSORA = 0x66, /**< Sora_Sompeng */ SBScriptTAKR = 0x67, /**< Takri */ /* Unicode 7.0 */ SBScriptAGHB = 0x68, /**< Caucasian_Albanian */ SBScriptBASS = 0x69, /**< Bassa_Vah */ SBScriptDUPL = 0x6A, /**< Duployan */ SBScriptELBA = 0x6B, /**< Elbasan */ SBScriptGRAN = 0x6C, /**< Grantha */ SBScriptHMNG = 0x6D, /**< Pahawh_Hmong */ SBScriptKHOJ = 0x6E, /**< Khojki */ SBScriptLINA = 0x6F, /**< Linear_A */ SBScriptMAHJ = 0x70, /**< Mahajani */ SBScriptMANI = 0x71, /**< Manichaean */ SBScriptMEND = 0x72, /**< Mende_Kikakui */ SBScriptMODI = 0x73, /**< Modi */ SBScriptMROO = 0x74, /**< Mro */ SBScriptNARB = 0x75, /**< Old_North_Arabian */ SBScriptNBAT = 0x76, /**< Nabataean */ SBScriptPALM = 0x77, /**< Palmyrene */ SBScriptPAUC = 0x78, /**< Pau_Cin_Hau */ SBScriptPERM = 0x79, /**< Old_Permic */ SBScriptPHLP = 0x7A, /**< Psalter_Pahlavi */ SBScriptSIDD = 0x7B, /**< Siddham */ SBScriptSIND = 0x7C, /**< Khudawadi */ SBScriptTIRH = 0x7D, /**< Tirhuta */ SBScriptWARA = 0x7E, /**< Warang_Citi */ /* Unicode 8.0 */ SBScriptAHOM = 0x7F, /**< Ahom */ SBScriptHATR = 0x80, /**< Hatran */ SBScriptHLUW = 0x81, /**< Anatolian_Hieroglyphs */ SBScriptHUNG = 0x82, /**< Old_Hungarian */ SBScriptMULT = 0x83, /**< Multani */ SBScriptSGNW = 0x84, /**< SignWriting */ /* Unicode 9.0 */ SBScriptADLM = 0x85, /**< Adlam */ SBScriptBHKS = 0x86, /**< Bhaiksuki */ SBScriptMARC = 0x87, /**< Marchen */ SBScriptNEWA = 0x88, /**< Newa */ SBScriptOSGE = 0x89, /**< Osage */ SBScriptTANG = 0x8A, /**< Tangut */ /* Unicode 10.0 */ SBScriptGONM = 0x8B, /**< Masaram_Gondi */ SBScriptNSHU = 0x8C, /**< Nushu */ SBScriptSOYO = 0x8D, /**< Soyombo */ SBScriptZANB = 0x8E, /**< Zanabazar_Square */ /* Unicode 11.0 */ SBScriptDOGR = 0x8F, /**< Dogra */ SBScriptGONG = 0x90, /**< Gunjala_Gondi */ SBScriptMAKA = 0x91, /**< Makasar */ SBScriptMEDF = 0x92, /**< Medefaidrin */ SBScriptROHG = 0x93, /**< Hanifi_Rohingya */ SBScriptSOGD = 0x94, /**< Sogdian */ SBScriptSOGO = 0x95, /**< Old_Sogdian */ /* Unicode 12.0 */ SBScriptELYM = 0x96, /**< Elymaic */ SBScriptHMNP = 0x97, /**< Nyiakeng_Puachue_Hmong */ SBScriptNAND = 0x98, /**< Nandinagari */ SBScriptWCHO = 0x99, /**< Wancho */ /* Unicde 13.0 */ SBScriptCHRS = 0x9A, /**< Chorasmian */ SBScriptDIAK = 0x9B, /**< Dives_Akuru */ SBScriptKITS = 0x9C, /**< Khitan_Small_Script */ SBScriptYEZI = 0x9D /**< Yezidi */ }; /** * A type to represent the script of a character. */ typedef SBUInt8 SBScript; /** * Returns the OpenType tag of a script as UInt32 in big endian byte order. The association between * Unicode Script property and OpenType script tags is taken from the specification: * https://docs.microsoft.com/en-us/typography/opentype/spec/scripttags. * * If more than one tag is associated with a script, then the latest one is retured. For example, * Devanagari script has two tags, `deva` and `dev2`. So in this case, `dev2` will be returned. * * If no tag is associated with a script, then `DFLT` is returned. * * @param script * The script whose OpenType tag is returned. * @return * The OpenType tag of specified script as UInt32 in big endian byte order. */ SBUInt32 SBScriptGetOpenTypeTag(SBScript script); #endif