#include "UnicodeTools.hpp" #include string UnicodeTools::upcase(string utf8str) { string testchar, output; for (unsigned int i = 0; i < utf8str.length(); i++) { if ((unsigned char)utf8str[i] <= 0x7f) { testchar = utf8str.substr(i, 1); } else if ((unsigned char)utf8str[i] <= 0xDF) { testchar = utf8str.substr(i, 2); i+=1; } else if ((unsigned char)utf8str[i] <= 0xEF) { testchar = utf8str.substr(i, 3); i+=2; } else if ((unsigned char)utf8str[i] <= 0xF7) { testchar = utf8str.substr(i, 4); i+=3; } if (lcase.find(testchar) != lcase.end()) { output += lcase[testchar]; } else { output += testchar; } } return output; } string UnicodeTools::lowercase(string utf8str) { string testchar, output; for (unsigned int i = 0; i < utf8str.size(); i++) { if ((unsigned char)utf8str[i] <= 0x7f) { testchar = utf8str.substr(i, 1); } else if ((unsigned char)utf8str[i] <= 0xDF) { testchar = utf8str.substr(i, 2); i+=1; } else if ((unsigned char)utf8str[i] <= 0xEF) { testchar = utf8str.substr(i, 3); i+=2; } else if ((unsigned char)utf8str[i] <= 0xF7) { testchar = utf8str.substr(i, 4); i+=3; } /*if (lcase.find(testchar) != lcase.end()) { output += lcase[testchar]; } else { output += testchar; }*/ if (testchar.length() == 1) { testchar[0] = tolower(testchar[0]); output += testchar; } else { output += testchar; } } return output; } string UnicodeTools::upcaseLatin1(string l1str) { string testchar, output; for (unsigned int i = 0; i < l1str.length(); i++) { if ((unsigned char)l1str[i] <= 0x7f) { output += toupper(l1str[i]); } else { testchar = l1str.substr(i,1); if (ucaseLatin1.find(testchar) != ucaseLatin1.end()) { output += ucaseLatin1[testchar]; } else { output += testchar; } } } return output; } string UnicodeTools::lowercaseLatin1(string l1str) { string testchar, output; for (unsigned int i = 0; i < l1str.length(); i++) { if ((unsigned char)l1str[i] <= 0x7f) { output += tolower(l1str[i]); } else { testchar = l1str.substr(i,1); if (lcaseLatin1.find(testchar) != lcaseLatin1.end()) { output += lcaseLatin1[testchar]; } else { output += testchar; } } } return output; } void UnicodeTools::initLatin1() { string accented = "àÀáÁâÂãÃäÄåÅçÇèÈéÉêÊëËìÌíÍîÎïÏñÑòÒóÓôÔõÕöÖøØùÙúÚûÛüÜýÝ"; string key, value; for (unsigned int i = 0; i < accented.length(); i+=2) { key = accented.substr(i+1, 1); value = accented.substr(i, 1); lcaseLatin1[key] = value; } for (unsigned int i = 0; i < accented.length(); i+=2) { key = accented.substr(i, 1); value = accented.substr(i+1, 1); ucaseLatin1[key] = value; } } void UnicodeTools::addSet(set &tmpset, string utf8str) { for (unsigned int i = 0; i < utf8str.length(); i++) { if ((unsigned char)utf8str[i] <= 0x7f) { tmpset.insert(utf8str.substr(i, 1)); } else if ((unsigned char)utf8str[i] <= 0xDF) { tmpset.insert(utf8str.substr(i, 2)); i+=1; } else if ((unsigned char)utf8str[i] <= 0xEF) { tmpset.insert(utf8str.substr(i, 3)); i+=2; } else if ((unsigned char)utf8str[i] <= 0xF7) { tmpset.insert(utf8str.substr(i, 4)); i+=3; } } } void UnicodeTools::addMap(map &tmpmap, string utf8str) { string key, value; for (unsigned int i = 0; i < utf8str.length(); i++) { if ((unsigned char)utf8str[i] <= 0x7f) { key = utf8str.substr(i, 1); } else if ((unsigned char)utf8str[i] <= 0xDF) { key = utf8str.substr(i, 2); i+=1; } else if ((unsigned char)utf8str[i] <= 0xEF) { key = utf8str.substr(i, 3); i+=2; } else if ((unsigned char)utf8str[i] <= 0xF7) { key = utf8str.substr(i, 4); i+=3; } i++; if ((unsigned char)utf8str[i] <= 0x7f) { value = utf8str.substr(i, 1); } else if ((unsigned char)utf8str[i] <= 0xDF) { value = utf8str.substr(i, 2); i+=1; } else if ((unsigned char)utf8str[i] <= 0xEF) { value = utf8str.substr(i, 3); i+=2; } else if ((unsigned char)utf8str[i] <= 0xF7) { value = utf8str.substr(i, 4); i+=3; } tmpmap[key] = value; } } void UnicodeTools::initlCase() { addMap(lcase, "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyY"); addMap(lcase, "zZµΜàÀáÃâÂãÃäÄåÅæÆçÇèÈéÉêÊëËìÌíÃîÎïÃðÃñÑòÒóÓôÔõÕöÖ"); addMap(lcase, "øØùÙúÚûÛüÜýÃþÞÿŸÄĀăĂąĄćĆĉĈċĊÄÄŒÄÄŽÄ‘ÄēĒĕĔėĖęĘěĚÄĜğĞġĠ"); addMap(lcase, "ģĢĥĤħĦĩĨīĪĭĬįĮıIijIJĵĴķĶĺĹļĻľĽŀĿłÅńŃņŅňŇŋŊÅÅŒÅŎőŜŒŕŔ"); addMap(lcase, "ŗŖřŘśŚÅŜşŞšŠţŢťŤŧŦũŨūŪŭŬůŮűŰųŲŵŴŷŶźŹżŻžŽſSƃƂƅƄƈƇƌƋ"); addMap(lcase, "ƒƑƕǶƙƘơƠƣƢƥƤƨƧƭƬưƯƴƳƶƵƹƸƽƼƿǷdžDŽljLJnjNJǎÇÇÇǒǑǔǓǖǕǘǗǚǙǜǛ"); addMap(lcase, "ÇÆŽÇŸÇžÇ¡Ç Ç£Ç¢Ç¥Ç¤Ç§Ç¦Ç©Ç¨Ç«ÇªÇ­Ç¬Ç¯Ç®Ç³Ç±ÇµÇ´Ç¹Ç¸Ç»ÇºÇ½Ç¼Ç¿Ç¾ÈȀȃȂȅȄȇȆȉȈȋȊÈÈŒÈÈŽÈ‘È"); addMap(lcase, "ȓȒȕȔȗȖșȘțȚÈȜȟȞȣȢȥȤȧȦȩȨȫȪȭȬȯȮȱȰȳȲɓÆÉ”ƆɖƉɗƊəÆÉ›ÆÉ Æ“ɣƔɨƗ"); addMap(lcase, "ɩƖɯƜɲÆÉµÆŸÊ€Æ¦ÊƒÆ©ÊˆÆ®ÊŠÆ±Ê‹Æ²Ê’ƷάΆέΈήΉίΊαΑβΒγΓδΔεΕζΖηΗθΘιΙκΚλΛ"); addMap(lcase, "μΜνÎξΞοΟπΠÏΡςΣσΣτΤυΥφΦχΧψΨωΩϊΪϋΫόΌÏÎŽÏŽÎÏΒϑΘϕΦϖΠϛϚÏÏœ"); addMap(lcase, "ϟϞϡϠϣϢϥϤϧϦϩϨϫϪϭϬϯϮϰΚϱΡϲΣϵΕаÐбБвВгГдДеЕжЖзЗиИйЙкКлЛ"); addMap(lcase, "мМнÐоОпПрРÑСтТуУфФхХцЦчЧшШщЩъЪыЫьЬÑЭюЮÑЯÑЀёÐђЂѓЃєЄ"); addMap(lcase, "ѕЅіІїЇјЈљЉњЊћЋќЌÑÐўЎџÐѡѠѣѢѥѤѧѦѩѨѫѪѭѬѯѮѱѰѳѲѵѴѷѶѹѸѻѺ"); addMap(lcase, "ѽѼѿѾÒÒ€ÒÒŒÒÒŽÒ‘ÒÒ“Ò’Ò•Ò”Ò—Ò–Ò™Ò˜Ò›ÒšÒҜҟҞҡҠңҢҥҤҧҦҩҨҫҪҭҬүҮұҰҳҲҵҴҷҶ"); addMap(lcase, "Ò¹Ò¸Ò»ÒºÒ½Ò¼Ò¿Ò¾Ó‚ÓӄӃӈӇӌӋӑÓÓ“Ó’Ó•Ó”Ó—Ó–Ó™Ó˜Ó›ÓšÓӜӟӞӡӠӣӢӥӤӧӦөӨӫӪӭӬӯӮӱӰ"); addMap(lcase, "Ó³Ó²ÓµÓ´Ó¹Ó¸Õ¡Ô±Õ¢Ô²Õ£Ô³Õ¤Ô´Õ¥ÔµÕ¦Ô¶Õ§Ô·Õ¨Ô¸Õ©Ô¹ÕªÔºÕ«Ô»Õ¬Ô¼Õ­Ô½Õ®Ô¾Õ¯Ô¿Õ°Õ€Õ±ÕÕ²Õ‚Õ³ÕƒÕ´Õ„ÕµÕ…Õ¶Õ†"); addMap(lcase, "շՇոՈչՉպՊջՋռՌսÕÕ¾ÕŽÕ¿ÕÖ€ÕÖÕ‘Ö‚Õ’ÖƒÕ“Ö„Õ”Ö…Õ•Ö†Õ–á¸á¸€á¸ƒá¸‚ḅḄḇḆḉḈḋḊá¸á¸Œá¸á¸Žá¸‘á¸"); addMap(lcase, "ḓḒḕḔḗḖḙḘḛḚá¸á¸œá¸Ÿá¸žá¸¡á¸ á¸£á¸¢á¸¥á¸¤á¸§á¸¦á¸©á¸¨á¸«á¸ªá¸­á¸¬á¸¯á¸®á¸±á¸°á¸³á¸²á¸µá¸´á¸·á¸¶á¸¹á¸¸á¸»á¸ºá¸½á¸¼á¸¿á¸¾á¹á¹€á¹ƒá¹‚"); addMap(lcase, "ṅṄṇṆṉṈṋṊá¹á¹Œá¹á¹Žá¹‘á¹á¹“ṒṕṔṗṖṙṘṛṚá¹á¹œá¹Ÿá¹žá¹¡á¹ á¹£á¹¢á¹¥á¹¤á¹§á¹¦á¹©á¹¨á¹«á¹ªá¹­á¹¬á¹¯á¹®á¹±á¹°á¹³á¹²á¹µá¹´"); addMap(lcase, "ṷṶṹṸṻṺṽṼṿṾáºáº€áºƒáº‚ẅẄẇẆẉẈẋẊáºáºŒáºáºŽáº‘áºáº“ẒẕẔẛṠạẠảẢấẤầẦẩẨẫẪậẬắẮ"); addMap(lcase, "ằẰẳẲẵẴặẶẹẸẻẺẽẼếẾá»á»€á»ƒá»‚ễỄệỆỉỈịỊá»á»Œá»á»Žá»‘á»á»“ỒổỔỗỖộỘớỚá»á»œá»Ÿá»žá»¡á» "); addMap(lcase, "ợỢụỤủỦứỨừỪửỬữỮựỰỳỲỵỴỷỶỹỸἀἈá¼á¼‰á¼‚ἊἃἋἄἌἅá¼á¼†á¼Žá¼‡á¼á¼á¼˜á¼‘ἙἒἚἓἛἔἜ"); addMap(lcase, "ἕá¼á¼ á¼¨á¼¡á¼©á¼¢á¼ªá¼£á¼«á¼¤á¼¬á¼¥á¼­á¼¦á¼®á¼§á¼¯á¼°á¼¸á¼±á¼¹á¼²á¼ºá¼³á¼»á¼´á¼¼á¼µá¼½á¼¶á¼¾á¼·á¼¿á½€á½ˆá½á½‰á½‚ὊὃὋὄὌὅá½á½‘ὙὓὛ"); addMap(lcase, "ὕá½á½—ὟὠὨὡὩὢὪὣὫὤὬὥὭὦὮὧὯὰᾺάΆὲῈέΈὴῊήΉὶῚίΊὸῸόΌὺῪύΎὼῺώΏᾀᾈ"); addMap(lcase, "á¾á¾‰á¾‚ᾊᾃᾋᾄᾌᾅá¾á¾†á¾Žá¾‡á¾á¾á¾˜á¾‘ᾙᾒᾚᾓᾛᾔᾜᾕá¾á¾–ᾞᾗᾟᾠᾨᾡᾩᾢᾪᾣᾫᾤᾬᾥᾭᾦᾮᾧᾯᾰᾸᾱᾹ"); addMap(lcase, "ᾳᾼιΙῃῌá¿á¿˜á¿‘ῙῠῨῡῩῥῬῳῼï½ï¼¡ï½‚BcCdDeEfFgGhHiIjJkKlLï½ï¼­ï½Žï¼®ï½ï¼¯ï½ï¼°"); addMap(lcase, "qQrRsStTuUvVwWxXyYzZ"); } bool UnicodeTools::isLetter(string testchar) { if (letters.find(testchar) != letters.end()) { return true; } return false; } void UnicodeTools::initLetter() { addSet(letters, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmn"); addSet(letters, "opqrstuvwxyzªµºÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖØÙ"); addSet(letters, "ÚÛÜÃÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿĀÄÄ‚"); addSet(letters, "㥹ĆćĈĉĊċČÄÄŽÄÄđĒēĔĕĖėĘęĚěĜÄĞğĠġĢģĤĥĦħĨĩĪ"); addSet(letters, "īĬĭĮįİıIJijĴĵĶķĸĹĺĻļĽľĿŀÅłŃńŅņŇňʼnŊŋŌÅÅŽÅÅőŒ"); addSet(letters, "œŔŕŖŗŘřŚśŜÅŞşŠšŢţŤťŦŧŨũŪūŬŭŮůŰűŲųŴŵŶŷŸŹź"); addSet(letters, "Å»Å¼Å½Å¾Å¿Æ€ÆÆ‚ÆƒÆ„Æ…Æ†Æ‡ÆˆÆ‰ÆŠÆ‹ÆŒÆÆŽÆÆÆ‘Æ’Æ“Æ”Æ•Æ–Æ—Æ˜Æ™ÆšÆ›ÆœÆÆžÆŸÆ Æ¡Æ¢"); addSet(letters, "ƣƤƥƦƧƨƩƪƫƬƭƮƯưƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿǀÇǂǃDŽDždžLJLjljNJ"); addSet(letters, "NjnjÇÇŽÇÇǑǒǓǔǕǖǗǘǙǚǛǜÇǞǟǠǡǢǣǤǥǦǧǨǩǪǫǬǭǮǯǰDZDz"); addSet(letters, "dzǴǵǶǷǸǹǺǻǼǽǾǿȀÈȂȃȄȅȆȇȈȉȊȋȌÈÈŽÈÈȑȒȓȔȕȖȗȘșȚ"); addSet(letters, "țȜÈȞȟȢȣȤȥȦȧȨȩȪȫȬȭȮȯȰȱȲȳÉɑɒɓɔɕɖɗɘəɚɛɜÉɞɟɠ"); addSet(letters, "ɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀÊʂʃʄʅʆʇʈ"); addSet(letters, "ʉʊʋʌÊÊŽÊÊʑʒʓʔʕʖʗʘʙʚʛʜÊʞʟʠʡʢʣʤʥʦʧʨʩʪʫʬʭʰʱʲ"); addSet(letters, "ʳʴʵʶʷʸʻʼʽʾʿˀËËˑˠˡˢˣˤˮͺΆΈΉΊΌΎÎÎΑΒΓΔΕΖΗΘΙΚ"); addSet(letters, "ΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπÏςσ"); addSet(letters, "τυφχψωϊϋόÏÏŽÏϑϒϓϔϕϖϗϚϛϜÏϞϟϠϡϢϣϤϥϦϧϨϩϪϫϬϭϮ"); addSet(letters, "ϯϰϱϲϳϴϵЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБВГДЕЖЗИЙКЛМÐОПР"); addSet(letters, "СТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрÑтуфхцчш"); addSet(letters, "щъыьÑÑŽÑÑёђѓєѕіїјљњћќÑўџѠѡѢѣѤѥѦѧѨѩѪѫѬѭѮѯѰ"); addSet(letters, "ѱѲѳѴѵѶѷѸѹѺѻѼѽѾѿҀÒÒŒÒÒŽÒÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›ÒœÒÒžÒŸÒ Ò¡Ò¢"); addSet(letters, "Ò£Ò¤Ò¥Ò¦Ò§Ò¨Ò©ÒªÒ«Ò¬Ò­Ò®Ò¯Ò°Ò±Ò²Ò³Ò´ÒµÒ¶Ò·Ò¸Ò¹ÒºÒ»Ò¼Ò½Ò¾Ò¿Ó€ÓÓ‚ÓƒÓ„Ó‡ÓˆÓ‹ÓŒÓÓ‘"); addSet(letters, "Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬Ó­Ó®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¸Ó¹Ô±Ô²"); addSet(letters, "Ô³Ô´ÔµÔ¶Ô·Ô¸Ô¹ÔºÔ»Ô¼Ô½Ô¾Ô¿Õ€ÕÕ‚ÕƒÕ„Õ…Õ†Õ‡ÕˆÕ‰ÕŠÕ‹ÕŒÕÕŽÕÕÕ‘Õ’Õ“Õ”Õ•Õ–Õ™Õ¡Õ¢Õ£"); addSet(letters, "Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬Õ­Õ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€ÖÖ‚ÖƒÖ„Ö…Ö†Ö‡×בגד"); addSet(letters, "הוזחטיךכל×מןנסעףפץצקרשתװױײءآأؤإئابةتثجحخ"); addSet(letters, "دذرزسشصضطظعغـÙقكلمنهوىيٱٲٳٴٵٶٷٸٹٺٻټٽپٿڀÚ"); addSet(letters, "Ú‚ÚƒÚ„Ú…Ú†Ú‡ÚˆÚ‰ÚŠÚ‹ÚŒÚÚŽÚÚÚ‘Ú’Ú“Ú”Ú•Ú–Ú—Ú˜Ú™ÚšÚ›ÚœÚÚžÚŸÚ Ú¡Ú¢Ú£Ú¤Ú¥Ú¦Ú§Ú¨Ú©"); addSet(letters, "ÚªÚ«Ú¬Ú­Ú®Ú¯Ú°Ú±Ú²Ú³Ú´ÚµÚ¶Ú·Ú¸Ú¹ÚºÚ»Ú¼Ú½Ú¾Ú¿Û€ÛÛ‚ÛƒÛ„Û…Û†Û‡ÛˆÛ‰ÛŠÛ‹ÛŒÛÛŽÛÛÛ‘"); addSet(letters, "Û’Û“Û•Û¥Û¦ÛºÛ»Û¼ÜܒܓܔܕܖܗܘܙܚܛܜÜܞܟܠܡܢܣܤܥܦܧܨܩܪܫܬހÞÞ‚Þƒ"); addSet(letters, "Þ„Þ…Þ†Þ‡ÞˆÞ‰ÞŠÞ‹ÞŒÞÞŽÞÞÞ‘Þ’Þ“Þ”Þ•Þ–Þ—Þ˜Þ™ÞšÞ›ÞœÞޞޟޠޡޢޣޤޥअआइईउऊ"); addSet(letters, "ऋऌà¤à¤Žà¤à¤à¤‘ऒओऔकखगघङचछजà¤à¤žà¤Ÿà¤ à¤¡à¤¢à¤£à¤¤à¤¥à¤¦à¤§à¤¨à¤©à¤ªà¤«à¤¬à¤­à¤®à¤¯à¤°à¤±à¤²"); addSet(letters, "ळऴवशषसहऽà¥à¥˜à¥™à¥šà¥›à¥œà¥à¥žà¥Ÿà¥ à¥¡à¦…আইঈউঊঋঌà¦à¦à¦“ঔকখগঘঙচছজà¦"); addSet(letters, "ঞটঠডঢণতথদধনপফবভমযরলশষসহড়à§à§Ÿà§ à§¡à§°à§±à¨…ਆਇਈਉਊà¨à¨à¨“ਔ"); addSet(letters, "ਕਖਗਘਙਚਛਜà¨à¨žà¨Ÿà¨ à¨¡à¨¢à¨£à¨¤à¨¥à¨¦à¨§à¨¨à¨ªà¨«à¨¬à¨­à¨®à¨¯à¨°à¨²à¨³à¨µà¨¶à¨¸à¨¹à©™à©šà©›à©œà©žà©²à©³"); addSet(letters, "ੴઅઆઇઈઉઊઋàªàªàªàª‘ઓઔકખગઘઙચછજàªàªžàªŸàª àª¡àª¢àª£àª¤àª¥àª¦àª§àª¨àªªàª«àª¬àª­àª®àª¯"); addSet(letters, "રલળવશષસહઽà«à« à¬…ଆଇଈଉଊଋଌà¬à¬à¬“ଔକଖଗଘଙଚଛଜà¬à¬žà¬Ÿà¬ à¬¡à¬¢à¬£à¬¤à¬¥"); addSet(letters, "ଦଧନପଫବଭମଯରଲଳଶଷସହଽଡ଼à­à­Ÿà­ à­¡à®…ஆஇஈஉஊஎà®à®à®’ஓஔகஙசஜஞட"); addSet(letters, "ணதநனபமயரறலளழவஷஸஹఅఆఇఈఉఊఋఌఎà°à°à°’ఓఔకఖగఘఙచఛజà°à°ž"); addSet(letters, "టఠడఢణతథదధనపఫబభమయరఱలళవశషసహౠౡಅಆಇಈಉಊಋಌಎà²à²à²’ಓ"); addSet(letters, "ಔಕಖಗಘಙಚಛಜà²à²žà²Ÿà² à²¡à²¢à²£à²¤à²¥à²¦à²§à²¨à²ªà²«à²¬à²­à²®à²¯à²°à²±à²²à²³à²µà²¶à²·à²¸à²¹à³žà³ à³¡à´…"); addSet(letters, "ആഇഈഉഊഋഌഎà´à´à´’ഓഔകഖഗഘങചഛജà´à´žà´Ÿà´ à´¡à´¢à´£à´¤à´¥à´¦à´§à´¨à´ªà´«à´¬à´­à´®à´¯à´°"); addSet(letters, "റലളഴവശഷസഹൠൡඅආඇඈඉඊඋඌà¶à¶Žà¶à¶à¶‘ඒඓඔඕඖකඛගà¶à¶žà¶Ÿà¶ à¶¡à¶¢à¶£à¶¤"); addSet(letters, "ඥඦටඨඩඪණඬතථදධනඳපඵබභමඹයරලවà·à·‚සහළෆà¸à¸‚ฃคฅฆงจฉช"); addSet(letters, "ซฌà¸à¸Žà¸à¸à¸‘ฒณดตถทธนบปผà¸à¸žà¸Ÿà¸ à¸¡à¸¢à¸£à¸¤à¸¥à¸¦à¸§à¸¨à¸©à¸ªà¸«à¸¬à¸­à¸®à¸¯à¸°à¸²à¸³"); addSet(letters, "เà¹à¹‚ใไๅๆàºàº‚ຄງຈຊàºàº”ຕຖທນບປຜàºàºžàºŸàº¡àº¢àº£àº¥àº§àºªàº«àº­àº®àº¯àº°àº²àº³àº½à»€"); addSet(letters, "à»à»‚ໃໄໆໜà»à¼€à½€à½à½‚གྷངཅཆཇཉཊཋཌà½à½Žà½à½à½‘དྷནཔཕབབྷམཙཚཛཛྷà½à½žà½Ÿà½ "); addSet(letters, "ཡརལཤཥསཧཨཀྵཪྈྉྊྋကá€á€‚ဃငစဆဇဈဉညဋဌá€á€Žá€á€á€‘ဒဓနပဖဗဘမ"); addSet(letters, "ယရလá€á€žá€Ÿá€ á€¡á€£á€¤á€¥á€¦á€§á€©á€ªáá‘á’á“á”á•ႠႡႢႣႤႥႦႧႨႩႪႫႬႭႮႯႰႱႲ"); addSet(letters, "ႳႴႵႶႷႸႹႺႻႼႽႾႿჀáƒáƒ‚ჃჄჅáƒáƒ‘გდევზთიკლმნáƒáƒžáƒŸáƒ áƒ¡áƒ¢áƒ£áƒ¤"); addSet(letters, "ქღყშჩცძწჭხჯჰჱჲჳჴჵჶᄀá„ᄂᄃᄄᄅᄆᄇᄈᄉᄊᄋᄌá„ᄎá„á„ᄑᄒᄓᄔᄕ"); addSet(letters, "ᄖᄗᄘᄙᄚᄛᄜá„ᄞᄟᄠᄡᄢᄣᄤᄥᄦᄧᄨᄩᄪᄫᄬᄭᄮᄯᄰᄱᄲᄳᄴᄵᄶᄷᄸᄹᄺᄻᄼᄽ"); addSet(letters, "ᄾᄿᅀá…ᅂᅃᅄᅅᅆᅇᅈᅉᅊᅋᅌá…á…Žá…á…ᅑᅒᅓᅔᅕᅖᅗᅘᅙᅟᅠᅡᅢᅣᅤᅥᅦᅧᅨᅩᅪ"); addSet(letters, "ᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵᅶᅷᅸᅹᅺᅻᅼᅽᅾᅿᆀá†á†‚ᆃᆄᆅᆆᆇᆈᆉᆊᆋᆌá†á†Žá†á†á†‘ᆒ"); addSet(letters, "ᆓᆔᆕᆖᆗᆘᆙᆚᆛᆜá†á†žá†Ÿá† á†¡á†¢á†¨á†©á†ªá†«á†¬á†­á†®á†¯á†°á†±á†²á†³á†´á†µá†¶á†·á†¸á†¹á†ºá†»á†¼á†½á†¾á†¿"); addSet(letters, "ᇀá‡á‡‚ᇃᇄᇅᇆᇇᇈᇉᇊᇋᇌá‡á‡Žá‡á‡á‡‘ᇒᇓᇔᇕᇖᇗᇘᇙᇚᇛᇜá‡á‡žá‡Ÿá‡ á‡¡á‡¢á‡£á‡¤á‡¥á‡¦á‡§"); addSet(letters, "ᇨᇩᇪᇫᇬᇭᇮᇯᇰᇱᇲᇳᇴᇵᇶᇷᇸᇹሀáˆáˆ‚ሃሄህሆለሉሊላሌáˆáˆŽáˆáˆáˆ‘ሒሓሔሕሖ"); addSet(letters, "ሗመሙሚማሜáˆáˆžáˆŸáˆ áˆ¡áˆ¢áˆ£áˆ¤áˆ¥áˆ¦áˆ§áˆ¨áˆ©áˆªáˆ«áˆ¬áˆ­áˆ®áˆ¯áˆ°áˆ±áˆ²áˆ³áˆ´áˆµáˆ¶áˆ·áˆ¸áˆ¹áˆºáˆ»áˆ¼áˆ½áˆ¾"); addSet(letters, "ሿቀá‰á‰‚ቃቄቅቆቈቊቋቌá‰á‰á‰‘ቒቓቔቕቖቘቚቛቜá‰á‰ á‰¡á‰¢á‰£á‰¤á‰¥á‰¦á‰§á‰¨á‰©á‰ªá‰«á‰¬á‰­á‰®"); addSet(letters, "ቯተቱቲታቴትቶቷቸቹቺቻቼችቾቿኀáŠáŠ‚áŠƒáŠ„áŠ…áŠ†áŠˆáŠŠáŠ‹áŠŒáŠáŠáŠ‘áŠ’áŠ“áŠ”áŠ•áŠ–áŠ—áŠ˜áŠ™áŠš"); addSet(letters, "ኛኜáŠáŠžáŠŸáŠ áŠ¡áŠ¢áŠ£áŠ¤áŠ¥áŠ¦áŠ§áŠ¨áŠ©áŠªáŠ«áŠ¬áŠ­áŠ®áŠ°áŠ²áŠ³áŠ´áŠµáŠ¸áŠ¹áŠºáŠ»áŠ¼áŠ½áŠ¾á‹€á‹‚á‹ƒá‹„á‹…á‹ˆá‹‰á‹Š"); addSet(letters, "ዋዌá‹á‹Žá‹á‹‘ዒዓዔዕዖዘዙዚዛዜá‹á‹žá‹Ÿá‹ á‹¡á‹¢á‹£á‹¤á‹¥á‹¦á‹§á‹¨á‹©á‹ªá‹«á‹¬á‹­á‹®á‹°á‹±á‹²á‹³á‹´á‹µ"); addSet(letters, "ዶዷዸዹዺዻዼዽዾዿጀáŒáŒ‚ጃጄጅጆጇገጉጊጋጌáŒáŒŽáŒáŒ’ጓጔጕጘጙጚጛጜáŒáŒžáŒ áŒ¡áŒ¢"); addSet(letters, "ጣጤጥጦጧጨጩጪጫጬጭጮጯጰጱጲጳጴጵጶጷጸጹጺጻጼጽጾጿá€áá‚áƒá„á…á†áˆá‰áŠá‹"); addSet(letters, "áŒááŽááá‘á’á“á”á•á–á—á˜á™ášáŽ áŽ¡áŽ¢áŽ£áŽ¤áŽ¥áŽ¦áŽ§áŽ¨áŽ©áŽªáŽ«áŽ¬áŽ­áŽ®áŽ¯áŽ°áŽ±áŽ²áŽ³áŽ´áŽµáŽ¶áŽ·áŽ¸"); addSet(letters, "ᎹᎺᎻᎼᎽᎾᎿá€áá‚áƒá„á…á†á‡áˆá‰áŠá‹áŒááŽááá‘á’á“á”á•á–á—á˜á™ášá›áœáážáŸá "); addSet(letters, "á¡á¢á£á¤á¥á¦á§á¨á©áªá«á¬á­á®á¯á°á±á²á³á´áá‚áƒá„á…á†á‡áˆá‰áŠá‹áŒááŽááá‘á’á“á”"); addSet(letters, "á•á–á—á˜á™ášá›áœáážáŸá á¡á¢á£á¤á¥á¦á§á¨á©áªá«á¬á­á®á¯á°á±á²á³á´áµá¶á·á¸á¹áºá»á¼"); addSet(letters, "á½á¾á¿á‘€á‘ᑂᑃᑄᑅᑆᑇᑈᑉᑊᑋᑌá‘ᑎá‘á‘ᑑᑒᑓᑔᑕᑖᑗᑘᑙᑚᑛᑜá‘ᑞᑟᑠᑡᑢᑣᑤ"); addSet(letters, "ᑥᑦᑧᑨᑩᑪᑫᑬᑭᑮᑯᑰᑱᑲᑳᑴᑵᑶᑷᑸᑹᑺᑻᑼᑽᑾᑿᒀá’ᒂᒃᒄᒅᒆᒇᒈᒉᒊᒋᒌ"); addSet(letters, "á’á’Žá’á’ᒑᒒᒓᒔᒕᒖᒗᒘᒙᒚᒛᒜá’ᒞᒟᒠᒡᒢᒣᒤᒥᒦᒧᒨᒩᒪᒫᒬᒭᒮᒯᒰᒱᒲᒳᒴ"); addSet(letters, "ᒵᒶᒷᒸᒹᒺᒻᒼᒽᒾᒿᓀá“ᓂᓃᓄᓅᓆᓇᓈᓉᓊᓋᓌá“ᓎá“á“ᓑᓒᓓᓔᓕᓖᓗᓘᓙᓚᓛᓜ"); addSet(letters, "á“ᓞᓟᓠᓡᓢᓣᓤᓥᓦᓧᓨᓩᓪᓫᓬᓭᓮᓯᓰᓱᓲᓳᓴᓵᓶᓷᓸᓹᓺᓻᓼᓽᓾᓿᔀá”ᔂᔃᔄ"); addSet(letters, "ᔅᔆᔇᔈᔉᔊᔋᔌá”ᔎá”á”ᔑᔒᔓᔔᔕᔖᔗᔘᔙᔚᔛᔜá”ᔞᔟᔠᔡᔢᔣᔤᔥᔦᔧᔨᔩᔪᔫᔬ"); addSet(letters, "ᔭᔮᔯᔰᔱᔲᔳᔴᔵᔶᔷᔸᔹᔺᔻᔼᔽᔾᔿᕀá•ᕂᕃᕄᕅᕆᕇᕈᕉᕊᕋᕌá•ᕎá•á•á•‘á•’á•“á•”"); addSet(letters, "ᕕᕖᕗᕘᕙᕚᕛᕜá•ᕞᕟᕠᕡᕢᕣᕤᕥᕦᕧᕨᕩᕪᕫᕬᕭᕮᕯᕰᕱᕲᕳᕴᕵᕶᕷᕸᕹᕺᕻᕼ"); addSet(letters, "ᕽᕾᕿᖀá–ᖂᖃᖄᖅᖆᖇᖈᖉᖊᖋᖌá–á–Žá–á–ᖑᖒᖓᖔᖕᖖᖗᖘᖙᖚᖛᖜá–ᖞᖟᖠᖡᖢᖣᖤ"); addSet(letters, "ᖥᖦᖧᖨᖩᖪᖫᖬᖭᖮᖯᖰᖱᖲᖳᖴᖵᖶᖷᖸᖹᖺᖻᖼᖽᖾᖿᗀá—ᗂᗃᗄᗅᗆᗇᗈᗉᗊᗋᗌ"); addSet(letters, "á—á—Žá—á—ᗑᗒᗓᗔᗕᗖᗗᗘᗙᗚᗛᗜá—ᗞᗟᗠᗡᗢᗣᗤᗥᗦᗧᗨᗩᗪᗫᗬᗭᗮᗯᗰᗱᗲᗳᗴ"); addSet(letters, "ᗵᗶᗷᗸᗹᗺᗻᗼᗽᗾᗿᘀá˜á˜‚ᘃᘄᘅᘆᘇᘈᘉᘊᘋᘌá˜á˜Žá˜á˜á˜‘ᘒᘓᘔᘕᘖᘗᘘᘙᘚᘛᘜ"); addSet(letters, "á˜á˜žá˜Ÿá˜ á˜¡á˜¢á˜£á˜¤á˜¥á˜¦á˜§á˜¨á˜©á˜ªá˜«á˜¬á˜­á˜®á˜¯á˜°á˜±á˜²á˜³á˜´á˜µá˜¶á˜·á˜¸á˜¹á˜ºá˜»á˜¼á˜½á˜¾á˜¿á™€á™á™‚ᙃᙄ"); addSet(letters, "ᙅᙆᙇᙈᙉᙊᙋᙌá™á™Žá™á™á™‘ᙒᙓᙔᙕᙖᙗᙘᙙᙚᙛᙜá™á™žá™Ÿá™ á™¡á™¢á™£á™¤á™¥á™¦á™§á™¨á™©á™ªá™«á™¬"); addSet(letters, "ᙯᙰᙱᙲᙳᙴᙵᙶášáš‚ᚃᚄᚅᚆᚇᚈᚉᚊᚋᚌášášŽášášáš‘ᚒᚓᚔᚕᚖᚗᚘᚙᚚᚠᚡᚢᚣᚤᚥ"); addSet(letters, "ᚦᚧᚨᚩᚪᚫᚬᚭᚮᚯᚰᚱᚲᚳᚴᚵᚶᚷᚸᚹᚺᚻᚼᚽᚾᚿᛀá›á›‚ᛃᛄᛅᛆᛇᛈᛉᛊᛋᛌá›"); addSet(letters, "ᛎá›á›á›‘ᛒᛓᛔᛕᛖᛗᛘᛙᛚᛛᛜá›á›žá›Ÿá› á›¡á›¢á›£á›¤á›¥á›¦á›§á›¨á›©á›ªáž€ážáž‚ឃងចឆជឈញដ"); addSet(letters, "ឋឌážážŽážážáž‘ធនបផពភមយរលវážážžážŸáž áž¡áž¢áž£áž¤áž¥áž¦áž§áž¨áž©ážªáž«áž¬áž­áž®áž¯áž°áž±áž²"); addSet(letters, "ឳᠠᠡᠢᠣᠤᠥᠦᠧᠨᠩᠪᠫᠬᠭᠮᠯᠰᠱᠲᠳᠴᠵᠶᠷᠸᠹᠺᠻᠼᠽᠾᠿᡀá¡á¡‚ᡃᡄᡅᡆ"); addSet(letters, "ᡇᡈᡉᡊᡋᡌá¡á¡Žá¡á¡á¡‘ᡒᡓᡔᡕᡖᡗᡘᡙᡚᡛᡜá¡á¡žá¡Ÿá¡ á¡¡á¡¢á¡£á¡¤á¡¥á¡¦á¡§á¡¨á¡©á¡ªá¡«á¡¬á¡­á¡®"); addSet(letters, "ᡯᡰᡱᡲᡳᡴᡵᡶᡷᢀá¢á¢‚ᢃᢄᢅᢆᢇᢈᢉᢊᢋᢌá¢á¢Žá¢á¢á¢‘ᢒᢓᢔᢕᢖᢗᢘᢙᢚᢛᢜá¢á¢ž"); addSet(letters, "ᢟᢠᢡᢢᢣᢤᢥᢦᢧᢨḀá¸á¸‚ḃḄḅḆḇḈḉḊḋḌá¸á¸Žá¸á¸á¸‘ḒḓḔḕḖḗḘḙḚḛḜá¸"); addSet(letters, "ḞḟḠḡḢḣḤḥḦḧḨḩḪḫḬḭḮḯḰḱḲḳḴḵḶḷḸḹḺḻḼḽḾḿṀá¹á¹‚ṃṄṅ"); addSet(letters, "ṆṇṈṉṊṋṌá¹á¹Žá¹á¹á¹‘ṒṓṔṕṖṗṘṙṚṛṜá¹á¹žá¹Ÿá¹ á¹¡á¹¢á¹£á¹¤á¹¥á¹¦á¹§á¹¨á¹©á¹ªá¹«á¹¬á¹­"); addSet(letters, "ṮṯṰṱṲṳṴṵṶṷṸṹṺṻṼṽṾṿẀáºáº‚ẃẄẅẆẇẈẉẊẋẌáºáºŽáºáºáº‘ẒẓẔẕ"); addSet(letters, "ẖẗẘẙẚẛẠạẢảẤấẦầẨẩẪẫẬậẮắẰằẲẳẴẵẶặẸẹẺẻẼẽẾếỀá»"); addSet(letters, "ỂểỄễỆệỈỉỊịỌá»á»Žá»á»á»‘ỒồỔổỖỗỘộỚớỜá»á»žá»Ÿá» á»¡á»¢á»£á»¤á»¥á»¦á»§á»¨á»©"); addSet(letters, "ỪừỬửỮữỰựỲỳỴỵỶỷỸỹἀá¼á¼‚ἃἄἅἆἇἈἉἊἋἌá¼á¼Žá¼á¼á¼‘ἒἓἔἕἘἙ"); addSet(letters, "ἚἛἜá¼á¼ á¼¡á¼¢á¼£á¼¤á¼¥á¼¦á¼§á¼¨á¼©á¼ªá¼«á¼¬á¼­á¼®á¼¯á¼°á¼±á¼²á¼³á¼´á¼µá¼¶á¼·á¼¸á¼¹á¼ºá¼»á¼¼á¼½á¼¾á¼¿á½€á½á½‚ὃ"); addSet(letters, "ὄὅὈὉὊὋὌá½á½á½‘ὒὓὔὕὖὗὙὛá½á½Ÿá½ á½¡á½¢á½£á½¤á½¥á½¦á½§á½¨á½©á½ªá½«á½¬á½­á½®á½¯á½°á½±á½²á½³"); addSet(letters, "ὴήὶίὸόὺύὼώᾀá¾á¾‚ᾃᾄᾅᾆᾇᾈᾉᾊᾋᾌá¾á¾Žá¾á¾á¾‘ᾒᾓᾔᾕᾖᾗᾘᾙᾚᾛᾜá¾"); addSet(letters, "ᾞᾟᾠᾡᾢᾣᾤᾥᾦᾧᾨᾩᾪᾫᾬᾭᾮᾯᾰᾱᾲᾳᾴᾶᾷᾸᾹᾺΆᾼιῂῃῄῆῇῈΈῊΉ"); addSet(letters, "ῌá¿á¿‘ῒΐῖῗῘῙῚΊῠῡῢΰῤῥῦῧῨῩῪΎῬῲῳῴῶῷῸΌῺΏῼâ¿â„‚ℇℊℋℌ"); addSet(letters, "â„ℎâ„â„ℑℒℓℕℙℚℛℜâ„ℤΩℨKÅℬℭℯℰℱℳℴℵℶℷℸℹ々〆〱〲〳〴〵ãã‚ãƒ"); addSet(letters, "ã„ã…ã†ã‡ãˆã‰ãŠã‹ãŒããŽããã‘ã’ã“ã”ã•ã–ã—ã˜ã™ãšã›ãœããžãŸã ã¡ã¢ã£ã¤ã¥ã¦ã§ã¨ã©ãªã«"); addSet(letters, "ã¬ã­ã®ã¯ã°ã±ã²ã³ã´ãµã¶ã·ã¸ã¹ãºã»ã¼ã½ã¾ã¿ã‚€ã‚もゃやゅゆょよらりるれã‚ゎã‚ã‚ã‚‘ã‚’ã‚“"); addSet(letters, "ã‚”ã‚ゞァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダãƒãƒ‚ッツヅ"); addSet(letters, "テデトドナニヌãƒãƒŽãƒãƒãƒ‘ヒビピフブプヘベペホボãƒãƒžãƒŸãƒ ãƒ¡ãƒ¢ãƒ£ãƒ¤ãƒ¥ãƒ¦ãƒ§ãƒ¨ãƒ©ãƒªãƒ«ãƒ¬ãƒ­"); addSet(letters, "ヮワヰヱヲンヴヵヶヷヸヹヺーヽヾㄅㄆㄇㄈㄉㄊㄋㄌã„ㄎã„ã„ㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜ"); addSet(letters, "ã„ㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩㄪㄫㄬㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀã…ㅂㅃㅄㅅㅆㅇㅈ"); addSet(letters, "ㅉㅊㅋㅌã…ã…Žã…ã…ㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜã…ㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰ"); addSet(letters, "ㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀã†ã†‚ㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌã†ã†Žã† ã†¡ã†¢ã†£ã†¤ã†¥ã†¦ã†§ã†¨ã†©"); addSet(letters, "ㆪㆫㆬㆭㆮㆯㆰㆱㆲㆳㆴㆵㆶㆷã€ä¶µä¸€é¾¥ê€€ê€ê€‚ꀃꀄꀅꀆꀇꀈꀉꀊꀋꀌê€ê€Žê€ê€ê€‘ꀒꀓꀔꀕ"); addSet(letters, "ꀖꀗꀘꀙꀚꀛꀜê€ê€žê€Ÿê€ ê€¡ê€¢ê€£ê€¤ê€¥ê€¦ê€§ê€¨ê€©ê€ªê€«ê€¬ê€­ê€®ê€¯ê€°ê€±ê€²ê€³ê€´ê€µê€¶ê€·ê€¸ê€¹ê€ºê€»ê€¼ê€½"); addSet(letters, "ꀾꀿê€êê‚êƒê„ê…ê†ê‡êˆê‰êŠê‹êŒêêŽêêê‘ê’ê“ê”ê•ê–ê—ê˜ê™êšê›êœêêžêŸê ê¡ê¢ê£ê¤ê¥"); addSet(letters, "ê¦ê§ê¨ê©êªê«ê¬ê­ê®ê¯ê°ê±ê²ê³ê´êµê¶ê·ê¸ê¹êºê»ê¼ê½ê¾ê¿ê‚€ê‚ꂂꂃꂄꂅꂆꂇꂈꂉꂊꂋꂌê‚"); addSet(letters, "ꂎê‚ê‚ꂑꂒꂓꂔꂕꂖꂗꂘꂙꂚꂛꂜê‚ꂞꂟꂠꂡꂢꂣꂤꂥꂦꂧꂨꂩꂪꂫꂬꂭꂮꂯꂰꂱꂲꂳꂴꂵ"); addSet(letters, "ꂶꂷꂸꂹꂺꂻꂼꂽꂾꂿꃀêƒêƒ‚ꃃꃄꃅꃆꃇꃈꃉꃊꃋꃌêƒêƒŽêƒêƒêƒ‘ꃒꃓꃔꃕꃖꃗꃘꃙꃚꃛꃜêƒ"); addSet(letters, "ꃞꃟꃠꃡꃢꃣꃤꃥꃦꃧꃨꃩꃪꃫꃬꃭꃮꃯꃰꃱꃲꃳꃴꃵꃶꃷꃸꃹꃺꃻꃼꃽꃾꃿꄀê„ꄂꄃꄄꄅ"); addSet(letters, "ꄆꄇꄈꄉꄊꄋꄌê„ꄎê„ê„ꄑꄒꄓꄔꄕꄖꄗꄘꄙꄚꄛꄜê„ꄞꄟꄠꄡꄢꄣꄤꄥꄦꄧꄨꄩꄪꄫꄬꄭ"); addSet(letters, "ꄮꄯꄰꄱꄲꄳꄴꄵꄶꄷꄸꄹꄺꄻꄼꄽꄾꄿꅀê…ꅂꅃꅄꅅꅆꅇꅈꅉꅊꅋꅌê…ê…Žê…ê…ꅑꅒꅓꅔꅕ"); addSet(letters, "ꅖꅗꅘꅙꅚꅛꅜê…ꅞꅟꅠꅡꅢꅣꅤꅥꅦꅧꅨꅩꅪꅫꅬꅭꅮꅯꅰꅱꅲꅳꅴꅵꅶꅷꅸꅹꅺꅻꅼꅽ"); addSet(letters, "ꅾꅿꆀê†ê†‚ꆃꆄꆅꆆꆇꆈꆉꆊꆋꆌê†ê†Žê†ê†ê†‘ꆒꆓꆔꆕꆖꆗꆘꆙꆚꆛꆜê†ê†žê†Ÿê† ê†¡ê†¢ê†£ê†¤ê†¥"); addSet(letters, "ꆦꆧꆨꆩꆪꆫꆬꆭꆮꆯꆰꆱꆲꆳꆴꆵꆶꆷꆸꆹꆺꆻꆼꆽꆾꆿꇀê‡ê‡‚ꇃꇄꇅꇆꇇꇈꇉꇊꇋꇌê‡"); addSet(letters, "ꇎê‡ê‡ê‡‘ꇒꇓꇔꇕꇖꇗꇘꇙꇚꇛꇜê‡ê‡žê‡Ÿê‡ ê‡¡ê‡¢ê‡£ê‡¤ê‡¥ê‡¦ê‡§ê‡¨ê‡©ê‡ªê‡«ê‡¬ê‡­ê‡®ê‡¯ê‡°ê‡±ê‡²ê‡³ê‡´ê‡µ"); addSet(letters, "ꇶꇷꇸꇹꇺꇻꇼꇽꇾꇿꈀêˆêˆ‚ꈃꈄꈅꈆꈇꈈꈉꈊꈋꈌêˆêˆŽêˆêˆêˆ‘ꈒꈓꈔꈕꈖꈗꈘꈙꈚꈛꈜêˆ"); addSet(letters, "ꈞꈟꈠꈡꈢꈣꈤꈥꈦꈧꈨꈩꈪꈫꈬꈭꈮꈯꈰꈱꈲꈳꈴꈵꈶꈷꈸꈹꈺꈻꈼꈽꈾꈿꉀê‰ê‰‚ꉃꉄꉅ"); addSet(letters, "ꉆꉇꉈꉉꉊꉋꉌê‰ê‰Žê‰ê‰ê‰‘ꉒꉓꉔꉕꉖꉗꉘꉙꉚꉛꉜê‰ê‰žê‰Ÿê‰ ê‰¡ê‰¢ê‰£ê‰¤ê‰¥ê‰¦ê‰§ê‰¨ê‰©ê‰ªê‰«ê‰¬ê‰­"); addSet(letters, "ꉮꉯꉰꉱꉲꉳꉴꉵꉶꉷꉸꉹꉺꉻꉼꉽꉾꉿꊀêŠêŠ‚êŠƒêŠ„êŠ…êŠ†êŠ‡êŠˆêŠ‰êŠŠêŠ‹êŠŒêŠêŠŽêŠêŠêŠ‘êŠ’êŠ“êŠ”êŠ•"); addSet(letters, "ꊖꊗꊘꊙꊚꊛꊜêŠêŠžêŠŸêŠ êŠ¡êŠ¢êŠ£êŠ¤êŠ¥êŠ¦êŠ§êŠ¨êŠ©êŠªêŠ«êŠ¬êŠ­êŠ®êŠ¯êŠ°êŠ±êŠ²êŠ³êŠ´êŠµêŠ¶êŠ·êŠ¸êŠ¹êŠºêŠ»êŠ¼êŠ½"); addSet(letters, "ꊾꊿꋀê‹ê‹‚ꋃꋄꋅꋆꋇꋈꋉꋊꋋꋌê‹ê‹Žê‹ê‹ê‹‘ꋒꋓꋔꋕꋖꋗꋘꋙꋚꋛꋜê‹ê‹žê‹Ÿê‹ ê‹¡ê‹¢ê‹£ê‹¤ê‹¥"); addSet(letters, "ꋦꋧꋨꋩꋪꋫꋬꋭꋮꋯꋰꋱꋲꋳꋴꋵꋶꋷꋸꋹꋺꋻꋼꋽꋾꋿꌀêŒêŒ‚ꌃꌄꌅꌆꌇꌈꌉꌊꌋꌌêŒ"); addSet(letters, "ꌎêŒêŒêŒ‘ꌒꌓꌔꌕꌖꌗꌘꌙꌚꌛꌜêŒêŒžêŒŸêŒ êŒ¡êŒ¢êŒ£êŒ¤êŒ¥êŒ¦êŒ§êŒ¨êŒ©êŒªêŒ«êŒ¬êŒ­êŒ®êŒ¯êŒ°êŒ±êŒ²êŒ³êŒ´êŒµ"); addSet(letters, "ꌶꌷꌸꌹꌺꌻꌼꌽꌾꌿê€êê‚êƒê„ê…ê†ê‡êˆê‰êŠê‹êŒêêŽêêê‘ê’ê“ê”ê•ê–ê—ê˜ê™êšê›êœê"); addSet(letters, "êžêŸê ê¡ê¢ê£ê¤ê¥ê¦ê§ê¨ê©êªê«ê¬ê­ê®ê¯ê°ê±ê²ê³ê´êµê¶ê·ê¸ê¹êºê»ê¼ê½ê¾ê¿êŽ€êŽêŽ‚êŽƒêŽ„êŽ…"); addSet(letters, "ꎆꎇꎈꎉꎊꎋꎌêŽêŽŽêŽêŽêŽ‘êŽ’êŽ“êŽ”êŽ•êŽ–êŽ—êŽ˜êŽ™êŽšêŽ›êŽœêŽêŽžêŽŸêŽ êŽ¡êŽ¢êŽ£êŽ¤êŽ¥êŽ¦êŽ§êŽ¨êŽ©êŽªêŽ«êŽ¬êŽ­"); addSet(letters, "ꎮꎯꎰꎱꎲꎳꎴꎵꎶꎷꎸꎹꎺꎻꎼꎽꎾꎿê€êê‚êƒê„ê…ê†ê‡êˆê‰êŠê‹êŒêêŽêêê‘ê’ê“ê”ê•"); addSet(letters, "ê–ê—ê˜ê™êšê›êœêêžêŸê ê¡ê¢ê£ê¤ê¥ê¦ê§ê¨ê©êªê«ê¬ê­ê®ê¯ê°ê±ê²ê³ê´êµê¶ê·ê¸ê¹êºê»ê¼ê½"); addSet(letters, "ê¾ê¿ê€êê‚êƒê„ê…ê†ê‡êˆê‰êŠê‹êŒêêŽêêê‘ê’ê“ê”ê•ê–ê—ê˜ê™êšê›êœêêžêŸê ê¡ê¢ê£ê¤ê¥"); addSet(letters, "ê¦ê§ê¨ê©êªê«ê¬ê­ê®ê¯ê°ê±ê²ê³ê´êµê¶ê·ê¸ê¹êºê»ê¼ê½ê¾ê¿ê‘€ê‘ꑂꑃꑄꑅꑆꑇꑈꑉꑊꑋꑌê‘"); addSet(letters, "ꑎê‘ê‘ꑑꑒꑓꑔꑕꑖꑗꑘꑙꑚꑛꑜê‘ꑞꑟꑠꑡꑢꑣꑤꑥꑦꑧꑨꑩꑪꑫꑬꑭꑮꑯꑰꑱꑲꑳꑴꑵ"); addSet(letters, "ꑶꑷꑸꑹꑺꑻꑼꑽꑾꑿꒀê’ꒂꒃꒄꒅꒆꒇꒈꒉꒊꒋꒌ가힣豈ï¤ï¤‚賈滑串句龜龜契金喇奈ï¤ï¤Ž"); addSet(letters, "ï¤ï¤ï¤‘裸邏樂洛烙珞落酪駱亂卵ï¤ï¤žï¤Ÿï¤ ï¤¡ï¤¢ï¤£ï¤¤ï¤¥ï¤¦ï¤§ï¤¨ï¤©ï¤ªï¤«ï¤¬ï¤­ï¤®ï¤¯ï¤°ï¤±ï¤²ï¤³ï¤´ï¤µï¤¶"); addSet(letters, "路露魯鷺碌祿綠菉錄鹿ï¥ï¥‚弄籠聾牢磊賂雷壘屢樓ï¥ï¥Žï¥ï¥ï¥‘勒肋凜凌稜綾菱陵讀拏樂ï¥ï¥ž"); addSet(letters, "寧怒率異北磻便復不泌數索參塞省葉說殺辰沈拾若掠略亮兩凉梁糧良諒量勵呂ï¦ï¦‚旅濾礪閭"); addSet(letters, "驪麗黎力曆歷ï¦ï¦Žï¦ï¦ï¦‘漣煉璉秊練聯輦蓮連鍊列ï¦ï¦žï¦Ÿï¦ ï¦¡ï¦¢ï¦£ï¦¤ï¦¥ï¦¦ï¦§ï¦¨ï¦©ï¦ªï¦«ï¦¬ï¦­ï¦®"); addSet(letters, "羚聆鈴零靈領例禮醴隸惡了僚寮尿料樂燎ï§ï§‚遼龍暈阮劉杻柳流溜琉ï§ï§Žï§ï§ï§‘戮陸倫崙淪"); addSet(letters, "輪律慄栗率隆ï§ï§žï§Ÿï§ ï§¡ï§¢ï§£ï§¤ï§¥ï§¦ï§§ï§¨ï§©ï§ªï§«ï§¬ï§­ï§®ï§¯ï§°ï§±ï§²ï§³ï§´ï§µï§¶ï§·ï§¸ï§¹ï§ºï§»ï§¼ï§½ï§¾"); addSet(letters, "刺切ï¨ï¨‚糖宅洞暴輻行降見廓兀ï¨ï¨Žï¨ï¨ï¨‘晴﨓﨔凞猪益礼神祥福靖ï¨ï¨žï¨Ÿï¨ ï¨¡ï¨¢ï¨£ï¨¤ï¨¥ï¨¦"); addSet(letters, "﨧﨨﨩飯飼館鶴ffï¬ï¬‚ffifflſtstﬓﬔﬕﬖﬗï¬ï¬Ÿï¬ ï¬¡ï¬¢ï¬£ï¬¤ï¬¥ï¬¦ï¬§ï¬¨ï¬ªï¬«ï¬¬ï¬­ï¬®ï¬¯ï¬°ï¬±ï¬²ï¬³"); addSet(letters, "הּוּזּטּיּךּכּלּמּנּï­ï­ƒï­„צּקּרּשּתּוֹבֿï­ï­Žï­ï­ï­‘ﭒﭓﭔﭕﭖﭗﭘﭙﭚﭛﭜï­ï­žï­Ÿï­ "); addSet(letters, "ﭡﭢﭣﭤﭥﭦﭧﭨﭩﭪﭫﭬﭭﭮﭯﭰﭱﭲﭳﭴﭵﭶﭷﭸﭹﭺﭻﭼﭽﭾﭿﮀï®ï®‚ﮃﮄﮅﮆﮇﮈ"); addSet(letters, "ﮉﮊﮋﮌï®ï®Žï®ï®ï®‘ﮒﮓﮔﮕﮖﮗﮘﮙﮚﮛﮜï®ï®žï®Ÿï® ï®¡ï®¢ï®£ï®¤ï®¥ï®¦ï®§ï®¨ï®©ï®ªï®«ï®¬ï®­ï®®ï®¯ï®°"); addSet(letters, "ﮱﯓﯔﯕﯖﯗﯘﯙﯚﯛﯜï¯ï¯žï¯Ÿï¯ ï¯¡ï¯¢ï¯£ï¯¤ï¯¥ï¯¦ï¯§ï¯¨ï¯©ï¯ªï¯«ï¯¬ï¯­ï¯®ï¯¯ï¯°ï¯±ï¯²ï¯³ï¯´ï¯µï¯¶ï¯·ï¯¸ï¯¹"); addSet(letters, "ﯺﯻﯼﯽﯾﯿﰀï°ï°‚ﰃﰄﰅﰆﰇﰈﰉﰊﰋﰌï°ï°Žï°ï°ï°‘ﰒﰓﰔﰕﰖﰗﰘﰙﰚﰛﰜï°ï°žï°Ÿï° ï°¡"); addSet(letters, "ﰢﰣﰤﰥﰦﰧﰨﰩﰪﰫﰬﰭﰮﰯﰰﰱﰲﰳﰴﰵﰶﰷﰸﰹﰺﰻﰼﰽﰾﰿﱀï±ï±‚ﱃﱄﱅﱆﱇﱈﱉ"); addSet(letters, "ﱊﱋﱌï±ï±Žï±ï±ï±‘ﱒﱓﱔﱕﱖﱗﱘﱙﱚﱛﱜï±ï±žï±Ÿï± ï±¡ï±¢ï±£ï±¤ï±¥ï±¦ï±§ï±¨ï±©ï±ªï±«ï±¬ï±­ï±®ï±¯ï±°ï±±"); addSet(letters, "ﱲﱳﱴﱵﱶﱷﱸﱹﱺﱻﱼﱽﱾﱿﲀï²ï²‚ﲃﲄﲅﲆﲇﲈﲉﲊﲋﲌï²ï²Žï²ï²ï²‘ﲒﲓﲔﲕﲖﲗﲘﲙ"); addSet(letters, "ﲚﲛﲜï²ï²žï²Ÿï² ï²¡ï²¢ï²£ï²¤ï²¥ï²¦ï²§ï²¨ï²©ï²ªï²«ï²¬ï²­ï²®ï²¯ï²°ï²±ï²²ï²³ï²´ï²µï²¶ï²·ï²¸ï²¹ï²ºï²»ï²¼ï²½ï²¾ï²¿ï³€ï³"); addSet(letters, "ﳂﳃﳄﳅﳆﳇﳈﳉﳊﳋﳌï³ï³Žï³ï³ï³‘ﳒﳓﳔﳕﳖﳗﳘﳙﳚﳛﳜï³ï³žï³Ÿï³ ï³¡ï³¢ï³£ï³¤ï³¥ï³¦ï³§ï³¨ï³©"); addSet(letters, "ﳪﳫﳬﳭﳮﳯﳰﳱﳲﳳﳴﳵﳶﳷﳸﳹﳺﳻﳼﳽﳾﳿﴀï´ï´‚ﴃﴄﴅﴆﴇﴈﴉﴊﴋﴌï´ï´Žï´ï´ï´‘"); addSet(letters, "ﴒﴓﴔﴕﴖﴗﴘﴙﴚﴛﴜï´ï´žï´Ÿï´ ï´¡ï´¢ï´£ï´¤ï´¥ï´¦ï´§ï´¨ï´©ï´ªï´«ï´¬ï´­ï´®ï´¯ï´°ï´±ï´²ï´³ï´´ï´µï´¶ï´·ï´¸ï´¹"); addSet(letters, "ﴺﴻﴼﴽïµïµ‘ﵒﵓﵔﵕﵖﵗﵘﵙﵚﵛﵜïµïµžïµŸïµ ïµ¡ïµ¢ïµ£ïµ¤ïµ¥ïµ¦ïµ§ïµ¨ïµ©ïµªïµ«ïµ¬ïµ­ïµ®ïµ¯ïµ°ïµ±ïµ²ïµ³"); addSet(letters, "ﵴﵵﵶﵷﵸﵹﵺﵻﵼﵽﵾﵿﶀï¶ï¶‚ﶃﶄﶅﶆﶇﶈﶉﶊﶋﶌï¶ï¶Žï¶ï¶’ﶓﶔﶕﶖﶗﶘﶙﶚﶛﶜï¶"); addSet(letters, "ﶞﶟﶠﶡﶢﶣﶤﶥﶦﶧﶨﶩﶪﶫﶬﶭﶮﶯﶰﶱﶲﶳﶴﶵﶶﶷﶸﶹﶺﶻﶼﶽﶾﶿﷀï·ï·‚ﷃﷄﷅ"); addSet(letters, "ﷆﷇﷰﷱﷲﷳﷴﷵﷶﷷﷸﷹﷺﷻﹰﹱﹲﹴﹶﹷﹸﹹﹺﹻﹼﹽﹾﹿﺀïºïº‚ﺃﺄﺅﺆﺇﺈﺉﺊﺋ"); addSet(letters, "ﺌïºïºŽïºïºïº‘ﺒﺓﺔﺕﺖﺗﺘﺙﺚﺛﺜïºïºžïºŸïº ïº¡ïº¢ïº£ïº¤ïº¥ïº¦ïº§ïº¨ïº©ïºªïº«ïº¬ïº­ïº®ïº¯ïº°ïº±ïº²ïº³"); addSet(letters, "ﺴﺵﺶﺷﺸﺹﺺﺻﺼﺽﺾﺿﻀï»ï»‚ﻃﻄﻅﻆﻇﻈﻉﻊﻋﻌï»ï»Žï»ï»ï»‘ﻒﻓﻔﻕﻖﻗﻘﻙﻚﻛ"); addSet(letters, "ﻜï»ï»žï»Ÿï» ï»¡ï»¢ï»£ï»¤ï»¥ï»¦ï»§ï»¨ï»©ï»ªï»«ï»¬ï»­ï»®ï»¯ï»°ï»±ï»²ï»³ï»´ï»µï»¶ï»·ï»¸ï»¹ï»ºï»»ï»¼ï¼¡ï¼¢ï¼£ï¼¤ï¼¥ï¼¦ï¼§"); addSet(letters, "HIJKLMNOPQRSTUVWXYZï½ï½‚cdefghijklï½ï½Žï½ï½ï½‘rstu"); addSet(letters, "vwxyzヲァィゥェォャュョッーアイウエオカキクケコサシスセソタï¾ï¾‚テトナニヌネ"); addSet(letters, "ノハヒフï¾ï¾Žï¾ï¾ï¾‘メモヤユヨラリルレロワï¾ï¾žï¾Ÿï¾ ï¾¡ï¾¢ï¾£ï¾¤ï¾¥ï¾¦ï¾§ï¾¨ï¾©ï¾ªï¾«ï¾¬ï¾­ï¾®ï¾¯ï¾°"); addSet(letters, "ᄆᄇᄈᄡᄉᄊᄋᄌᄍᄎᄏᄐᄑ하ᅢᅣᅤᅥᅦᅧᅨᅩï¿ï¿Žï¿ï¿’ᅮᅯᅰᅱᅲᅳᅴᅵ"); } bool UnicodeTools::isNumber(string testchar) { if (numbers.find(testchar) != numbers.end()) { return true; } return false; } void UnicodeTools::initNumber() { addSet(numbers, "0123456789²³¹¼½¾٠١٢٣٤٥٦٧٨٩۰۱۲۳۴۵۶۷۸۹०१२३"); addSet(numbers, "४५६७८९০১২৩৪৫৬৭৮৯৴৵৶৷৸৹੦੧੨੩੪੫੬੭੮੯૦૧૨૩૪૫૬૭"); addSet(numbers, "૮૯୦୧୨୩୪୫୬୭୮୯௧௨௩௪௫௬௭௮௯௰௱௲౦౧౨౩౪౫౬౭౮౯೦೧೨೩೪೫"); addSet(numbers, "೬೭೮೯൦൧൨൩൪൫൬൭൮൯à¹à¹‘๒๓๔๕๖๗๘๙à»à»‘໒໓໔໕໖໗໘໙༠༡༢༣༤༥"); addSet(numbers, "༦༧༨༩༪༫༬༭༮༯༰༱༲༳á€áá‚áƒá„á…á†á‡áˆá‰á©áªá«á¬á­á®á¯á°á±á²á³á´áµá¶á·á¸"); addSet(numbers, "á¹áºá»á¼á›®á›¯á›°áŸ áŸ¡áŸ¢áŸ£áŸ¤áŸ¥áŸ¦áŸ§áŸ¨áŸ©á á ‘᠒᠓᠔᠕᠖᠗᠘᠙â°â´âµâ¶â·â¸â¹â‚€â‚₂₃₄₅"); addSet(numbers, "₆₇₈₉⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜â…⅞⅟ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫⅬⅭⅮⅯⅰⅱⅲⅳⅴⅵⅶ"); addSet(numbers, "ⅷⅸⅹⅺⅻⅼⅽⅾⅿↀâ†â†‚Ↄ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳⑴⑵⑶⑷⑸⑹⑺"); addSet(numbers, "⑻⑼⑽⑾⑿⒀â’⒂⒃⒄⒅⒆⒇⒈⒉⒊⒋⒌â’â’Žâ’â’⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⓪â¶â·â¸â¹âºâ»"); addSet(numbers, "â¼â½â¾â¿âž€âžâž‚➃➄➅➆➇➈➉➊➋➌âžâžŽâžâžâž‘➒➓〇〡〢〣〤〥〦〧〨〩〸〹〺㆒㆓㆔"); addSet(numbers, "㆕㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩㊀ãŠãŠ‚ãŠƒãŠ„ãŠ…ãŠ†ãŠ‡ãŠˆãŠ‰ï¼ï¼‘23456789"); } bool UnicodeTools::isPunct(string testchar) { if (punctuation.find(testchar) != punctuation.end()) { return true; } return false; } void UnicodeTools::initPunct() { addSet(punctuation, "!\"#%&'()*,-./:;?@[\\]_{}¡«­·»¿;·՚՛՜ÕÕžÕŸÖ‰ÖŠÖ¾"); addSet(punctuation, "׀׃׳״،؛؟٪٫٬٭۔܀Ü܂܃܄܅܆܇܈܉܊܋܌Ü।॥॰෴à¹à¹šà¹›à¼„༅༆༇༈༉༊"); addSet(punctuation, "་༌à¼à¼Žà¼à¼à¼‘༒༺༻༼༽྅áŠá‹áŒááŽá჻á¡á¢á£á¤á¥á¦á§á¨á™­á™®áš›ášœá›«á›¬á›­áŸ”៕៖ៗ៘"); addSet(punctuation, "៙៚ៜ᠀á á ‚᠃᠄᠅᠆᠇᠈᠉᠊â€â€‘‒–—―‖‗‘’‚‛“â€â€žâ€Ÿâ€ â€¡â€¢â€£â€¤â€¥â€¦â€§â€°â€±"); addSet(punctuation, "′″‴‵‶‷‸‹›※‼‽‾‿â€ââ‚âƒâ…â†âˆâ‰âŠâ‹âŒââ½â¾â‚₎〈〉ã€ã€‚〃〈〉《》「"); addSet(punctuation, "ã€ã€Žã€ã€ã€‘〔〕〖〗〘〙〚〛〜ã€ã€žã€Ÿã€°ãƒ»ï´¾ï´¿ï¸°ï¸±ï¸²ï¸³ï¸´ï¸µï¸¶ï¸·ï¸¸ï¸¹ï¸ºï¸»ï¸¼ï¸½ï¸¾ï¸¿ï¹€ï¹ï¹‚"); addSet(punctuation, "﹃﹄﹉﹊﹋﹌ï¹ï¹Žï¹ï¹ï¹‘﹒﹔﹕﹖﹗﹘﹙﹚﹛﹜ï¹ï¹žï¹Ÿï¹ ï¹¡ï¹£ï¹¨ï¹ªï¹«ï¼ï¼‚#%&'()*,"); addSet(punctuation, "ï¼ï¼Žï¼ï¼šï¼›ï¼Ÿï¼ ï¼»ï¼¼ï¼½ï¼¿ï½›ï½ï½¡ï½¢ï½£ï½¤ï½¥"); } bool UnicodeTools::isWS(string testchar) { if (ws.find(testchar) != ws.end()) { return true; } return false; } void UnicodeTools::initWS() { addSet(ws, "    â€â€‚        ​

  "); }