Reviewed-by: Eric Dong <eric.d...@intel.com>

> -----Original Message-----
> From: Bi, Dandan
> Sent: Wednesday, June 08, 2016 3:39 PM
> To: edk2-devel@lists.01.org
> Cc: Gao, Liming; Dong, Eric
> Subject: [patch] MdeModulePkg/Database: Fix incorrect calculation of baseline 
> in FontPackage
> 
> When adding font package, there exits the case that only have the
> EFI_HII_GIBT_GLYPH_DEFAULT or EFI_HII_GIBT_GLYPHS_DEFAULT glyph block
> and use the default cell info in font package fixed header. In this
> case, we can't get the correct baseline now. This patch is to fix this
> issue by recalculating the baseline when the glyph block type is
> EFI_HII_GIBT_GLYPH_DEFAULT or EFI_HII_GIBT_GLYPHS_DEFAULT.
> 
> Cc: Liming Gao <liming....@intel.com>
> Cc: Eric Dong <eric.d...@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Dandan Bi <dandan...@intel.com>
> ---
>  MdeModulePkg/Universal/HiiDatabaseDxe/Font.c | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/Font.c 
> b/MdeModulePkg/Universal/HiiDatabaseDxe/Font.c
> index 5ecd6bd..7e5d3bd 100644
> --- a/MdeModulePkg/Universal/HiiDatabaseDxe/Font.c
> +++ b/MdeModulePkg/Universal/HiiDatabaseDxe/Font.c
> @@ -837,10 +837,18 @@ FindGlyphBlock (
>      case EFI_HII_GIBT_GLYPH_DEFAULT:
>        Status = GetCell (CharCurrent, &FontPackage->GlyphInfoList, 
> &DefaultCell);
>        if (EFI_ERROR (Status)) {
>          return Status;
>        }
> +      if (CharValue == (CHAR16) (-1)) {
> +        if (BaseLine < DefaultCell.Height + DefaultCell.OffsetY) {
> +          BaseLine = (UINT16) (DefaultCell.Height + DefaultCell.OffsetY);
> +        }
> +        if (MinOffsetY > DefaultCell.OffsetY) {
> +          MinOffsetY = DefaultCell.OffsetY;
> +        }
> +      }
>        BufferLen = BITMAP_LEN_1_BIT (DefaultCell.Width, DefaultCell.Height);
> 
>        if (CharCurrent == CharValue) {
>          return WriteOutputParam (
>                   BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK),
> @@ -859,10 +867,18 @@ FindGlyphBlock (
>        CopyMem (&Length16, BlockPtr + sizeof (EFI_HII_GLYPH_BLOCK), sizeof 
> (UINT16));
>        Status = GetCell (CharCurrent, &FontPackage->GlyphInfoList, 
> &DefaultCell);
>        if (EFI_ERROR (Status)) {
>          return Status;
>        }
> +      if (CharValue == (CHAR16) (-1)) {
> +        if (BaseLine < DefaultCell.Height + DefaultCell.OffsetY) {
> +          BaseLine = (UINT16) (DefaultCell.Height + DefaultCell.OffsetY);
> +        }
> +        if (MinOffsetY > DefaultCell.OffsetY) {
> +          MinOffsetY = DefaultCell.OffsetY;
> +        }
> +      }
>        BufferLen = BITMAP_LEN_1_BIT (DefaultCell.Width, DefaultCell.Height);
>        BlockPtr += sizeof (EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK) - sizeof 
> (UINT8);
>        for (Index = 0; Index < Length16; Index++) {
>          if (CharCurrent + Index == CharValue) {
>            return WriteOutputParam (
> --
> 1.9.5.msysgit.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to