Archived:第三版中自定义字体文件将无法正常工作
文章信息
详细描述
自定义的字体(TTF或GDR)可以通过CWsScreenDevice::AddFile()来添加。但在S60第三版中,增加新字体只能第一次有效,当程序重启后,增加的字体就会失效(被系统字体取代)
如何重现
上述问题可以使用下列代码重现
CFont* font; TInt fontId;
CWsScreenDevice* dev = CEikonEnv::Static()->ScreenDevice();
dev->AddFile( _L("c:\\data\\sample.ttf"), fontId );
const CFont* logicalFont = AknLayoutUtils::FontFromId( EAknLogicalFontSecondaryFont );
TFontSpec fontSpec = logicalFont->FontSpecInTwips();
TFontSpec myFontSpec( _L("MyTypeface"), fontSpec.iHeight );<br> dev->GetNearestFontToDesignHeightInTwips( font, myFontSpec );
解决方案
这个问题已经在第三版FP1及后继版本予以修复
受影响手机的解决方案
受其影响的手机可以在启动程序时做一次检测,看字体文件是否已经准备好。即仅调用一次AddFile()


(no comments yet)