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

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

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

Ответы [ 4 ]

12 голосов
/ 20 октября 2008

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

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

5 голосов
/ 20 октября 2008

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

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

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

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

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

1 голос
/ 20 октября 2008

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

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

...