Вопрос: Почему я не должен использовать символы Unicode для имитации типографских стилей (например, небольших кепок или скриптов)?


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

  • Маленькие колпачки:

    ʙᴇʜᴏʟᴅ ᴛʜɪꜱ ꜰᴀɴᴄɪʟy ᴇɴᴄᴏᴅᴇᴅ ᴛᴇxᴛ.

  • Автор сценария:

    𝓑𝓮𝓱𝓸𝓵𝓭 𝓽𝓱𝓲𝓼 𝓯𝓪𝓷𝓬𝓲𝓵𝔂 𝓮𝓷𝓬𝓸𝓭𝓮𝓭 𝓽𝓮𝔁𝓽.

  • Blackletter:

    𝕭𝖊𝖍𝖔𝖑𝖉 𝖙𝖍𝖎𝖘 𝖋𝖆𝖓𝖈𝖎𝖑𝖞 𝖊𝖓𝖈𝖔𝖉𝖊𝖉 𝖙𝖊𝖝𝖙.

Это вызвало интерес к Stack Exchange (например, Вот, Вот, а также Вот) и критика таких методов была сделана. Но что может пойти не так, когда я их использую?


123
2017-12-26 11:00


Источник


Я читаю это с моего телефона, и я не вижу двух последних модных текстов. - Scimonster
Поскольку на некоторых устройствах он не читается: i.stack.imgur.com/kM73J.png - Chris Kent
Поскольку некоторые из нас хотят видеть веб-страницы в том, что мы считаем читаемыми шрифтами (и размерами, цветами и т. Д.), Поэтому мы используем, например, пользовательские стили CSS CSS, чтобы переопределить стили авторов. Вы можете заметить, что, хотя ваши три примера отображаются на моем устройстве, по-видимому, так же, как вы предполагаете, что они появляются, мне они доступны только для чтения на границе. Почему вы ставите свою художественную тягу над легкостью чтения ваших читателей? - jamesqf
Вот интересное замечание: Edge не может найти текст в последних двух образцах, и Chrome не может найти текст в первом. (Попробуйте Ctrl + F'ing для BEHOLD в обоих браузерах.) Не проверял Firefox. - Schism
@Schism Firefox не находит ни одного из них. Похоже, что Chrome, вероятно, использует нормализацию NFKC / NFKD перед поиском, который разлагает текст сценария и черно-белого текста на базовую латиницу. Firefox, похоже, не делает этого. Край ... делает что-то странное. - Bob


Ответы:


Генеральная

Эти символы не предназначены для обычного текста латинского алфавита, а для фонетики, текста кириллицы-алфавита, для использования в качестве математических символов (представляющих переменные) или подобных. Единственный способ кодирования текста в базовом латинском алфавите, совместимый с Unicode, - использовать символы, используемые преимущественно для этой цели (т. Е. Из Основной латинский Unicode).

Как и во многих других стандартах, вы должны дважды подумать о нарушении Unicode. Более того, Unicode включает в себя так много письменных систем, прецедентов и вещей, которые существуют только для обратной совместимости с другими стандартами1 что полное понимание всех его мотивов - это сама наука. Короче говоря, если вы действительно не знаете, что делаете, очень вероятно, что что-то сломается, о чем вы даже не подумали.

Конкретные примеры

доступность

Кодированный текст не только существует для визуализации в некотором шрифте. Его также можно интерпретировать, например, с помощью экранных устройств. И читателю экрана не нужно угадывать,

𝓽𝓱𝓮

означает определенную статью или математический продукт2 переменных 𝓽, 𝓱 и 𝓮 - для чего предназначены эти символы. Поэтому наилучшее поведение будет заключаться в том, что в нем указаны эти символы, например. говоря буквально следующее:

bold script small t, жирный шрифт маленький h, жирный шрифт маленький e

Он не должен просто говорить «вместо», потому что тогда он не будет правильно читать математические тексты, символы которых образуют произносимое слово.3

портативность

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

Но даже если машина читателя использует только другой шрифт, это может сделать текст значительно менее читаемым. Для первый пример, это 𝓉𝒽ℯ отображается с двумя разными шрифтами:

𝓉𝒽ℯ rendered with FreeSerif and STIX

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

В второй пример, предположим, что вы или читатель выложили «cᴜт мy в» по ​​какой-то причине. С хорошим шрифтом вы получите4:

сᴜт мy вᴀʀ rendered in upright and italics. italics reads as "cum my bar"

Причина этого в том, что маленькие шапки были (частично) имитированы кириллическими буквами и Кириллические курсивы иногда очень сильно отличаются от их вертикальных копий, Итак, это правильное поведение.

возможности поиска

Как первый пример, рассмотрите, что вы хотите, чтобы разумный поиск выполнялся с символом 𝒲 (математический скрипт W). Предположим, что поиск имеет два режима: режим по умолчанию и точный режим (обычно называемый деликатный случай). Этот символ должен быть:

  • найденный при поиске вес или W в режиме по умолчанию - для тех, кто не хочет беспокоить ввод или копирование специального символа в поле поиска;

  • найденные при поиске 𝒲 в точном режиме - для тех, кто хочет найти, где соответствующая переменная упоминается в математическом документе³;

  • не найден при поиске 𝓌, вес или W в точном режиме из-за нарушения поиска, аналогичного приведенному выше.

Однако, если вы используете этот символ для имитации обычного текста, его следует искать при поиске W или 𝒲 в точном режиме, что противоречит вышеизложенному.

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

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

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


1Вы знаете что XKCD о неизбежном провале унификации стандартов? Ну, Unicode преуспел.
2или какой бы пустой оператор ни находился в соответствующем соглашении
3Я знаю, что очень немногие математические тексты в настоящее время поддерживают эту кодировку или что-то совместимое с ней, но дело в том, что когда-нибудь они, надеюсь, это сделают. Ваш текст, злоупотребляющий Unicode, все еще может быть вокруг и читать.
4Если вы не локализуетесь для македонского или сербского, в котором вы получите другой, но все же нежелательный результат.


220
2017-12-26 11:00



Комментарии не предназначены для расширенного обсуждения; этот разговор был переехал в чат, - Journeyman Geek♦
Как насчет третьего примера? Почему текст черновика существует даже в Юникоде, а не только в каком-то шрифте? - posfan12
@ posfan12: используется как отдельный математический алфавит - как и символы сценария. (Обратите внимание, что пример нумерации здесь не имеет ничего общего с точками пули в вопросе.) - Wrzlprmft
Ваш пример с маленькими частями предлагает головоломку / соревнование: найдите правильное предложение, которое станет другим предложением при курсировании ... (оба интерпретируются человеческими читателями на латинском языке, скажем) - Hagen von Eitzen


Что может пойти не так? Ну, я вижу это:

enter image description here

в Firefox 50.1.0 на Windows 7.

Проблема пропущенные глифы, в этом случае на мобильном устройстве, дополнительно иллюстрируется изображением, данным пользователем Крис Кент в комментарий, который я обрезал и изменял оригинал:

enter image description here

И пользователь oals любезно способствовали другой пример:

enter image description here


66
2017-12-26 11:31



Меня? i.stack.imgur.com/lWRAa.png - oals
@Lilienthal Я впечатлен тем, сколько лет вы должны были пройти, не проверяя или не устанавливая обновления. Я имею в виду, что я по-прежнему использую что-то, основанное на Firefox 3.5 на некоторых устройствах, но у меня нет выбора в этом вопросе (устройство слишком хорошее, но не доступно более новый браузер, доступный) - mtraceur
@Lilienthal. Некоторое время в 2020 году основным номерам телефонов Firefox могут потребоваться 64-битные номера. Вскоре после этого номер версии займет больше места, чем фактическая программа. В попытке восстановить долю на рынке номерам версий Chrome понадобятся целые планеты для их хранения. - Andrew Morton
Вы, люди, знаете, сколько известных и активных уязвимостей безопасности вы подвергаете себя, используя такие древние браузеры? - Zach Lipton
@ Zach Lipton: Вы понимаете, что это путь к списку моих приоритетов? # 1 имеет то, что я действительно могу использовать. Хотя, возможно, люди Firefox (и многие другие) приняли новую парадигму: безопасность благодаря непригодности. - jamesqf


У меня проблема с XY.

Y and X appear smaller than the rest of the text

Здесь мы видим, что Y и X кажутся меньшими, чем остальная часть текста. При определенных уровнях масштабирования они выглядят одинакового размера, но это, похоже, выявило проблему с этими конкретными глифами в этом конкретном шрифте.


28
2017-12-26 19:46



Я могу предложить три возможных объяснения того, что вы видите: 1) Плохо намекающий, 2) Резервный шрифт используется для всего, кроме Икс а также у. 3) Плохая конструкция шрифта: маленькие колпачки были спроектированы так, чтобы быть немного большими, чем строчные буквы (что является правильным выбором), а затем используются для фонетических и кириллических символов Юникода, что не является хорошим выбором, поскольку, например, в фонетическом использовании эти символы должны гармонизировать с основными латинскими символами. - В любом случае: пункты 1) и 3) не связаны с злоупотреблением Юникодом. Пункт 2) уже рассмотрен в других ответах. - Wrzlprmft
@Wrzlprmft: По определению это злоупотребление юникодом, потому что unicode не имеет маленьких кепок. У юникода есть буквы, которые выглядят как маленькие кепки в блоках фонетических алфавитов и латинский расширенный-D блок. В частности, ни два фонетических блока, ни латинский расширенный-D блок не содержат буквы, которые выглядят как маленькие шапки Икс, поэтому я предполагаю, что Икс происходит откуда-то еще, возможно, с кириллицей. Разница вызвана ни 1, 2, ни 3. Это вызвано буквой, принадлежащей другому алфавиту. - slebetman
@slebetman: Маленькие шапки Икс просто обычный строчный регистр Икс (вы можете просто скопировать символ из вопроса и проверить его самостоятельно). И нижний регистр Икс должен гармонизировать с фонетическими символами, потому что он также используется как фонетический характер. Он также должен иметь ту же высоту, что и кириллические символы нижнего регистра, поскольку вы не хотите, чтобы отдельные кириллические слова выделялись из латинского текста (и наоборот). - Wrzlprmft
Приобретено для lol при «проблеме XY» :) - Andrew Morton


Использование нелатинских символов, своего родом-Сорт похожи на латинских ставит вас в компании спамеры, pornmongers, и кто знает что-они-вверх-к лицемерам, которые хотят, чтобы их текст непостижим, unindexable и repudiatable. («Я никогда не говорил, что это безопасно!» Я сказал, что это сигма-альфа-интеграл-знак-эпизод !!! Не могу подать в суд на меня !!! »)

Если вы в этом клубе удобны, то идите.


13
2017-12-28 20:04