Уникодна еквиваленција

С Википедије, слободне енциклопедије

Уникодна еквиваленција је спецификација по Уникодовом стандарду знаковних кодирања где кодови знакова представљају у суштини исте знакове. Ово својство је уведено у стандард да омогући компатибилност са постојећим стандардом скупа знакова, који често садрже сличне или идентичне знакове.

Уникод пружа два таква појма, декадну еквиваленцију и компатибилност:

За делове кода карактера који су дефинисани као декадни еквиваленти се претпоставља да имају исти графички приказ и значење када се штампају или приказују. На пример, код карактера У+006Е (латинично мало слово "н") праћено кодом У+0303 (комбиновано тилдом "◌̃") је дефинисано у Уникоду као декадно еквивалентно са кодом карактера У+00Ф1 (мало слово "ñ" Шпанског писма). Стога, ти низови кода би требало да буду приказани на исти начин, исто третирани од стране апликација које слажу податке у абецедном поретку или претразивача, као и да могу бити замењени један са другим.

За низове кода карактера који су дефинисани као компатибилни се претпоставља да могу имати различите приказе, али исто значење у неким контекстима. Тако, на пример, код карактера У+ФБ00 (типографска лигатура "ff") је дефинисан компатибилно — али не и декадно еквивалентно — са низом кода карактера У+0066 У+0066 (два латинична слова "ф"). Компатибилни кодови се могу третирати на исти начин у неким апликацијама (као што су сортирање и индексирање), а не у другим; и могу бити замењени један са другим у неким ситуацијама, али не у другим. Низови који су декадно еквивалентни су такодје и компатибилни, док супротно не мора увек да значи.

Стандардом се такодје дефинише процедура нормализације текста, названа Уникод нормализација, која замењује еквивалентне низове карактера тако да било која два текста која су еквивалентна буду упрошћена истим кодовима карактера, званим нормализована форма или нормална форма изворног текста. За сваки од два појма еквиваленције, Уникод дефинише две нормалне форме, једну потпуно састављену (где су вишеструки кодови карактера замењени једноструким где год је то могуће), и једну потпуно растављену (где су једноструки кодови карактера подељени у вишеструке). Свака од те четири нормалне форме се може користити у обради текста.

Извори еквиваленције[уреди | уреди извор]

Дуплирање карактера[уреди | уреди извор]

Због компатибилности или неких других разлога, Уникод понекад додељује два различита кода карактерима који су у суштини исти. На пример, карактер "Å" може бити кодиран као У+00Ц5 (са стандардним именом "ВЕЛИКО ЛАТИНИЧНО СЛОВО А СА ПРСТЕНОМ ИЗНАД", слово из Шведске абецеде и неколико других језика) или као У+212Б ("АНГСТРЕМ ЗНАК"). Ипак симбол за ангстрем је дефинисан да буде то Шведско слово,и већина других симбола која су представљена словима (као "V" за волт) немају одвојени код карактера за свако коришћење. У глобалу, кодови карактера стварно идентичних карактера (која могу бити изречена на исти начин Уникодовим симболима) су дефинисана декадно еквивалентно.

Комбиновање и измењени карактери[уреди | уреди извор]

Ради доследности са неким старијим стандардима, Уницоде омогућава појединачне кодове за многе карактере који могу бити посматрани као измењени облици неких других карактера (такви су У+00Ф1 за "ñ" или У+00Ц5 за "Å") или као комбинације два или више карактера (такви су У+ФБ00 за лигатуру "ff" или У+0132 за холандско слово "ИЈ").

Ради доследности са другим стандардима,и ради веће флексибилности, Уникод такодје прижа кодове за многе елементе који се не користе сами, већ су уместо тога намењени да мењају или се комбинују са ранијим основним карактерима. Примери ових комбинујућих карактера су комбинујуће тилде и Јапански диакритички дакутен ("◌゛", У+3099).

У Уникод контексту, састављање карактера је процес замене кода карактера основног слова праћеног једним или више комбинујућих карактера у појединачни измењени карактер; растављање карактера је супротан процес.

Примери[уреди | уреди извор]

Амéлие са своја два декадно еквивалентна Уникод облика (НФЦ анд НФД)
НФЦ карактер А м é л и е
НФЦ код карактера 0041 006д 00е9 006ц 0069 0065
НФД код карактера 0041 006д 0065 0301 006ц 0069 0065
НФД карактер А м е ◌́ л и е

Типографске конвенције[уреди | уреди извор]

Уникод пружа кодове за неке карактере или групе карактера који су измењени само из естетских разлога (као што су типографске лигатуре, полушироки катакана карактери, или латинична слова двоструке ширине за коришћење у јапанском језику), или да би се додала нова семантика без губитка оригинала (као што су цифре у индексним или експонентним позицијама, или заокружене цифре ① наследјене од неких јапанских слова). Такав низ се сматра компатибилним са низом оригинала (појединачних и неизмењених) карактера, у корист апликација где изглед и додата семантика нису битне. Медјутим та два низа нису проглашена декадно еквивалентним, с обзиром да разлика има неку семантичку вредност која утиче на приказивање текста.

Нормализација[уреди | уреди извор]

Имплементација Уникодовог поредјења и претраге низова у програмима за обраду текста мора урачунати присуство еквивалентних кодова карактера. У одсуству овог својства, корисници који траже посебан низ кода карактера не би били у могућности да надју други визуелно исти глиф који има различит, али декадно еквивалентан, приказ кода карактера.

Уникод омогућава стандардни алгоритам нормализације који ствара јеинствен (нормалан) низ кода карактера за све низове који су еквивалентни; критеријум еквиваленције може бити било декадни (НФ) било компатибилни (НФК). С обзиром да било ко може произвољно да изабере представнички елемент еквивалентне класе, многи декадни облици су могући за сваки критеријум еквиваленције. Уникод обезбедјује два нормална облика која су семантички значајна за сваки од критеријума компатибилности: састављени облици НФЦ и НФКЦ, као и растављени облици НФД и НФКД. Оба облика намећу декадно уредјење низа кода карактера, које је неопходно да би нормалне форме биле јединствене.

Да би се поредиле или претраживале Уникодове ниске, програм може користити било састављене или растављене облике; овај избор нема значаја све док је исти за све ниске укључене у претрагу, поредјење итд. С друге стране, избор критеријума еквиваленције може утицати на резултате претраге. На пример неке типографске лигатуре као сто су У+ФБ03 (ffi), римски бројеви У+2168 (Ⅸ) или чак карактери на индексним или експонентним позицијама, на пример У+2075 (⁵) имају властите Уникод кодове карактера. Декадна нормализација (НФ) не утиче ни на једну од њих, али компатибилна нормализација (НФК) ће раставити ффи лигатуре у словне делове, па ће потрага за У+0066 (ф) као подниском успети у НФКЦ нормализацији У+ФБ03 али не и у НФЦ нормализацији У+ФБ03. Исто тако би било када би тражили латинично слово I (У+0049) у измењеном римском броју Ⅸ (У+2168). Слично број на експонентној позицији "⁵" (У+2075) је трансформисан у "5" (У+0035) компатибилним пресликавањем.

Трансформисање карактера на експонентним позицијама у његовог еквивалента на основној позицији може ипак бити неприкладно због богатог текстуалног програма, јер би се информације о карактеру на експонентној позицији изгубиле у процесу. Да би се омогућила ова разлика, Уникодова база карактера садржи ознаке обликовања компатибилности који пружа додатне детаље о компатибилности трансформација.[1] У случају типографских лигатура, ова ознака је једноставно <compat>, док је за карактере на експонентним позицијама <super>. Богати текстуални стандарди као што је ХТМЛ узимају у обзир ознаке компатибилности. На пример ХТМЛ користи своје властите ознаке да смести У+0035 на експонентну позицију.[2]

Нормални облици[уреди | уреди извор]

Четири Уникодова облика нормализације и алгоритми (трансформације) за њихово добијање су приказани у следећој табели.

НФД
Нормализатион Форм Цаноницал Децомпоситион
Карактери су растављени декадном еквиваленцијом, и многи комбинујући карактери су уредјени по посебном редоследу.
НФЦ
Нормализатион Форм Цаноницал Цомпоситион
Карактери су растављени и онда поново састављени декадном еквиваленцијом.
НФКД
Нормализатион Форм Цомпатибилитy Децомпоситион
Карактери су растављени компатибилношћу, и многи комбинујући карактери су уредјени по посебном редоследу.
НФКЦ
Нормализатион Форм Цомпатибилитy Цомпоситион
Карактери су растављени компатибилношћуи онда поново састављени декадном еквиваленцијом.

Сви ови алгоритми су идемпотентне трансформације, што значи да ниска која је већ у једном од нормализованих облика неће бити мењана ако се поново покрене исти алгоритам.

За добро формиране уникод ниске, нормални облици су затворени у односу на спајање ниски: спој две добро формиране уникод ниске у истом нормалном облику ће и сам бити у том нормалном облику. То је зато што добро формиран спојени уникод карактер ће увек почети са основним карактером.[3]

Медјутим, они нису ињективни (они пресликавају разичите оригиналне глифове и низове у исти нормализован низ) и према томе такодје нису ни бијективни (не могу бити обновљени). На пример, различите уникодове ниске "У+212Б" (ангстром знак "Å") и "У+00Ц5" (шведско слово "Å") су обоје проширени са НФД-ом (или НФКД-ом) у низ "У+0041 У+030А" (латинично слово "А" комбиновано са прстеном изнад "°") који је потом смањен са НФЦ-ом (или НФКЦ-ом) на "У+00Ц5" (шведско слово "Å").

Један карактер који ће бити замењен другим под нормализацијом може бити идентификован у уникод табелама да има непразно поље компатибилности али да му недостаје ознака компатибилности.

Декадно уредјење[уреди | уреди извор]

Декадно уредјење се углавном брине за уредјење низа комбинованих карактера. За пример у овом одељку претпоставићемо да су ови карактери дијактрички, иако углавном неки дијактрици нису комбиновани карактери,и неки комбиновани карактери нису дијактрици.

Уникод додељује сваком карактеру комбинујућу класу, која се идентификује по нумеричкој вредности. Не-комбиновани карактери имају класу број 0, док комбиновани имају комбинујућу класу позитивне вредности. Да би То добили декадно уредјење, свака подниска карактера која има не-нула вредност комбинујуће класе мора бити сортирана по вредности комбинујуће класе користећи алгоритам стабилног сортирања. Стабилно сортирање је неопходно јер за комбиоване карактере са истом вредности класе се претпоставља да узајамно дејствују типографски, па се тако два могућа уредјења не спатрају еквиваентним.

На пример, карактер У+1ЕБФ (ế), коришћен у вијетнамском има и оштар и сирконфлексни акценат. Његово декадно растављање је низ од три карактера У+0065 (е) У+0302 (сирконфлексни акценат) У+0301 (оштар акценат). Комбинујуће класе за ова два акцента су обе 230, па У+1ЕБФ није еквивалентно са У+0065 У+0301 У+0302.

С обзиром да немају сви комбиновани низови измењени еквивалент, (последњи у претходном примеру може бити скраћен само на У+00Е9 У+0302), чак је и нормални облик НФЦ погодјен понашањем комбинованих карактера.

Грешке због разлика у нормализацији[уреди | уреди извор]

Када две апликације деле уникод податке,али их различито нормализују, може доћи до грешака и губитака података. У једном посебном случају, ОС X је нормализовао уникод имена датотека послатих са Самба датотеке- и програма за дељење штампача. Самба није препознала измењена имена датотека као еквивалентна оригиналу, што је довело до губитка података.[4][5] Решавање таквог проблема није тривијално, узимајући у обзир да нормализација није обрнуто повратна.

Референце[уреди | уреди извор]

  1. ^ УАX #44: Уницоде Цхарацтер Датабасе
  2. ^ Уницоде ин XМЛ анд отхер Маркуп Лангуагес
  3. ^ Д57 уникод 6.1 поглавље о усаглашености захтева комбиноване карактере да прате основни карактер на који се упућују. Комбиновани карактери на почетку ниске су лоше формирани.
  4. ^ Соурцефорге.нет
  5. ^ Форумс.мацосxхинтс.цом

Види још[уреди | уреди извор]

Спољашње везе[уреди | уреди извор]