| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #include "luat_base.h"
- typedef struct luat_font_data {
- uint8_t map_type; // 类型数据, 后面有详细说明
- uint8_t unicode_size; // map表单个字符的字节大小, 可以是2,4
- uint16_t bitmap_size; // 单个字符的bitmap数据的字节大小
- uint16_t char_w_bit;
- uint16_t count; // 字符数量
- uint32_t unicode_min;
- uint32_t unicode_max;
- uint8_t *map_data;
- uint8_t *bitmap_data;
- // uint32_t reserved; // 保留区域, 扩展用, 默认0x0000
- }luat_font_data_t;
- typedef struct luat_font_header
- {
- uint8_t magic; // 总是 0xC5
- uint8_t version; // 当前为0x0001
- uint8_t line_height; // 字号
- uint8_t access_mode : 4; // 访问模式
- uint8_t font_data_count : 4; // 数据总数, 通常就1或2个,不会很多.
- uint32_t reserved; // 保留区域, 扩展用, 默认0x0000
- }luat_font_header_t;
- typedef struct luat_font_desc
- {
- luat_font_header_t header;
- luat_font_data_t *datas;
- }luat_font_desc_t;
- typedef struct luat_font_char_desc
- {
- // uint32_t unicode;
- uint32_t line_height;
- uint16_t char_w;
- uint16_t reserved;
- uint16_t len;
- uint8_t *data;
- }luat_font_char_desc_t;
- int luat_font_get_bitmap(luat_font_header_t *font, luat_font_char_desc_t *dsc_out, uint32_t letter);
- uint16_t luat_utf8_next(uint8_t b, uint8_t *utf8_state, uint16_t *encoding);
- // LVGL
- #include "lvgl.h"
- #include "lv_font.h"
- /** Get a glyph's descriptor from a font*/
- bool luat_fonts_lvgl_get_glyph_dsc(const struct _lv_font_struct *, lv_font_glyph_dsc_t *, uint32_t letter, uint32_t letter_next);
- /** Get a glyph's bitmap from a font*/
- const uint8_t * luat_fonts_lvgl_get_glyph_bitmap(const struct _lv_font_struct *, uint32_t);
|