Поза стандартом Unicode символ - це окрема одиниця тексту, що складається з однієї або декількох графем . Те, що стандарт Unicode визначає як "символи", - це насправді поєднання графем та символів. Unicode надає правила інтерпретації зображених графем як окремих символів.
Unicode , код точка являє собою унікальний номер , присвоєний кожен символ Unicode (який є або символом або графема).
На жаль, правила Unicode дозволяють інтерпретувати деякі складені графеми як інші графеми, які вже мають власні кодові точки ( заздалегідь складені форми ). Це означає, що в Unicode існує декілька способів представлення символу. Нормалізація Unicode вирішує цю проблему.
Гліф - це візуальне зображення персонажа. Шрифт надає набір гліфів для певного набору символів (не символів Unicode). Для кожного персонажа існує нескінченна кількість можливих гліфів.
Відповідь Марка Амері
По-перше, як я вже зазначив, існує нескінченна кількість можливих гліфів для кожного символу, так що ні, символ не "завжди представлений одним гліфом". Unicode не дуже стосується гліфів, і те, що він визначає у своїх кодових діаграмах, звичайно, не є гліфами. Проблема в тому, що вони теж не всі персонажі. То які вони?
Яка велика сутність, графема чи персонаж? Що називає ті графічні елементи в тексті, які не букви та пунктуації? Один із термінів, який швидко виникає на увазі, - це «графема». Це слово, яке точно спонукає ідею "графічної одиниці в тексті". Я пропоную таке визначення: Графема - це найменший чіткий компонент у письмовому тексті .
Можна піти іншим шляхом і сказати, що графеми складаються з символів, але тоді їх називали б "китайськими графемами", а всі ті шматочки і шматочки китайських графем мали б називатися "символами". Однак це все назад. Графеми - це виразні маленькі шматочки. Персонажі розвиненіші. Словосполучення "гліфи є композиційними", було б краще викладено в контексті Unicode як "символи є композиційними".
Unicode визначає символи, але він також визначає графеми, які слід скласти з іншими графемами або символами. Ті чудовиська, які ви склали, є прекрасним прикладом цього. Якщо вони захопляться, можливо, вони отримають власні кодові очки у більш пізній версії Unicode;)
У всьому цьому є рекурсивний елемент. На вищих рівнях графеми стають символами, стають графемами, але це графеми аж донизу.
Відповідь TS
У главі 1 стандарту зазначено: "Кодування символів Unicode розглядає алфавітні символи, ідеографічні символи та символи рівнозначно. Це означає, що вони можуть бути використані в будь-якій суміші та з рівними можливостями". Враховуючи це твердження, ми повинні бути готові до деякого співвідношення термінів у стандарті. Іноді належна термінологія стає зрозумілою лише в ретроспективі, коли розвивається стандарт.
У формальних визначеннях мови часто буває так, що дві основні речі визначаються один з одним. Наприклад, у
XML елемент визначається як початковий тег, за яким може супроводжуватися вміст, а за ним закінчується тег. Вміст визначається в свою чергу як елемент, дані символів або кілька інших можливих речей. Шаблон самореференційних визначень також міститься в стандарті Unicode:
Графема - це кодова точка або символ.
Символ складається з послідовності однієї або декількох графем.
Уперше зіткнувшись з цими двома визначеннями, читач може заперечити проти першого визначення на тій підставі, що кодова точка є символом, але це не завжди так. Послідовність двох кодових точок іноді кодує одну кодову точку при
нормалізації , і ця закодована кодова точка являє собою символ, як показано на
рисунку 2.7 . Послідовності точок коду, які кодують інші точки коду. Це стає дещо складним, і ми навіть не дійшли до того шару, де схеми кодування символів, такі як UTF-8 , використовуються для кодування точок коду в послідовності байтів.
У деяких контекстах, наприклад, наукова стаття про
діакритику та окрема частина персонажа може відображатися в тексті сама по собі. У цьому контексті окрему частину символів можна вважати символом, тому має сенс, щоб стандарт Unicode також залишався гнучким.
Як зазначав Марк Евери, персонаж може бути складений у більш складну річ. Тобто кожен персонаж може при бажанні слугувати графемою. Кінцевим результатом усієї композиції є річ, яку «користувач вважає персонажем». Здається, немає ні реального опору, ні в стандарті, ні в цій дискусії, ідеї про те, що на самому високому рівні є ці речі в тексті, які користувач вважає окремими персонажами. Щоб уникнути перевантаження цього терміна, ми можемо використовувати «графему» у всіх випадках, коли ми хочемо посилатися на частини, що використовуються для складання символу.
Часом стандарт Unicode повсюдно має свою термінологію. Наприклад, глава 3
визначає UTF-8 як "форму кодування", тоді як глосарій визначає "форму кодування" як щось інше, а UTF-8 як "схему кодування символів". Інший приклад - "Grapheme_Base" і "Grapheme_Extend", які визнаються помилками, але вони зберігаються, оскільки їх очищення - це завдання. Ще потрібно виконати роботу з посиленням термінології, що використовується стандартом.
Пропозиція про додавання ОБ'ЄДНАННЯ графем отримало це неправильно , коли він заявив , що «графема послідовність одного або більше закодовані символи , які відповідають тому , що користувачі думають як символи.» Натомість слід прочитати: "Послідовність однієї або декількох графем складається з того, що користувач вважає персонажем". Тоді він міг би використовувати термін "графемна послідовність" виразно від терміна "послідовність символів". Обидва терміни корисні. "послідовність графем" акуратно передбачає процес побудови персонажа з менших шматочків. "послідовність символів" означає те, що ми всі зазвичай інтуїтивно це означає: "Послідовність речей, які користувач вважає символами".
Іноді програміст дійсно хоче оперувати на рівні послідовностей графем, тому механізми перевірки та маніпулювання цими послідовностями повинні бути доступними, але, як правило, при обробці тексту достатньо оперувати "послідовностями символів" (про що думає користувач як персонаж) і нехай система керує деталями нижчого рівня.
У кожному випадку, про який йде мова в цій дискусії, то чистіше використовувати «графему» для позначення нероздільних компонентів, а «характер» для позначення складеної сутності. Це використання також краще відображає давно встановлені значення обох термінів.