Почему я должен использовать специальные символы Юникода для римских цифр?

43

Это ответ на вопрос, который возник в комментариях к этому вопросу о символах Юникода для римских цифр:

Почему это необходимо или предпочтительнее обычного способа ввода ai, ai-ai, ai-ai-ai, vee-ai и т. Д.?

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

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

Wrzlprmft
источник

Ответы:

56

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

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

Помимо крошечной разницы в расстоянии, которая была, вероятно, не преднамеренной, результат идентичен.

Вот тот же текст, представленный с помощью DejaVu Sans:

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

Хотя персонажи все еще выглядят одинаково, расстояние между ними значительно. Может быть дело вкуса, предпочтительнее ли последнее для римских цифр, но это, конечно, не будет хорошим выбором кернинга для обычных заглавных букв.

Linux Libertine идет еще дальше:

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

Здесь римские цифры немного меньше заглавных букв, что соответствует арабским цифрам шрифта. Самое главное, что они связаны, воспроизводя функцию, часто встречающуюся в нарисованных от руки римских цифрах.

Теперь, некоторые могут все еще утверждать, что нет никаких улучшений в вышеупомянутом или что они не стоят усилий. Итак, вот случай, когда не использование символов Юникода приведет к ужасным результатам:

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

(Обратите внимание, что небольшой размер цифр отражает некоторую фактическую историческую типизацию.) Нечто подобное может происходить для шрифтов шрифтов или каллиграфии.

Без определенных точек Unicode для римских цифр решение последней проблемы было бы возможно только с:

  • Использование сложной функции OpenType (или аналогичной), которая пытается определить, является ли последовательность заглавных букв римской цифрой. Это неизбежно вызовет проблемы со словами, которые также будут действительными римскими цифрами.

  • Использование простой функции OpenType, которую необходимо активировать вручную для каждой римской цифры.

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

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

Wrzlprmft
источник
В какой степени римские цифры представляют какую-либо проблему, отличную от аббревиатур и инициализмов, обе из которых будут правильно обрабатываться при наличии шрифта, включающего набор маленьких заглавных букв? Я ожидаю, что сценарии, в которых «VII» должен быть показан с использованием заглавных букв, а не заглавных букв, такие же, как сценарии, где «НАТО» или «PM» должны быть показаны аналогичным образом. Хотя, возможно, неплохо иметь способ соединять перекладины с "VII", но не с "VIP", я не уверен, что перемычки должны быть соединены, когда цифры используются в тексте .
Суперкат
Очень хорошо добавил свою расширенную семантику, но если вы хотите включить в свой ответ, не стесняйтесь делать соа и плохо удаляйте мою.
joojaa
@supercat: Я не совсем уверен, к чему вы стремитесь, но по моему опыту, в современной типографии римские цифры всегда имеют размер прописных букв, в то время как в языках, отличных от немецкого, вполне возможно использовать маленькие заглавные буквы для всех заглавных букв. В типографии blackletter вы использовали бы римский шрифт для аббревиатур со всеми заглавными буквами и для римских цифр, но иногда вы использовали бы меньшие римские цифры (как выше), а для некоторых особых случаев вы использовали бы все заглавные буквы blackletter.
Wrzlprmft
@Wrzlprmft: я ожидал, что римские цифры будут напечатаны в том же размере, что и «PM» или «NATO»; в некоторых контекстах такие вещи печатаются как полноразмерные прописные буквы, но в других это выделяет их слишком сильно. Если бы у шрифта был набор заглавных букв, дизайн которых по отношению к остальному шрифту был бы подходящим для «PM» или «NATO», я бы подумал, что он также подойдет для римских цифр.
Суперкат
@supercat: Да, для обычного римского шрифта (хотя можно поспорить, будет ли это лучше всего делать). Но как насчет шрифтов Blackletter и сценариев? Кроме того, что вы делаете из этого вывод?
Wrzlprmft
27

TL; DR Консорциум 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 рекомендует использовать латинские буквы, когда это возможно, а не цифры.

Edit: добавлено утверждение TL; DR в начале

Фредерик Гроссханс
источник
9
« Консорциум Unicode рекомендует использовать латинские буквы, когда это возможно, а не цифры». Это должно быть гораздо более заметным, чем сейчас.
Иксрек
1
С точки зрения семантики Unicode это, безусловно, лучший ответ здесь. Могут быть практические причины, по которым определенные шрифты предпочитают символы римских цифр, и это, конечно, независимое соображение графического дизайна, но семантически они всегда ошибочны.
R ..
13

С точки зрения того, как это выглядит, не может быть большой разницы. Так что, если вы публикуете только печатные материалы, то нет никакой разницы, за исключением некоторых шрифтов, как указывает Wrzlprmft в своем превосходном ответе.

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

Семантическая разница огромна. Использование римских цифр делает очевидным, что вы говорите о цифре 5 вместо буквы V. Конечно, они выглядят одинаково, но они имеют разные значения. Это будет означать, что у поисковой системы может быть больше шансов найти «XX mark V» при поиске «XX version 5».

Фактически причина того, что некоторые вещи работают плохо, заключается в том, что мы не встраиваем семантическую информацию. Мир действительно был бы лучше, если бы мы были. Таким образом, использование правильного семантического значения - это то же самое, что использование стилей в текстовом процессоре и стилизация вручную. Человеческая сторона не имеет большого значения, но в сфере автоматизации есть большие возможности.

Шрифты должны составлять разные римские цифры

Создатели шрифтов на самом деле не используют их, потому что они не очень часто используются. Но используя их, вы можете получить римские цифры на буквах, которые отличают их от текста. Таким образом, эта функция используется недостаточно, потому что это редкое использование. Шрифты на самом деле не все реализуют, и не должны. Используя их, вы выиграете, если они присутствуют.

Вывод

Это все, конечно, проблема курицы и типа яйца. Если люди не используют специальные диапазоны символов, то никаких специальных допусков для этих диапазонов не будет. Таким образом, шрифт не будет поддерживать специально стилизованные римские литералы, потому что это будет пустой тратой усилий на функции, которые никто не использует. То же самое относится и к поиску: если никто не использует римские литералы, то ни один поисковик не найдет римские литералы и семантика будет потеряна. Семантика страдает от неприятия правильного смыслового значения. То же самое, безусловно, относится и к более широкому диапазону символов Unicode.

Что касается сложности ввода, да, большинство пользователей не могут писать расширенные символы, но это не повод для опытного человека, чтобы пропустить это, если это имеет смысл. Если никто не делает вещи лучше, никакого прогресса не будет. У адского чётного слова есть режимы для написания альфы, набрав / alpha. Так что на самом деле нет никаких причин, почему не может быть простого способа пометить цифры или даже автоматически предложить их как таковые. Опять же, если никто не сделает этого, то оно никогда не получит более широкого распространения.

joojaa
источник
На самом деле поисковая система дает гораздо лучшие результаты при поиске «Луи VII», а не «Луи Ⅶ», вероятно, потому что в действительности большая часть контента создается с помощью инструментов, которые не допускают такого тонкого семантического различия.
xpereta
1
@xpereta да, потому что люди не заботятся о семантике. Тем не менее, если бы они были, то вы бы легко соответствовали цифрам 7. Большая часть неэффективности в мире заключается в том, что люди не считают важным указывать на семантическое различие вещей в явном виде, когда они могут легко это сделать. Компьютер действительно не знает разницы, даже если бы человек это
сделал
1
@joojaa В этом случае, вероятно, это больше связано с тем, что VII на порядки проще набирать, чем Ⅶ. Я не уверен, что это когда-нибудь изменится.
Ixrec
Я бы немного расширил последний абзац, чтобы завершить ваш вывод о том, что более широкое использование таких специальных символов будет стимулировать более широкую реализацию шрифтов.
Натан Тагги
2
Я сильно подвергаю сомнению этот ответ относительно семантики. Римские цифры в Юникоде <compat>эквивалентны соответствующим последовательностям латинских букв, что убедительно свидетельствует о том, что единственная причина, по которой они вообще есть в Юникоде, заключается в совместимости в обоих направлениях с некоторыми унаследованными (возможно, CJK) наборами символов, которые их имели. Такие символы, как правило, не должны использоваться, за исключением документов с достоверным круговым переключением, созданных в устаревших кодировках.
R ..