Есть ли символ "глиф не найден"?

Давайте предположим, что у нас есть текст, который содержит символ 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

CJK Символы и Пунктуация

Есть 3 возможных символа для глифа не найдены.

Проверьте в спецификации Microsoft, раздел Форма глифа.notdef, https://www.microsoft.com/typography/otspec160/recom.htm

Другие вопросы по тегам