From 7efb218fd1272e44be3bc1e891ac153da59e9871 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D1=80=D0=B0=D0=BD=D0=B8=D0=BC=D0=B8=D1=80=20=D0=9A?= =?UTF-8?q?=D0=B0=D1=80=D0=B0=D1=9F=D0=B8=D1=9B?= Date: Fri, 3 Jul 2020 00:07:46 -0700 Subject: [PATCH] Fixed issue #2192. --- examples/common/font/font_manager.cpp | 66 ++++++++++++--------------- 1 file changed, 30 insertions(+), 36 deletions(-) diff --git a/examples/common/font/font_manager.cpp b/examples/common/font/font_manager.cpp index 6a1223bc3..7140b7379 100644 --- a/examples/common/font/font_manager.cpp +++ b/examples/common/font/font_manager.cpp @@ -107,26 +107,23 @@ bool TrueTypeFont::bakeGlyphAlpha(CodePoint _codePoint, GlyphInfo& _glyphInfo, u { BX_ASSERT(m_font != NULL, "TrueTypeFont not initialized"); - int xx; - int yy; - int ww; - int hh; - int advance; - int ascent; - int descent; - int lineGap; - int lsb; - - float scale = m_scale; - + int32_t ascent, descent, lineGap; stbtt_GetFontVMetrics(&m_font, &ascent, &descent, &lineGap); - stbtt_GetCodepointHMetrics(&m_font, _codePoint, &advance, &lsb); - stbtt_GetCodepointBitmap(&m_font, scale, scale, _codePoint, &ww, &hh, &xx, &yy); - _glyphInfo.offset_x = (float)xx; - _glyphInfo.offset_y = (float)yy; - _glyphInfo.width = (float)ww; - _glyphInfo.height = (float)hh; + int32_t advance, lsb; + stbtt_GetCodepointHMetrics(&m_font, _codePoint, &advance, &lsb); + + const float scale = m_scale; + int32_t x0, y0, x1, y1; + stbtt_GetCodepointBitmapBox(&m_font, _codePoint, scale, scale, &x0, &y0, &x1, &y1); + + const int32_t ww = x1-x0; + const int32_t hh = y1-y0; + + _glyphInfo.offset_x = (float)x0; + _glyphInfo.offset_y = (float)y0; + _glyphInfo.width = (float)ww; + _glyphInfo.height = (float)hh; _glyphInfo.advance_x = bx::round(((float)advance) * scale); _glyphInfo.advance_y = bx::round(((float)(ascent + descent + lineGap)) * scale); @@ -142,26 +139,23 @@ bool TrueTypeFont::bakeGlyphDistance(CodePoint _codePoint, GlyphInfo& _glyphInfo { BX_ASSERT(m_font != NULL, "TrueTypeFont not initialized"); - int32_t xx; - int32_t yy; - int32_t ww; - int32_t hh; - int advance; - int ascent; - int descent; - int lineGap; - int lsb; - - float scale = m_scale; - + int32_t ascent, descent, lineGap; stbtt_GetFontVMetrics(&m_font, &ascent, &descent, &lineGap); - stbtt_GetCodepointHMetrics(&m_font, _codePoint, &advance, &lsb); - stbtt_GetCodepointBitmap(&m_font, scale, scale, _codePoint, &ww, &hh, &xx, &yy); - _glyphInfo.offset_x = (float)xx; - _glyphInfo.offset_y = (float)yy; - _glyphInfo.width = (float)ww; - _glyphInfo.height = (float)hh; + int32_t advance, lsb; + stbtt_GetCodepointHMetrics(&m_font, _codePoint, &advance, &lsb); + + const float scale = m_scale; + int32_t x0, y0, x1, y1; + stbtt_GetCodepointBitmapBox(&m_font, _codePoint, scale, scale, &x0, &y0, &x1, &y1); + + const int32_t ww = x1-x0; + const int32_t hh = y1-y0; + + _glyphInfo.offset_x = (float)x0; + _glyphInfo.offset_y = (float)y0; + _glyphInfo.width = (float)ww; + _glyphInfo.height = (float)hh; _glyphInfo.advance_x = bx::round(((float)advance) * scale); _glyphInfo.advance_y = bx::round(((float)(ascent + descent + lineGap)) * scale);