Чудесата на Unicode – символи, които не са нито с горен, нито с долен регистър
Оригиналът е на Raymond Chen.
Ако започнете да изучавате стандарта Unicode, може с изненада да откриете, че някои знаци имат разлики в регистрите, макар че самите те не са нито с горен, нито с низък указател.
Ооооо, мистериозно и плашещо.
С други думи, това е признакът c, който има следните свойства:
toUpper(c) ≠ toLower(c), обаче
c ≠ toUpper(c) и c ≠ toLower(c)
Честито! Поздравления, открихте мистериозния трети случай: казусът Title case.
Някои Unicode знаци заемат една кодова единица, само че съставляват два графични признака, съединени дружно. Така да вземем за пример Unicode признакът dz (U+01F1 LATIN SMALL LETTER DZ) наподобява като два Unicode признака един до различен: dz (U+0064 LATIN SMALL LETTER D, последвана от U+007A LATIN SMALL LETTER Z).
Тези диграфи са знаци на писменостите на някои езици, по-специално на унгарския. В тези езици диграфът се смята за обособена писмен знак от писмеността. Например, тук са първите 10 букви от унгарската писменост:
Тези диграфи (и един триграф) имат три форми.
В кодирането на Unicode са включени четири диграфа.
Но чакайте, в случай че имаме кодова единица в Unicode за диграфа dz, за какво няма такава за диграфа cs или триграфа dzs? Какво толкоз особено има в dz?
Тези диграфи дължат съществуването си в Уникод не на унгарския, а на сърбохърватския език. Сърбохърватският език се написа както на латиница (хърватски), по този начин и на кирилица (сръбски), а тези диграфи разрешават взаимна недвусмислена транслитерация сред тях.
Това е още една обстановка, в която светът е по-сложен, в сравнение с сме си мислели. Мислели сте, че разбирате огромните и дребните букви, само че сред тях има още един случай, за който надали сте знаели.
Допълнение: фактът, че на маджарски език „ dz “ се смята за една писмен знак, значи, че в случай че въведете низа за търсене „ mad “, той няма да съвпадне с „ madzag “ (което значи „ въже “), тъй като „ dz “ в „ madzag “ е една писмен знак, а не „ d “, последвано от „ z “, по същия метод „ lav “ няма да съвпадне с думата „ law “, просто тъй като първата част на буквата „ w “ наподобява като „ v “. Още един непредвиден резултат, в случай че по простъпка употребявате безусловно търсене по подниз вместо търсене с отчитане на местоположението.
Аз получих тази информация от Unicode Standard, версия 15.0, глава 7: „ Europe I “, раздел 7.1: „ Latin “, подраздел „ Latin Extended-B: U+0180-U+024F “, подподраздел „ Croatian Digraphs Matching Serbian Cyrillic Letters “.
За българския език в тази публикация няма нито дума.




