Image font
Draw image in label or span obj with lv_imgfont
. This is often used to
display Unicode emoji icons in text.
Supported image formats: determined by enabled LVGL image decoders.
Usage
Enable LV_USE_IMGFONT
in lv_conf.h
.
To create a new imgfont use lv_imgfont_create(height, path_cb, user_data).
height
Font size.path_cb
A function to get the image path of a character. ReturnNULL
if no image should be shown, but the character itself.user_data
Pointer to user data.
To use the imgfont in a label, reference it: lv_obj_set_style_text_font(label, imgfont, LV_PART_MAIN)
To destroy the imgfont that is no longer used, use lv_imgfont_destroy(imgfont).
Example
Use emojis in a text.
C code
View on GitHub#include "../../lv_examples.h"
#include <stdio.h>
#if LV_BUILD_EXAMPLES
#if LV_USE_IMGFONT
static const void * get_imgfont_path(const lv_font_t * font, uint32_t unicode, uint32_t unicode_next,
int32_t * offset_y, void * user_data)
{
LV_UNUSED(font);
LV_UNUSED(unicode_next);
LV_UNUSED(offset_y);
LV_UNUSED(user_data);
LV_IMAGE_DECLARE(emoji_F617);
if(unicode < 0xF000) return NULL;
if(unicode == 0xF617) {
return &emoji_F617;
}
else if(unicode == 0xF600) {
#if LV_USE_FFMPEG
return "lvgl/examples/assets/emoji/F600.png";
#else
return "A:lvgl/examples/assets/emoji/F600.png";
#endif
}
return NULL;
}
/**
* draw img in label or span obj
*/
void lv_example_imgfont_1(void)
{
lv_font_t * imgfont = lv_imgfont_create(80, get_imgfont_path, NULL);
if(imgfont == NULL) {
LV_LOG_ERROR("imgfont init error");
return;
}
imgfont->fallback = LV_FONT_DEFAULT;
lv_obj_t * label1 = lv_label_create(lv_screen_active());
lv_label_set_text(label1, "12\uF600\uF617AB");
lv_obj_set_style_text_font(label1, imgfont, LV_PART_MAIN);
lv_obj_center(label1);
}
#else
void lv_example_imgfont_1(void)
{
lv_obj_t * label = lv_label_create(lv_screen_active());
lv_label_set_text(label, "imgfont is not installed");
lv_obj_center(label);
}
#endif
#endif