Как обнаружить недостающие символы шрифта - PullRequest
5 голосов
/ 21 апреля 2010

Есть ли способ определить, что все символы правильно отображаются с текущим шрифтом? В некоторых средах и шрифтах определенные символы заменяются квадратным символом.

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

Ответы [ 3 ]

2 голосов
/ 21 апреля 2010

Я нашел возможное решение, используя класс QFontMetrics . Вот пример функции для запроса, доступны ли все символы в текущем тексте QLabel:

bool charactersMissing(const QLabel& label) {
    QFontMetrics metrics(label.font());
    for (int i = 0; i < label.text().size(); ++i) {
        if (!metrics.inFont(label.text().at(i))) {
            return true;
        }
    }
    return false;
}

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

1 голос
/ 26 ноября 2013

Согласно этой дискуссии, я не думаю, что пример кода QFontMetrics будет работать хорошо. https://bugreports.qt -project.org / просмотр / QTBUG-1732

Функция QFontMetrics inFont () зависит от класса QFont, и кажется , вам нужно установить StyleStrategy в QFont :: NoFontMerging. Но на самом деле флаг NoFontMerging не работает так, как вы думаете, поэтому функция inFont по-прежнему возвращает true, если другие шрифты в вашей системе имеют этот глиф.

Кстати, я наконец сделал инструмент проверки в python.

https://github.com/diro/pyGlyphChecker

0 голосов
/ 21 апреля 2010

Возможное решение ...


В зависимости от вашего приложения возможны следующие решения
(или полностью не применимо):

  • Всплывающее диалоговое окно с примером абзаца, содержащего все символы, которые вы собираетесь использовать.

  • Визуализация абзаца с использованием шрифта, который вы имеете в виду.

  • Отображение сообщения пользователю на

    - Выберите ОК (если он / она может читать текст, т. Е. Только если не видны "квадраты")

    - Выберите другой шрифт (если видны "квадраты")

ПРИМЕЧАНИЕ: Если вам интересно, это не очень необычное поведение для приложений. MS-WORD делает это, когда обнаруживает нестандартную кодировку в файле документации.

GOODLUCK !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...