微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > mt2503 孟加拉字符0x09c0与前面一个字符组合时显示有误

mt2503 孟加拉字符0x09c0与前面一个字符组合时显示有误

时间:10-02 整理:3721RD 点击:
[ DESCRIPTION ]
孟加拉字符0x09c0与前面一个字符组合时中间有间隙。具体表现如下:
错误的显示:

正确的显示:



[SOLUTION]
可以在显示 0x09c0的时候将该字符往前移,具体的修改方法如下:
在Pixcomfontengine.c中修改了两处:
1、__inline static U32 MMI_fe_get_font_data函数的最后将如下代码:
return mmi_fe_get_font_data_internal(
ch,
type,
ppCharData,
pnWidth,
advance_x,
&dummy_pnHeight,
glyph_width,
glyph_height,
ascent,
descent,
valid);
更改为:
NumChar = mmi_fe_get_font_data_internal(
ch,
type,
ppCharData,
pnWidth,
advance_x,
&dummy_pnHeight,
glyph_width,
glyph_height,
ascent,
descent,
valid);
#if defined(__MMI_MULTITAP_BANGLA_SPEC__) &&
!defined(__MMI_VECTOR_FONT_SUPPORT__)
if (ch == 0x09c0)
{
*pnWidth = *pnWidth / 3;
*advance_x = *advance_x / 3;
}
#endif
return NumChar;

2、static U32
mmi_fe_show_indic_string_internal(mmi_fe_showstring_int_param_struct_p
param)函数中mmi_fe_show_font_data调用之前,增加如下代码:
#if defined(__MMI_MULTITAP_BANGLA_SPEC__) &&
!defined(__MMI_VECTOR_FONT_SUPPORT__)
if (unicode == 0x09c0)
CurrentX -= glyph_width / 2 + 2;
#endif

注:如果0x09c0这个字符的字形与期望的不相符可以通过使用MTC工具修改BDF字库来达到期望的效果;如果按照上述方法修改之后,0x09c0在候选框中的位置也往前移导致该字符与前一个字符重叠,则可以尝试定义一个全局变量,来作为该字符是否显示在候选框的标志。利用这个全局变量在前面改动的地方加上判断,如果是在候选框显示就不要前移。候选框显示字符的函数mmi_imui_draw_string_for_selection_area。

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

网站地图

Top