diff --git a/font/font.c b/font/font.c index 6209b60d2..5b573b852 100644 --- a/font/font.c +++ b/font/font.c @@ -1122,6 +1122,7 @@ blit_comb (const struct grub_unicode_glyph *glyph_id, struct grub_video_signed_rect bounds; unsigned i; signed above_rightx, above_righty; + signed below_rightx, below_righty; auto void NESTED_FUNC_ATTR do_blit (struct grub_font_glyph *src, signed dx, signed dy); void NESTED_FUNC_ATTR do_blit (struct grub_font_glyph *src, @@ -1176,6 +1177,9 @@ blit_comb (const struct grub_unicode_glyph *glyph_id, above_rightx = bounds.x + bounds.width; above_righty = bounds.y + bounds.height; + below_rightx = bounds.x + bounds.width; + below_righty = bounds.y; + for (i = 0; i < glyph_id->ncomb; i++) { grub_int16_t space = 0; @@ -1210,6 +1214,13 @@ blit_comb (const struct grub_unicode_glyph *glyph_id, minimal_device_width (above_rightx); break; + case GRUB_UNICODE_COMB_BELOW_RIGHT: + do_blit (combining_glyphs[i], below_rightx, + below_righty); + below_rightx += combining_glyphs[i]->width; + minimal_device_width (below_rightx); + break; + case GRUB_UNICODE_STACK_ABOVE: space = combining_glyphs[i]->offset_y - grub_font_get_xheight (combining_glyphs[i]->font); diff --git a/include/grub/unicode.h b/include/grub/unicode.h index 249297863..ac8911827 100644 --- a/include/grub/unicode.h +++ b/include/grub/unicode.h @@ -69,6 +69,7 @@ enum grub_comb_type GRUB_UNICODE_STACK_ATTACHED_ABOVE = 214, GRUB_UNICODE_COMB_ATTACHED_ABOVE_RIGHT = 216, GRUB_UNICODE_STACK_BELOW = 220, + GRUB_UNICODE_COMB_BELOW_RIGHT = 222, GRUB_UNICODE_STACK_ABOVE = 230, GRUB_UNICODE_COMB_ABOVE_RIGHT = 232, GRUB_UNICODE_COMB_YPOGEGRAMMENI = 240,