Чому я коли-небудь повинен використовувати спеціальні символи Unicode для римських цифр?


43

Це означає, щоб відповісти на запитання, яке виникло в коментарях до цього питання щодо символів Unicode для римських цифр:

Чому це необхідно чи бажано перед звичайним способом набору тексту ai, ai-ai, ai-ai-ai, vee-ai тощо?

Для початку, у блоці " Форми чисел" Unicode існують кодові точки для римських цифр, які на перший погляд дуже схожі за зовнішнім виглядом на стандартні великі літери або їх комбінації (U + 2160 - U + 217F). Наприклад, U + 2165 (римська цифра шість) дуже схожа на VI (латинська літера V і латинська велика літера I).

Таким чином, виникає питання, чому не слід використовувати останні для представлення цих цифр і, наприклад, вводити Louis VIIзамість них Louis Ⅶ. Очевидно, що використання спеціальних символів уникає проблем сумісності із шрифтами, які їх не підтримують. Але навіть якщо я знаю, що текст буде наданий шрифтом, який підтримує цих символів, то чому я повинен заважати їх використовувати?

Відповіді:


56

У багатьох шрифтах ви дійсно не знайдете різниці між використанням символів Unicode для римських цифр та просто складанням їх із зіркових латинських літер. Наприклад, такі покази Louis VII(вгорі) та Louis Ⅶ(знизу, використовуючи кодові точки для римських цифр), надані за допомогою FreeSans:

введіть тут опис зображення

Окрім крихітної різниці в інтервалі, яка, можливо, не була навмисною, вихід є однаковим.

Ось той самий текст, виконаний із DejaVu Sans:

введіть тут опис зображення

Хоча символи все ще виглядають однаково, в інтервалі є значна різниця. Можливо, питання смаку, чи кращий останній для римських цифр, але це, звичайно, не буде хорошим вибором кернінгу для звичайних all-caps.

Linux Libertine піде на крок далі:

введіть тут опис зображення

Тут римські цифри трохи менші за великі літери, що відповідає арабським цифрам шрифту. Найголовніше, що вони пов’язані між собою, відтворюючи особливість, часто зустрічається в рисованих римських цифрах.

Зараз деякі можуть все ще стверджувати, що жодних поліпшень у вищезазначеному не відбувається або що вони не варті зусиль. Тож ось випадок, коли не використання символів Unicode дасть жахливі результати:

введіть тут опис зображення

(Зверніть увагу, що невеликий розмір цифр відображає деяку фактичну історичну набір тексту.) Щось подібне може статися для сценаріїв або каліграфічних шрифтів.

Без конкретних точок Unicode для римських цифр, вирішення останньої задачі було б можливим лише за допомогою:

  • Використання складної функції OpenType (або подібної), яка намагається визначити, чи є послідовність великих літер римською цифрою. Це неминуче спричинить проблеми зі словами, які також були би дійсною римською цифрою.

  • Використовуючи просту функцію OpenType, яку потрібно вручну активувати для кожного римського числа.

  • Використання зони приватного користування Unicode. Питання сумісності, ймовірно, виникають навіть при перемиканні між двома шрифтами, які обидва підтримують римські цифри.

З точки зору Unicode, величезна семантична різниця між великими латинськими літерами та римськими цифрами вже мала бути достатньою для окремого кодування римських цифр.


Наскільки це означає, що римські цифри ставлять будь-яку проблему, відмінну від абревіатур та ініціалізмів, обидва з яких належним чином обробляються, якщо шрифт містить набір малих літер? Я б очікував, що сценарії, де "VII" слід показувати з великими літерами, а не з малих шапок, такі ж, як у тих випадках, де "НАТО" або "ПМ" повинні відображатися так само. Хоча, можливо, приємно мати спосіб з'єднання ригелів із "VII", але не з "VIP", я не впевнений, що ригелі повинні бути з'єднані, коли в тексті використовуються цифри .
supercat

Дуже добре додав розширену семантику трохи, але якщо ви хочете включити у свою відповідь, не соромтеся робити соа і погано видаляти мою.
joojaa

@supercat: Я не зовсім впевнений, на що ви прагнете, але, на мій досвід, в сучасній типографії римські цифри завжди мають розмір великої літери, тоді як в інших мовах, крім німецької, можливо використовувати невеликі літери для скорочення всіх літер. У типографії blackletter ви б використовували римський шрифт для скорочень з усіма великими літерами та для римських цифр, але іноді ви використовуєте менші римські цифри (як вище), а для деяких дуже особливих випадків ви б використовували all-caps blackletter.
Wrzlprmft

@ Wrzlprmft: Я б очікував, що римські цифри будуть надруковані такого ж розміру, як і речі, такі як "PM" або "NATO"; в деяких контекстах такі речі друкуються як великі великі літери, а в інших - це робить їх занадто сильними. Якби шрифт мав набір великих літер, дизайн яких по відношенню до решти шрифту був відповідним для "ПМ" або "НАТО", я думаю, він також підходив би до римських цифр.
supercat

@supercat: Для звичайного римського шрифту, так (хоча можна заперечити, чи найкраще це зробити). А як щодо шрифтів blackletter та скриптів? Також, що ви з цього робите?
Wrzlprmft

27

TL; DR Консорціум Unicode рекомендує використовувати латинську літеру там, де це можливо, а не цифру, яку там включено для сумісності зі східно-азіатською типографією.

Повна історія: (з обґрунтуванням вищезазначеного твердження)

Якщо ви не займаєтеся східно-азіатською типографією, використання (неархаїчних) римських цифр із символів unicode (U + 2160 - U + 217F) - це злом.

Ці символи були включені для сумісності зі стандартами перед-Unicode Східної Азії. Ці символи залишаються вертикальними там, де східно-азіатський текст набирається зверху вниз, тоді як зазвичай текст латинськими символами (наприклад, імена) пишеться збоку в цьому контексті.

Щоб процитувати останню версію стандарту Unicode (v 7.0, гл. 22, стор. 20) :

Римські цифри. Для більшості цілей бажано складати римські цифри з послідовностей відповідних латинських літер. Однак великі і малі варіанти римських цифр через 12, плюс L, C, D і M були закодовані в блок "Форми чисел" (U + 2150..U + 218F) для сумісності зі східноазіатськими стандартами. На відміну від послідовностей латинських літер, ці символи залишаються вертикальними у вертикальному розташуванні. Крім того, у деяких регіонах компактні формати дати використовують римські цифри за місяць, але, можливо, очікується використання одного символу.

Отже, теоретично, відмінність між римськими цифрами та буквою є предметом насиченого тексту, наприклад, курсивом, зміною шрифту чи необов’язковими лігатурами. Це говорить, як показує @Wrzlprmft, деякі шрифти використовують його, щоб уникнути зміни шрифту для кожної римської цифри, зберігаючи хорошу типографіку.

Існування символу для XII, а не для XIII означає, що існує кілька різних кодувань однієї цифри, що призводить до труднощів у пошуку тексту: Якщо ви пишете про Людовіка XII та Людовіка XIII, ви, ймовірно, XIII записуєте як X + I + Я + я, але ви будете писати XII як єдиний символ? Або як X + I + I мати послідовний дисплей з XIII? На це питання немає жодної гарної відповіді під час використання символів римських чисел, і тому консорціум Unicode рекомендує використовувати латинські літери, коли це можливо, а не цифри.

Редагувати: додано твердження TL; DR на початку


9
" консорціум Unicode рекомендує використовувати латинські літери, коли це можливо, а не цифри." Це має бути набагато помітнішим, ніж зараз.
Іксрек

1
З точки зору семантики Unicode це, безумовно, найкраща відповідь. З певними шрифтами можуть бути практичні причини віддати перевагу римським цифрам, і це, звичайно, незалежний графічний дизайн, але семантично вони завжди помиляються.
Р ..

13

З точки зору того, як це виглядає, різниці може бути не дуже. Тож якщо ви публікуєте лише друковані матеріали, то різниці немає, за винятком деяких шрифтів, як Wrzlprmft вказує у своїй чудовій відповіді.

Семантика важлива

Семантична різниця величезна. Використовуючи римські цифри, це ясно дає зрозуміти, що ви говорите про число 5 замість літери V. Звичайно, вони виглядають однаково, але означають інакше. Це означатиме, що пошукова система може мати більше шансів знайти "XX позначку V" при пошуку "XX версії 5".

Насправді причина того, що деякі речі погано працюють, полягає в тому, що ми не вкладаємо семантичну інформацію. Світ дійсно був би кращим місцем, якби ми. Тож використання правильного смислового значення приблизно таке саме, як використання стилів у текстовому процесорі та стилях вручну. На людському кінці мало різниці, але велика потужність в автоматизації.

Шрифти повинні містити різні римські цифри

Виробники шрифтів насправді не використовують їх, оскільки їх не дуже часто використовують. Але за допомогою цих даних ви можете отримати римські цифрові плити на літерах, що відрізняє їх від тексту. Тому функція недостатньо використовується, оскільки це рідкісне використання. Шрифти насправді не реалізують усе, також вони не повинні. Використовуючи ці, ви б отримали користь, якщо вони є.

Висновок

Це все, безумовно, проблема курятини та яєць. Якщо люди не використовують спеціальні діапазони символів, то ніяких спеціальних припущень для цих діапазонів не буде зроблено. Тож шрифт не підтримуватиме спеціально стилізовані римські літерали, тому що це буде просто витрачати зусилля на функції, які ніхто не використовує. Те саме стосується пошуку: якщо ніхто не використовує римські літерали, то жодна пошукова система не знайде римських літералів, і семантика втрачена. Семантика страждає через неприйняття правильного смислового значення. Це те ж саме, безумовно, стосується і більш широкого кола символів Unicode.

Що стосується складності введення, так, більшість користувачів не можуть писати розширені символи, але це не є приводом для обізнаної людини пропустити це, якщо це має сенс. Якщо ніхто не покращить речі, прогрес ніколи не буде досягнутий. У певному слові є режими написання альфа, набравши / альфа. Тож насправді немає причин, чому не може бути простого способу позначення цифр або навіть автоматичного запропонування їх як таких. Знову ж таки, якщо цього ніхто не зробить, це ніколи не отримає більш широкого прийняття.


Насправді пошукова система приносить набагато кращі результати при пошуку "Луї VII", а не "Луї Ⅶ", пробальбі, оскільки насправді більша частина контенту генерується за допомогою інструментів, які не дозволяють настільки точного семантичного розрізнення.
xpereta

1
@xpereta так, тому що людей не хвилює семантика. Однак якщо вони будуть, то ви також легко зрівняєтеся із 7 для цифр. Велика частина неефективності у світі полягає в тому, що люди не вважають важливим, щоб чітко вказати на семантичну різницю речей, коли вони могли це легко зробити. Комп'ютер справді не знає різниці, навіть якби людина
Joojaa

1
@joojaa У цьому випадку це, мабуть, має більше спільного з тим, що VII набирати порядки простіше, ніж Ⅶ. Я не впевнений, чи це колись зміниться.
Іксрек

Я хотів би трохи розширити останній абзац, щоб закінчити ваш висновок про те, що ширше використання спеціальних символів, подібних до цього, сприятиме більш широкій реалізації шрифту.
Натан Туггі

2
Я сильно ставлю під сумнів цю відповідь щодо семантики. Римські цифри символів Unicode <compat>еквівалентні відповідним послідовностям латинських літер, що настійно говорить про те, що єдиною причиною, що вони взагалі є в Unicode, є сумісність у зворотному напрямку з деякими застарілими (можливо, CJK) наборами символів, які їх мали. Такі символи, як правило, не повинні використовуватися, за винятком справжніх круглих документів, створених у застарілих кодуваннях.
Р ..
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.