/* *--------------------------------------------------------------- * Lvgl Font Tool * * 注:使用unicode编码 * 注:本字体文件由Lvgl Font Tool V0.3 生成 * 作者:阿里(qq:617622104) *--------------------------------------------------------------- */ #include "../../lvgl.h" static const uint8_t glyph_bitmap[] = { /* 测 */ 0x5a,0x50,0x00,0x00,0x00,0x00,0x05,0xc8, //+%+..........+%+ 0x0c,0xe8,0xef,0xff,0xff,0xac,0xe5,0xc8, //.%@+@@@@@@%%@+%+ 0x00,0xee,0xec,0x00,0x5e,0xac,0xe5,0xc8, //..@@@%..+@%%@+%+ 0x00,0x03,0xec,0xae,0x5e,0xac,0xe5,0xc8, //....@%%@+@%%@+%+ 0xec,0x03,0xec,0xae,0x5e,0xac,0xe5,0xc8, //@%..@%%@+@%%@+%+ 0x8e,0xc3,0xec,0xae,0x5e,0xac,0xe5,0xc8, //+@%.@%%@+@%%@+%+ 0x08,0xc8,0xec,0xae,0x5e,0xac,0xe5,0xc8, //.+%+@%%@+@%%@+%+ 0x00,0x03,0xec,0xae,0x5e,0xac,0xe5,0xc8, //....@%%@+@%%@+%+ 0x00,0x03,0xec,0xae,0x5e,0xac,0xe5,0xc8, //....@%%@+@%%@+%+ 0x05,0xc8,0xec,0xce,0x5e,0xac,0xe5,0xc8, //.+%+@%%@+@%%@+%+ 0x08,0xc8,0x03,0xec,0x00,0x0c,0xe5,0xc8, //.+%+..@%...%@+%+ 0x0c,0xe3,0x08,0xef,0xa0,0x00,0x05,0xc8, //.%@..+@@%....+%+ 0x0e,0xc0,0x5e,0xc8,0xea,0x00,0x05,0xc8, //.@%.+@%+@%...+%+ 0x5c,0x88,0xec,0x00,0x8e,0xa0,0x08,0xc8, //+%++@%..+@%..+%+ 0x8c,0x8e,0xa0,0x00,0x0a,0xec,0xff,0xe0, //+%+@%....%@%@@@. /* 试 */ 0x3a,0x50,0x00,0x00,0x00,0xce,0xce,0x50, //.%+.......%@%@+. 0x3c,0xe5,0x00,0x00,0x00,0xce,0x0c,0xe3, //.%@+......%@.%@. 0x00,0xee,0x30,0x00,0x00,0xce,0x00,0x00, //..@@......%@.... 0x00,0x33,0xaf,0xff,0xff,0xff,0xff,0xfe, //....%@@@@@@@@@@@ 0x00,0x00,0x00,0x00,0x00,0xce,0x00,0x00, //..........%@.... 0xef,0xfa,0x00,0x00,0x00,0xae,0x30,0x00, //@@@%......%@.... 0x05,0xea,0x00,0x00,0x00,0xae,0x30,0x00, //.+@%......%@.... 0x05,0xea,0xaf,0xff,0xfe,0xae,0x30,0x00, //.+@%%@@@@@%@.... 0x05,0xea,0x00,0x5c,0x80,0x8c,0x50,0x00, //.+@%..+%+.+%+... 0x05,0xea,0x00,0x5c,0x80,0x5c,0x80,0x00, //.+@%..+%+.+%+... 0x05,0xea,0x88,0x5c,0x80,0x3e,0xa0,0x00, //.+@%+++%+..@%... 0x05,0xea,0xea,0x5c,0x80,0x0e,0xc0,0xae, //.+@%@%+%+..@%.%@ 0x05,0xef,0xc0,0x5e,0xff,0xea,0xe3,0xce, //.+@@%.+@@@@%@.%@ 0x08,0xec,0xcf,0xfe,0x00,0x03,0xea,0xec, //.+@%%@@@....@%@% 0x08,0xc0,0x00,0x00,0x00,0x00,0x5e,0xe8, //.+%.........+@@+ }; static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = { {.bitmap_index = 0, .adv_w = 16, .box_h = 15, .box_w = 16, .ofs_x = 0, .ofs_y = 2},/*(测)*/ {.bitmap_index = 120, .adv_w = 16, .box_h = 15, .box_w = 16, .ofs_x = 0, .ofs_y = 2},/*(试)*/ }; static const uint16_t unicode_list_1[] = { 0x6d4b, /*(测)*/ 0x8bd5, /*(试)*/ 0x0000, /*End indicator*/ }; static const lv_font_fmt_txt_cmap_t cmaps[] = { { .range_start = 27979, .range_length = 2, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY, .glyph_id_start = 0, .unicode_list = unicode_list_1, .glyph_id_ofs_list = NULL, .list_length = 2, } }; static lv_font_fmt_txt_dsc_t font_dsc = { .glyph_bitmap = glyph_bitmap, .glyph_dsc = glyph_dsc, .cmaps = cmaps, .cmap_num = 1, .bpp = 4, .kern_scale = 0, .kern_dsc = NULL, .kern_classes = 0, .last_letter = 0x8bd5, .last_glyph_id = 1, }; static int binsearch(const uint16_t *sortedSeq, int seqLength, uint16_t keyData) { int low = 0, mid, high = seqLength - 1; while (low <= high) { mid = (low + high) / 2;//奇数,无论奇偶,有个值就行 if (keyData < sortedSeq[mid]) { high = mid - 1;//是mid-1,因为mid已经比较过了 } else if (keyData > sortedSeq[mid]) { low = mid + 1; } else { return mid; } } return -1; } static const uint8_t * __user_font_get_bitmap(const lv_font_t * font, uint32_t unicode_letter) { lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; if(unicode_letter < fdsc->cmaps[0].range_start) return NULL; int i = binsearch(fdsc->cmaps[0].unicode_list, fdsc->cmaps[0].list_length, unicode_letter); if( i != -1 ) { const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[i]; return &fdsc->glyph_bitmap[gdsc->bitmap_index]; } return NULL; } static bool __user_font_get_glyph_dsc(const lv_font_t * font, lv_font_glyph_dsc_t * dsc_out, uint32_t unicode_letter, uint32_t unicode_letter_next) { lv_font_fmt_txt_dsc_t * fdsc = (lv_font_fmt_txt_dsc_t *) font->dsc; if(unicode_letter < fdsc->cmaps[0].range_start) return false; int i = binsearch(fdsc->cmaps[0].unicode_list, fdsc->cmaps[0].list_length, unicode_letter); if( i != -1 ) { const lv_font_fmt_txt_glyph_dsc_t * gdsc = &fdsc->glyph_dsc[i]; dsc_out->adv_w = gdsc->adv_w; dsc_out->box_h = gdsc->box_h; dsc_out->box_w = gdsc->box_w; dsc_out->ofs_x = gdsc->ofs_x; dsc_out->ofs_y = gdsc->ofs_y; dsc_out->bpp = fdsc->bpp; return true; } return false; } //微软雅黑,Regular,12 //字模高度:21 //内部字体 //使用排序和二分查表 lv_font_t myFont = { .dsc = &font_dsc, .get_glyph_bitmap = __user_font_get_bitmap, .get_glyph_dsc = __user_font_get_glyph_dsc, .line_height = 21, .base_line = 0, }; //end of file