C++ 如何检测丢失的字体字符
是否有办法检测所有字符是否以当前字体正确显示?在某些环境和字体中,某些字符将替换为方形符号 我想自动验证当前字体是否支持GUI中使用的所有字符。可能的解决方案。。。C++ 如何检测丢失的字体字符,c++,user-interface,qt,qt4,C++,User Interface,Qt,Qt4,是否有办法检测所有字符是否以当前字体正确显示?在某些环境和字体中,某些字符将替换为方形符号 我想自动验证当前字体是否支持GUI中使用的所有字符。可能的解决方案。。。 根据您的应用程序,以下可能是一种可行的解决方案 (或完全不适用): 弹出一个对话框,其中包含一个示例段落,其中包含要使用的所有字符 使用你心目中的字体呈现段落 向用户显示一条消息,以便 --选择OK(如果他/她可以阅读文本,即仅当没有可见的“方块”时) --选择其他字体(如果任何“正方形”可见) 注意:如果您想知道,这对于应
根据您的应用程序,以下可能是一种可行的解决方案
(或完全不适用):
- 弹出一个对话框,其中包含一个示例段落,其中包含要使用的所有字符
- 使用你心目中的字体呈现段落
- 向用户显示一条消息,以便 --选择OK(如果他/她可以阅读文本,即仅当没有可见的“方块”时) --选择其他字体(如果任何“正方形”可见)
祝你好运 我使用该类找到了一个可能的解决方案。下面是一个示例函数,用于查询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;
}
bool字符处理(常量QLabel&label){
QFontMetrics度量(label.font());
对于(int i=0;i
当然,向用户显示缺少的字符会很好,但当然这必须使用不同的字体:)根据本文的讨论,我认为QFontMetrics的示例代码不会很好地工作。 QFontMetrics inFont()函数依赖于QFont类,而且它似乎必须将StyleStrategy设置为QFont::NoFontMerging。但实际上,NoFontMerging标志并没有按照您认为的方式工作,因此如果系统中的其他字体具有此标志符号,inFont函数仍然会返回true 顺便说一句,我最后用python制作了一个验证工具
虽然此链接可以回答问题,但您应该避免使用仅链接的答案。