微波EDA网,见证研发工程师的成长! 2025年03月26日 星期三
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > mt2503 11B工程添加老版本点阵字库(.c 和 .h)修改说明

mt2503 11B工程添加老版本点阵字库(.c 和 .h)修改说明

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]
11B工程字库的添加是直接添加BDF文件,通过fontgen工具再自动生成.c和.h文件,如果客户没有BDF文件,以下说明是如何修改来支持以前的.c和
.h字库。
[SOLUTION]
11B的字库添加是需要添加BDF文件,而不是原来的.c和.h文件。具体步骤可以参考以下文档:
参考文档:(下载地址:dcc.mediatek.com)
FontResGenSOP
在res_gen_font.cpp中,通过AddFont的方法将对应的BDF文件加入代码中即可。
对于没有字库的BDF文件,请参考上述文档来添加原有的字库文件
具体步骤:
一、关闭__MMI_BDF_SW_COMPRESSION__和__MMI_FONT_COMPRESSION__new编译一个没有做更改的原始版本,以便于生成没有压缩的英文相关资源。
二、修改ResGenerator_HW.tmp和ResGenerator.tmp找到StarttoGenerateFontFile!
删除下面这一句ifexist..\..\..\vendor\font\inc\*.*del/q..\..\..\vendor\font\inc\*.*
三、然后再根据文档FontResGenSOP第7章所说的步骤,添加.h和.c字库信息,并修改main函数等相关函数。
四、对于等宽字库,在后续的代码中,将数据类型作了改动。sCustFontData数据结构中的U16*pRange变成U16的了。
以前的数据信息和现在的存储的内容不相同。因此会出现显示框框的情况。
请尝试在函数mmi_fe_init中
在gdi_mutex_init(&g_mmi_fe_cache_mutex);之前添加语句:
mmi_fe_data_struct_check_and_convert();
其中
voidmmi_fe_data_struct_check_and_convert(void)
{
BOOLneed_convert=MMI_TRUE;
inti,j,k;
font_group_struct*pfont_group;
sCustFontData*pfont_data;
constRangeData*prange_data;
U32range_offset_data;
U32*prange_offset_data;
for(i = 0; i < MAX_FONT_SIZE; i++)
{
pfont_group=&(g_fontfamily);
for(j = 0; j < pfont_group->nTotalFonts ; j++)
{
pfont_data=pfont_group->fontData[j];
if(pfont_data->nEquiDistant)
{
range_offset_data=0;
prange_offset_data=(U32*)(pfont_data->pRange);
for(k = 0; (k+1) < pfont_data-> pRangeDetails->nNoOfRanges; k++)
{
prange_data=&(pfont_data->pRangeDetails->pRangeData[k]);
range_offset_data+=(prange_data->nMax-prange_data->nMin+1)*pfont_data->nCharBytes;
if(range_offset_data!=*(++prange_offset_data))
{
need_convert=MMI_FALSE;
break;
}
}
if(need_convert)
{
range_offset_data=0;
prange_offset_data=(U32*)(pfont_data->pRange);
for(k = 0; (k+1) < pfont_data-> pRangeDetails->nNoOfRanges; k++)
{
prange_data=&(pfont_data->pRangeDetails->pRangeData[k]);
range_offset_data+=(prange_data->nMax-prange_data->nMin+1)*pfont_data->nCharBytes;
if(range_offset_data==*(++prange_offset_data))
{
pfont_data->pRange[k+1]=(U16)(range_offset_data/pfont_data->nCharBytes);
}
}
}
else
need_convert=MMI_TRUE;
}
}
}
}
同时,将.h中的RangeOffset定义处将const去掉。
将强制转换的地方从U32改为U16,但在定义处不做修改。

五、非等宽字符只要将.h中的RangeOffsetU32的参数在定义和强制类型转换的时候改都改为为U16即可。

注意:
1、从第三步开始,把.h文件放到vendor\font\inc下面,以上步骤说明中要修改的fontres.c文件是在plutommi\Customer\CustResource目录下。
2、等宽字和不等宽字是通过sCustFontData中nEquiDistant来判断,1为等宽,0不等宽。四、五步骤分别是对应等宽和不等宽的修改,请注意区分。
修改完成后重新new编译。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top