luat_ufont.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include "luat_base.h"
  2. typedef struct luat_font_data {
  3. uint8_t map_type; // 类型数据, 后面有详细说明
  4. uint8_t unicode_size; // map表单个字符的字节大小, 可以是2,4
  5. uint16_t bitmap_size; // 单个字符的bitmap数据的字节大小
  6. uint16_t char_w_bit;
  7. uint16_t count; // 字符数量
  8. uint32_t unicode_min;
  9. uint32_t unicode_max;
  10. uint8_t *map_data;
  11. uint8_t *bitmap_data;
  12. // uint32_t reserved; // 保留区域, 扩展用, 默认0x0000
  13. }luat_font_data_t;
  14. typedef struct luat_font_header
  15. {
  16. uint8_t magic; // 总是 0xC5
  17. uint8_t version; // 当前为0x0001
  18. uint8_t line_height; // 字号
  19. uint8_t access_mode : 4; // 访问模式
  20. uint8_t font_data_count : 4; // 数据总数, 通常就1或2个,不会很多.
  21. uint32_t reserved; // 保留区域, 扩展用, 默认0x0000
  22. }luat_font_header_t;
  23. typedef struct luat_font_desc
  24. {
  25. luat_font_header_t header;
  26. luat_font_data_t *datas;
  27. }luat_font_desc_t;
  28. typedef struct luat_font_char_desc
  29. {
  30. // uint32_t unicode;
  31. uint32_t line_height;
  32. uint16_t char_w;
  33. uint16_t reserved;
  34. uint16_t len;
  35. uint8_t *data;
  36. }luat_font_char_desc_t;
  37. int luat_font_get_bitmap(luat_font_header_t *font, luat_font_char_desc_t *dsc_out, uint32_t letter);
  38. uint16_t luat_utf8_next(uint8_t b, uint8_t *utf8_state, uint16_t *encoding);
  39. // LVGL
  40. #include "lvgl.h"
  41. #include "lv_font.h"
  42. /** Get a glyph's descriptor from a font*/
  43. bool luat_fonts_lvgl_get_glyph_dsc(const struct _lv_font_struct *, lv_font_glyph_dsc_t *, uint32_t letter, uint32_t letter_next);
  44. /** Get a glyph's bitmap from a font*/
  45. const uint8_t * luat_fonts_lvgl_get_glyph_bitmap(const struct _lv_font_struct *, uint32_t);