X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Fglyph-metrics-helper.cpp;h=ef9098c11faa5d2d11a6cced7a38923acfc2b779;hb=e5d379064ba0e9a68d1d2680906952dbde263f34;hp=9c7c8ec38431a64938d0a580b60c507861dc5c36;hpb=9598e692217c5fb541d862a3957b3efd5fd5171d;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/text/glyph-metrics-helper.cpp b/dali-toolkit/internal/text/glyph-metrics-helper.cpp old mode 100644 new mode 100755 index 9c7c8ec..ef9098c --- a/dali-toolkit/internal/text/glyph-metrics-helper.cpp +++ b/dali-toolkit/internal/text/glyph-metrics-helper.cpp @@ -58,21 +58,41 @@ void GetGlyphsMetrics( GlyphIndex glyphIndex, const GlyphInfo& firstGlyph = *( glyphsBuffer + glyphIndex ); Text::FontMetrics fontMetrics; - metrics->GetFontMetrics( firstGlyph.fontId, fontMetrics ); + if( 0u != firstGlyph.fontId ) + { + metrics->GetFontMetrics( firstGlyph.fontId, fontMetrics ); + } + else if( 0u != firstGlyph.index ) + { + // It may be an embedded image. + fontMetrics.ascender = firstGlyph.height; + fontMetrics.descender = 0.f; + fontMetrics.height = fontMetrics.ascender; + } + + const bool isItalicFont = metrics->HasItalicStyle( firstGlyph.fontId ); glyphMetrics.fontId = firstGlyph.fontId; glyphMetrics.fontHeight = fontMetrics.height; - glyphMetrics.width = firstGlyph.width; + glyphMetrics.width = firstGlyph.width + ( ( firstGlyph.isItalicRequired && !isItalicFont ) ? static_cast( TextAbstraction::FontClient::DEFAULT_ITALIC_ANGLE * static_cast( firstGlyph.height ) ) : 0u ); glyphMetrics.advance = firstGlyph.advance; glyphMetrics.ascender = fontMetrics.ascender; glyphMetrics.xBearing = firstGlyph.xBearing; - for( unsigned int i = 1u; i < numberOfGlyphs; ++i ) + if( 1u < numberOfGlyphs ) { - const GlyphInfo& glyphInfo = *( glyphsBuffer + glyphIndex + i ); + const float widthInit = firstGlyph.xBearing; + + for( unsigned int i = 1u; i < numberOfGlyphs; ++i ) + { + const GlyphInfo& glyphInfo = *( glyphsBuffer + glyphIndex + i ); + + glyphMetrics.width = glyphMetrics.advance + glyphInfo.xBearing + glyphInfo.width + ( ( firstGlyph.isItalicRequired && !isItalicFont ) ? static_cast( TextAbstraction::FontClient::DEFAULT_ITALIC_ANGLE * static_cast( firstGlyph.height ) ) : 0u ); + glyphMetrics.advance += glyphInfo.advance; + + } - glyphMetrics.advance += glyphInfo.advance; - glyphMetrics.width += glyphInfo.width; + glyphMetrics.width -= widthInit; } }