[English]

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.


使用 labelspan 对象以 lv_imgfont 绘制图像。这通常用于在文本中显示Unicode表情符号图标。

支持的图像格式:由启用的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. Return NULL 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).


启用 LV_USE_IMGFONTlv_conf.h 中。

要创建一个新的 imgfont,使用 lv_imgfont_create(height, path_cb, user_data)

  • height 字体大小。

  • path_cb 获取字符图像路径的函数。 如果不应该显示图像,而是显示字符本身,返回 NULL

  • user_data 用户数据指针。

要在标签中使用 imgfont,请引用它: lv_obj_set_style_text_font(label, imgfont, LV_PART_MAIN)

要销毁不再使用的 imgfont,请使用 lv_imgfont_destroy(imgfont)

Example

[English]

Use emojis in a text.

#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

API