您尚未登录。

#1 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » @assert 分享的在littlevgl 调用freetye显示文字, 而不用通过字模软件生成 » 2019-03-06 18:07:59

是这样没错,但因为Littlevgl在显示期间会多次获取width,这样其实一个字也load了好几次呢 smile

yywyai 说:
mathildawyx 说:
yywyai 说:

static const uint8_t*
lv_font_get_bitmap_freetype(const struct _lv_font_struct *font, uint32_t unicode_letter)
{   
  return bitmap;
}

static int16_t
lv_font_get_width_freetype(const struct _lv_font_struct *font, uint32_t unicode_letter)
{
  /*Check the range*/
  if(unicode_letter < font->unicode_first || unicode_letter > font->unicode_last) return -1;
   
  FT_Error err  = FT_Load_Char(face, unicode_letter, FT_LOAD_RENDER);
  if (err == 0) {
    lv_font_freetype.bpp = 8;
    lv_font_freetype.bitmap_dx = face->glyph->bitmap_left;
    lv_font_freetype.bitmap_dy = lv_font_freetype.monospace - face->glyph->bitmap_top;
    lv_font_freetype.bitmap_row = face->glyph->bitmap.rows;
    bitmap = face->glyph->bitmap.buffer;
   
    return face->glyph->bitmap.width;
  }

  bitmap = NULL;
  return -1;
}

代码很简单的,但是修改了部分的LV代码

请问这样的话渲染后的字体文件是用freetype得到bitmap后再通过结构体中的get_bitmap被使用吗?

littlevgl 5.2 5.3中是先调用get_width,然后调用get_bitmap,所以可以在get_width中获得bitmap

#2 Re: 计算机图形/GUI/RTOS/FileSystem/OpenGL/DirectX/SDL2 » @assert 分享的在littlevgl 调用freetye显示文字, 而不用通过字模软件生成 » 2019-01-31 11:58:40

yywyai 说:

static const uint8_t*
lv_font_get_bitmap_freetype(const struct _lv_font_struct *font, uint32_t unicode_letter)
{   
  return bitmap;
}

static int16_t
lv_font_get_width_freetype(const struct _lv_font_struct *font, uint32_t unicode_letter)
{
  /*Check the range*/
  if(unicode_letter < font->unicode_first || unicode_letter > font->unicode_last) return -1;
   
  FT_Error err  = FT_Load_Char(face, unicode_letter, FT_LOAD_RENDER);
  if (err == 0) {
    lv_font_freetype.bpp = 8;
    lv_font_freetype.bitmap_dx = face->glyph->bitmap_left;
    lv_font_freetype.bitmap_dy = lv_font_freetype.monospace - face->glyph->bitmap_top;
    lv_font_freetype.bitmap_row = face->glyph->bitmap.rows;
    bitmap = face->glyph->bitmap.buffer;
   
    return face->glyph->bitmap.width;
  }

  bitmap = NULL;
  return -1;
}

代码很简单的,但是修改了部分的LV代码

请问这样的话渲染后的字体文件是用freetype得到bitmap后再通过结构体中的get_bitmap被使用吗?

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn