const GlyphInfo& glyph = *( glyphsBuffer + i );
Vector2& position = *( glyphPositionsBuffer + i );
- position.x = std::roundf( penX + glyph.xBearing );
+ position.x = penX + glyph.xBearing;
position.y = -glyph.yBearing;
penX += ( glyph.advance + interGlyphExtraAdvance );
const GlyphInfo& glyph = *( glyphsBuffer + glyphIndex );
Vector2& position = *( glyphPositionsBuffer + glyphIndex - layoutParameters.startGlyphIndex );
- position.x = std::round( penX + glyph.xBearing );
+ position.x = penX + glyph.xBearing;
position.y = -glyph.yBearing;
penX += ( glyph.advance + layoutParameters.interGlyphExtraAdvance );
return false;
}
- // Set the line position. Discard if ellipsis is enabled and the position exceeds the boundaries
+ // Set the line position. DISCARD if ellipsis is enabled and the position exceeds the boundaries
// of the box.
penY += layout.ascender;
// Updates the vertical pen's position.
penY += -layout.descender + layout.lineSpacing + mDefaultLineSpacing;
+ // If there is a defaultLineSize, updates the pen's position.
+ if( mDefaultLineSize > 0.f )
+ {
+ float lineSpacing = mDefaultLineSize - ( layout.ascender + -layout.descender );
+ lineSpacing = lineSpacing < 0.f ? 0.f : lineSpacing;
+ penY += lineSpacing;
+ }
// Increase the glyph index.
index = nextIndex;