如何检测丢失的字体字符

Tat*_*ela 5 c++ user-interface qt qt4

有没有办法检测所有字符是否正确显示当前字体?在某些环境和字体中,某些字符将替换为方形符号.

我想自动验证当前字体是否支持GUI中使用的所有字符.

Tat*_*ela 5

我使用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;
}
Run Code Online (Sandbox Code Playgroud)

当然,向用户显示缺少的字符会很好,但是当然必须使用不同的字体来完成:)