mt2503 0x09c7/0x09cb/0x09cc组合后无法连接
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
0x09c7/0x09cb/0x09cc三个音节和其他字符组合时,无法连接。
[SOLUTION]
问题原因是MMIfontengine只传入了一个cluster信息让Etrumpadaption进行shaper。但是孟加拉语比较特殊,两个cluster之间也会存在变形,因此
需要传入两个cluster给
Etrumpengine进行变形处理。可以使用如下两个方式中的一种来解决:
方式一、按照如下方式修改代码:
1)etrump_shaper函数中添加cluster定义:
//添加代码
#ifdefined(__MMI_INDIC_ALG__)
mmi_fe_cluster_infopre_cluster;
mmi_fe_cluster_infoall_cluster;
mmi_fe_cluster_info_init(&pre_cluster);
mmi_fe_cluster_info_init(&all_cluster);
#endif
//添加结束
etrump_reset_face_glyphs();
2)etrump_shaper函数中
原始代码:
#ifdefined(OPENTYPE_SUPPORT)
FT_Shape_OpenType_Info(etrump_font_list[etrump_curr_font].Layout,&text[start_index],run_len,0,(MT_Cluster_Info)cluster);
#endif
改为:
#ifdefined(OPENTYPE_SUPPORT)
//添加开始
#ifdefined(__MMI_INDIC_ALG__)
FT_Shape_OpenType_Info(etrump_font_list[etrump_curr_font].layout,text,text_len-run_len,0,(MT_Cluster_Info)&pre_cluster);
FT_Shape_OpenType_Info(etrump_font_list[etrump_curr_font].layout,text,text_len,0,(MT_Cluster_Info)&all_cluster);
for(i=0;i<all_cluster.glyph_len;i++)
{
meMCPy(&cluster->glyph_buf,&all_cluster.glyph_buf[pre_cluster.glyph_len+i],sizeof(mmi_fe_glyph_ot_info));
}
cluster->glyph_len=all_cluster.glyph_len-pre_cluster.glyph_len;
#else
FT_Shape_OpenType_Info(etrump_font_list[etrump_curr_font].layout,&text[start_index],run_len,0,(MT_Cluster_Info)cluster);
#endif
//添加结束
#endif
方式二、通过申请patch:MAUI_03159885
0x09c7/0x09cb/0x09cc三个音节和其他字符组合时,无法连接。
[SOLUTION]
问题原因是MMIfontengine只传入了一个cluster信息让Etrumpadaption进行shaper。但是孟加拉语比较特殊,两个cluster之间也会存在变形,因此
需要传入两个cluster给
Etrumpengine进行变形处理。可以使用如下两个方式中的一种来解决:
方式一、按照如下方式修改代码:
1)etrump_shaper函数中添加cluster定义:
//添加代码
#ifdefined(__MMI_INDIC_ALG__)
mmi_fe_cluster_infopre_cluster;
mmi_fe_cluster_infoall_cluster;
mmi_fe_cluster_info_init(&pre_cluster);
mmi_fe_cluster_info_init(&all_cluster);
#endif
//添加结束
etrump_reset_face_glyphs();
2)etrump_shaper函数中
原始代码:
#ifdefined(OPENTYPE_SUPPORT)
FT_Shape_OpenType_Info(etrump_font_list[etrump_curr_font].Layout,&text[start_index],run_len,0,(MT_Cluster_Info)cluster);
#endif
改为:
#ifdefined(OPENTYPE_SUPPORT)
//添加开始
#ifdefined(__MMI_INDIC_ALG__)
FT_Shape_OpenType_Info(etrump_font_list[etrump_curr_font].layout,text,text_len-run_len,0,(MT_Cluster_Info)&pre_cluster);
FT_Shape_OpenType_Info(etrump_font_list[etrump_curr_font].layout,text,text_len,0,(MT_Cluster_Info)&all_cluster);
for(i=0;i<all_cluster.glyph_len;i++)
{
meMCPy(&cluster->glyph_buf,&all_cluster.glyph_buf[pre_cluster.glyph_len+i],sizeof(mmi_fe_glyph_ot_info));
}
cluster->glyph_len=all_cluster.glyph_len-pre_cluster.glyph_len;
#else
FT_Shape_OpenType_Info(etrump_font_list[etrump_curr_font].layout,&text[start_index],run_len,0,(MT_Cluster_Info)cluster);
#endif
//添加结束
#endif
方式二、通过申请patch:MAUI_03159885
666666
我的妈呀,这是火星文么?
小小的x