Есть ли символ "глиф не найден"?
Давайте предположим, что у нас есть текст, который содержит символ Unicode, который не может быть отображен, потому что у нашего шрифта нет соответствующего глифа. Обычно вместо этого отображается заполнитель, например, прямоугольный блок (см. Скриншот).
Есть ли символ "глиф не найден", который надежно производит этот глиф? Я хотел бы написать что-то вроде "If the following text contains <insert character here> then you need another font..."
в пользовательском интерфейсе.
Кстати, я не говорю о replacement ( замена персонажа). Этот отображается, когда символ Unicode не может быть правильно декодирован из потока данных. Это не обязательно производит тот же самый глиф:
8 ответов
Нет, нет символа "глиф не найден". Разные программы используют разные графические представления. Пустой узкий прямоугольник - это обычный рендеринг, но не единственный. Это может быть также прямоугольник с вопросительным знаком или с шестнадцатеричным номером кода символа.
Поэтому лучше, например, отобразить маленькое изображение персонажа вместе с самим персонажем, чтобы читатель мог их сравнить.
Из спецификации Unicode:
U+25A1
□ БЕЛЫЙ КВАДРАТ
может использоваться для представления отсутствующего идеографа
→
U+20DE
$ ⃞ объединяющий квадрат
Символ глифа не найден определяется механизмом шрифтов и шрифтом; для него нет фиксированного символа.
Unicode использует эти термины:
- символ замены
- недостающий символ
- интерпретируемый, но недопустимый характер
Стандарт Unicode (10.0) не определяет, как они должны выглядеть, но в главе 5.3 [ PDF ] предлагается, чтобы реализации отображали
[…] Отличительные глифы, которые дают общее представление об их типе […]
отличать их от "неназначенных кодовых точек". Они приводят несколько примеров:
Запись глоссария Unicode гласит:
Он часто отображается в виде открытого или черного прямоугольника.
tl; dr: нет стандартизированного вида / глифа, все зависит от реализации. Чтобы помочь пользователям, реализации могут отображать глифы, которые указывают, какой тип символа не может быть отображен.
Используйте не-символ, такой как U+10FFFF (в самом конце пространства Юникода), который на 99,99% наверняка не найден в таблице cmap какого-либо вменяемого шрифта. По крайней мере, ни один из известных системных шрифтов Windows не отображает этот не символьный глиф, и весьма маловероятен любой системный шрифт Linux/Mac. Даже полный шрифт Last Resort ( http://www.unicode.org/policies/lastresortfont_eula.html) не отображается на карте. Таким образом, хотя в Unicode не существует официального символа "глиф не найден", который будет отображаться на глиф.notdef, вышеупомянутый не-символ на практике гарантированно отображает этот глиф, независимо от того, какой дизайн глифа имеет этот конкретный шрифт. Глиф.notdef (идентификатор глифа 0 в OpenType) может быть простым полым прямоугольником (стандартным), прямоугольником с x, прямоугольником с вопросительным знаком, иногда пустым (что является плохой практикой) и иногда странными вещами, такими как спирали (в Palatino Linotype),
Существует символ notdef, который означает, что глиф не найден. Но у него нет кода Вы можете использовать коды управляющих символов для вставки символа notdef (например, "", U+0002)
Также (из того, что я слышал) японцы используют GETA MARK 〓 U + 3013
Есть 3 возможных символа для глифа не найдены.
Проверьте в спецификации Microsoft, раздел Форма глифа.notdef, https://www.microsoft.com/typography/otspec160/recom.htm