Что это значит, когда мой текст отображается в виде полей?

Я пытаюсь отобразить некоторый текст в моей программе, используя, скажем, Windows GDI, а некоторые символы Юникода отображаются в виде полей? Как жизнь?

Смотрите также: Что это означает, когда мой текст отображается как вопросительные знаки?

4 ответа

Решение

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

(изображение футболки с http://www.cafepress.com/nucleartacos.163046834)

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

В Windows есть 2 распространенные проблемы с отображением, которые возникают при попытке отобразить символы Unicode:

  1. текст иногда появляется в виде вопросительных знаков

    • Это происходит, когда данные Unicode преобразуются в 8-битную кодировку набора символов (или технически многобайтовые символы) обычно через системную кодовую страницу (но другие кодовые страницы могут быть указаны в вызовах преобразования). Если целевой 8-битный набор символов не включает необходимые символы, любые символы, не представленные в целевом наборе символов, преобразуются в вопросительные знаки.
  2. текст иногда отображается в виде полей

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

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

В Windows, если вы пытаетесь отобразить текст на разных языках, используйте шрифт, такой как Arial Unicode MS - это включает в себя глифы для огромного количества разных языков. Это шрифт "наименьшего общего знаменателя" - глифы, как правило, будут там, но в нем обычно не хватает символов, и некоторые из глифов будут выглядеть немного странно рядом друг с другом.

У меня была такая же проблема с полем / символом / текстом около 2 лет в Chrome для Win10, и я попробовал все предложенные исправления, но ни один из них не помог мне. Моя проблема была вызвана приложением, которое я не рассматривал. Я использую uBlock Origin, чтобы сократить всплывающую рекламу. По умолчанию uBlock также "блокирует удаленные шрифты на этом сайте", фактически на каждом сайте. Когда шрифты заблокированы, Chrome вставляет что-то взамен, обычно простой квадрат или прямоугольник. Если ничего не помогло, проверьте блокировщик рекламы. Эту функцию можно легко отключить, и тогда отображается весь правильный текст.

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