fix(span): align the baselines (#3164)

This commit is contained in:
Gabor Kiss-Vamosi
2022-03-16 10:43:39 +01:00
committed by GitHub
parent a0153182b8
commit 28bd55c5d3

View File

@@ -780,6 +780,7 @@ static void lv_draw_span(lv_obj_t * obj, lv_draw_ctx_t * draw_ctx)
bool is_end_line = false; bool is_end_line = false;
bool ellipsis_valid = false; bool ellipsis_valid = false;
lv_coord_t max_line_h = 0; /* the max height of span-font when a line have a lot of span */ lv_coord_t max_line_h = 0; /* the max height of span-font when a line have a lot of span */
lv_coord_t max_baseline = 0; /*baseline of the highest span*/
lv_snippet_clear(); lv_snippet_clear();
/* the loop control to find a line and push the relevant span info into stack */ /* the loop control to find a line and push the relevant span info into stack */
@@ -860,6 +861,7 @@ static void lv_draw_span(lv_obj_t * obj, lv_draw_ctx_t * draw_ctx)
cur_txt_ofs += next_ofs; cur_txt_ofs += next_ofs;
if(max_line_h < snippet.line_h) { if(max_line_h < snippet.line_h) {
max_line_h = snippet.line_h; max_line_h = snippet.line_h;
max_baseline = snippet.font->base_line;
} }
lv_snippet_push(&snippet); lv_snippet_push(&snippet);
@@ -908,7 +910,7 @@ static void lv_draw_span(lv_obj_t * obj, lv_draw_ctx_t * draw_ctx)
lv_point_t pos; lv_point_t pos;
pos.x = txt_pos.x; pos.x = txt_pos.x;
pos.y = txt_pos.y + max_line_h - pinfo->line_h; pos.y = txt_pos.y + max_line_h - pinfo->line_h - (max_baseline - pinfo->font->base_line);
label_draw_dsc.color = lv_span_get_style_text_color(obj, pinfo->span); label_draw_dsc.color = lv_span_get_style_text_color(obj, pinfo->span);
label_draw_dsc.opa = lv_span_get_style_text_opa(obj, pinfo->span); label_draw_dsc.opa = lv_span_get_style_text_opa(obj, pinfo->span);
label_draw_dsc.font = lv_span_get_style_text_font(obj, pinfo->span); label_draw_dsc.font = lv_span_get_style_text_font(obj, pinfo->span);