问答:MT2503「Bitmap Font」字库中缺少某一特殊字符,如何添加?
[DESCRIPTION]
字库中缺少某一特殊字符,如何添加
[SOLUTION]
可尝试两种方法:
1.生成一个新的字库,该字库中只包括缺少的那个字符,创建完成后,在查找mtk私有字库之前查找该字库。(可仿照函数mmi_fe_get_font_data_internal中index=mmi_fe_search_in_prop_font(ch,&nbase,&gMTKProprietaryFontFamily,&estraFontPtr);来做,其中
gMTKProprietaryFontFamily为mtk私有字库)
2.把该字符加到另外的一个字库中(有BDF文件,且字符大小相同),如英文字库
如下采用的是第一种方法,即重新创建一个新的字库,步骤如下:
1)用MCT工具生成该字符的BDF文件,把fontres.c中的代码复制到pixcomfontengine.c中(如下为mtk内部测试的字库,不可直接复制)
#if1
constRangeDatachar1_RangeData[1]={
{49,49},};
constRangeDetailschar1_RangeInfo={
1,
char1_RangeData
};
sCustFontDataalpha_small={
48,19,
#ifdefPLUTO_MMI
48,0,
#endif
0,114,500,
(U8*)char1_Width,(U8*)char1_Width,(U32*)char1_Offset,(U8*)char1_Data,(U32*)char1_RangeOffset,
{
{FONTATTRIB_NORMAL|FONTATTRIB_BOLD|FONTATTRIB_ITALIC|FONTATTRIB_OBLIQUE|FONTATTRIB_UNDERLINE|FONTATTRIB_STRIKETHROUGH,FONTATTRIB_N
ORMAL|FONTATTRIB_BOLD|FONTATTRIB_ITALIC|FONTATTRIB_OBLIQUE|FONTATTRIB_UNDERLINE|FONTATTRIB_STRIKETHROUGH},
{0,0},
{0,0},
{0,0},
{0,0}},
&char1_RangeInfo};
sCustFontDataalpha_medium={
48,19,
#ifdefPLUTO_MMI
48,0,
#endif
0,114,500,
(U8*)char1_Width,(U8*)char1_Width,(U32*)char1_Offset,(U8*)char1_Data,(U32*)char1_RangeOffset,
{
{0,0},
{FONTATTRIB_NORMAL|FONTATTRIB_BOLD|FONTATTRIB_ITALIC|FONTATTRIB_OBLIQUE|FONTATTRIB_UNDERLINE|FONTATTRIB_STRIKETHROUGH,FONTATTRIB_N
ORMAL|FONTATTRIB_BOLD|FONTATTRIB_ITALIC|FONTATTRIB_OBLIQUE|FONTATTRIB_UNDERLINE|FONTATTRIB_STRIKETHROUGH},
{0,0},
{0,0},
{0,0}},
&char1_RangeInfo};
sFontFamilyenglish_another={2,{&alpha_small,&alpha_medium,NULL,NULL,NULL}};
#endif1
把相应的.h文件放到目录\plutommi\mmi\MiscFramework\MiscFrameworkInc下,同时把该.h文件include到该.c文件中。
2)修改函数mmi_fe_get_font_data,在找不到字的情况下,即index==-1时:
index=mmi_fe_search_in_prop_font(Ch,&nBase,&english_another,&extraFontPtr);
nIndexInList=index+(Ch-nBase);
charHashTable[nHashKey].Width=*pnWidth=extraFontPtr->pWidthArray[nIndexInList];
charHashTable[nHashKey].DWidth=*advance_x=extraFontPtr->pWidthArray[nIndexInList];
charHashTable[nHashKey].NumChar=NumChar=
(extraFontPtr->pOffsetArray[nIndexInList+1]-extraFontPtr->pOffsetArray[nIndexInList]);
charHashTable[nHashKey].CharData=*ppCharData=
(extraFontPtr->pDataArray+extraFontPtr->pOffsetArray[nIndexInList]);
直接用到了私有字库的查找函数:mmi_fe_search_in_prop_font(若工程中没有该函数,可用函数SearchInPropFont),只是字库换成了我们自己定义
的&english_another,
注意要打开宏__MMI_FONT_MULTIPLE_PROPRIETARY_SUPPORT__
来源:http://bbs.16rd.com/forum-261-1.html(一牛网论坛)
版权声明:
作者: freeclashnode
链接: https://www.freeclashnode.com/news/article-1436.htm
来源: FreeClashNode
文章版权归作者所有,未经允许请勿转载。
热门文章
- 10月9日|19M/S,Clash/V2ray/SSR/Shadowrocket免费节点订阅链接每天更新
- 9月15日|20.4M/S,Shadowrocket/V2ray/SSR/Clash免费节点订阅链接每天更新
- 10月1日|23M/S,Shadowrocket/Clash/SSR/V2ray免费节点订阅链接每天更新
- 10月5日|22.5M/S,Clash/V2ray/SSR/Shadowrocket免费节点订阅链接每天更新
- 10月8日|18.9M/S,Clash/SSR/V2ray/Shadowrocket免费节点订阅链接每天更新
- 9月20日|19.4M/S,V2ray/SSR/Shadowrocket/Clash免费节点订阅链接每天更新
- 9月19日|23M/S,Clash/SSR/Shadowrocket/V2ray免费节点订阅链接每天更新
- 10月6日|19.5M/S,Shadowrocket/Clash/SSR/V2ray免费节点订阅链接每天更新
- 10月2日|22.9M/S,V2ray/Shadowrocket/Clash/SSR免费节点订阅链接每天更新
- 10月3日|20.9M/S,SSR/V2ray/Clash/Shadowrocket免费节点订阅链接每天更新
最新文章
- 10月10日|21.9M/S,V2ray/Clash/SSR/Shadowrocket免费节点订阅链接每天更新
- 10月9日|19M/S,Clash/V2ray/SSR/Shadowrocket免费节点订阅链接每天更新
- 10月8日|18.9M/S,Clash/SSR/V2ray/Shadowrocket免费节点订阅链接每天更新
- 10月7日|21.5M/S,V2ray/Clash/Shadowrocket/SSR免费节点订阅链接每天更新
- 10月6日|19.5M/S,Shadowrocket/Clash/SSR/V2ray免费节点订阅链接每天更新
- 10月5日|22.5M/S,Clash/V2ray/SSR/Shadowrocket免费节点订阅链接每天更新
- 10月4日|22M/S,Clash/V2ray/SSR/Shadowrocket免费节点订阅链接每天更新
- 10月3日|20.9M/S,SSR/V2ray/Clash/Shadowrocket免费节点订阅链接每天更新
- 10月2日|22.9M/S,V2ray/Shadowrocket/Clash/SSR免费节点订阅链接每天更新
- 10月1日|23M/S,Shadowrocket/Clash/SSR/V2ray免费节点订阅链接每天更新