现象描述:
使用LvglFontTool V0.4工具生成指定的字符集的bin字库文件,然后烧录到外部flash进行读取,发现有些许字符没有显示出来,而且每次都是固定的字符,但我用工具生成那个C数组字库进行测试,却能够正常显示。
如下异常图片:
我在论坛里面发帖求助了下,开始也没得到很好的解决,也十分郁闷,因为对比数据没有什么不一样,只能一步步的检查,调试发现,显示这个缺位的字符时执行了__user_font_get_glyph_dsc
函数,但是没有执行__user_font_get_bitmap
函数,心想难道获取字符描述数据有问题,后来在一篇描述显示异常的文章中说到lv_font_get_glyph_bitmap
读取异常,我就找到该调用改函数的函数(lv_draw_letter
),然后打了断点一步步追踪,发现我的没有往下走,而是在函数上面跳出去了。
如下,这就纳闷了,然后看到ofs_x,ofs_y
,我又回头对比bin
字库数据和C
数组字库数据,最后仔细对比数据才发现了异常。
int16_t
)与工具对这个结构体的描述(右图)(int8_t
)是不一样的,导致负值取值的出错了。