fix(span): align the baselines (#3164)
This commit is contained in:
committed by
GitHub
parent
a0153182b8
commit
28bd55c5d3
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user