我在研究QTE3.3.1字体的过程中发现,对于特定的BDF(例如只有汉字的BDF字体文件)在转成QPF格式时候会出现段错误,但是该文件中的字体可以直接用于界面显示。追踪代码发现qmemorymanager_qws.cpp中void QMemoryManager::savePrerenderedFont(FontID id, bool all)函数有这么一句代码
if ( !mmf->tree )
mmf->tree = new QGlyphTree(32,32,mmf->renderer);// 32 = " " - likely to be in the font
这个32像注释说的 likely to be in the font。
修改为
if ( !mmf->tree ){
for (int ii=0; ii<=mmf->renderer->maxchar; ii++) {
if ( mmf->renderer->inFont( ii ) ) {
mmf->tree = new QGlyphTree(ii,ii,mmf->renderer);
break;
}
}
}
就不会出错了。。