#include "Unicode.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; } 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, "ǝƎǟǞǡǠǣǢǥǤǧǦǩǨǫǪǭǬǯǮdzDZǵǴǹǸǻǺǽǼǿǾȁȀȃȂȅȄȇȆȉȈȋȊȍȌȏȎȑȐ"); 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, "ᾳᾼιΙῃῌῐῘῑῙῠῨῡῩῥῬῳῼaAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpP"); 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, "﨧﨨﨩飯飼館鶴fffiflffifflſ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, "ﻜﻝﻞﻟﻠﻡﻢﻣﻤﻥﻦﻧﻨﻩﻪﻫﻬﻭﻮﻯﻰﻱﻲﻳﻴﻵﻶﻷﻸﻹﻺﻻﻼABCDEFG"); addSet(letters, "HIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstu"); 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, "㆕㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩㊀㊁㊂㊃㊄㊅㊆㊇㊈㊉0123456789"); } 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, "              ​

  "); }