From Romain Ouabdelkader, "This is a fix for osgText to calculate kerning and to load glyph3D with the text's font resolution.

Font::getKerning(...), Font::getGlyph3D(...) doesn't ask for a font resolution so it uses the last font resolution requested by Font:: getGlyph(...).
This can leads to different results depending of the precedent call to Font::getGlyph(...).
See http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/2016-January/271952.html for more infos.

This fix adds a font resolution parameter to Font::getKerning(...), Font::getGlyph3D(...) and to the font implementations.
This was made under the base revision r15182."
This commit is contained in:
Robert Osfield
2016-02-15 13:30:39 +00:00
parent 937ef73521
commit 67202b2662
13 changed files with 57 additions and 42 deletions

View File

@@ -104,7 +104,7 @@ void Layout::layout(TextNode& text) const
}
else
{
osgText::Glyph3D* glyph = font->getGlyph3D(charcode);
osgText::Glyph3D* glyph = font->getGlyph3D(resolution, charcode);
OSG_NOTICE<<"pos = "<<pos<<", charcode="<<charcode<<", glyph="<<glyph<< std::endl;
if (glyph)
{
@@ -116,7 +116,7 @@ void Layout::layout(TextNode& text) const
if (previousCharcode!=0 && charcode!=0)
{
osg::Vec2 offset = font->getKerning(previousCharcode, charcode, kerningType);
osg::Vec2 offset = font->getKerning(resolution, previousCharcode, charcode, kerningType);
OSG_NOTICE<<" offset = "<<offset<< std::endl;
pos.x() += offset.x();
pos.y() += offset.y();