I'm opening this to get feedback on the current state of the refactor and track associated issues. This branch is based on master.
It introduces one breaking change - the Font class has been replaced by FontRef, constructed by Font::create methods and accessed by ->. All other public interfaces have been kept the same.
The TextEngine class holds the backend specific code for rendering TextureFont and TextBox classes. TextLayout does not use TextEngine for now I'm not sure the best way to implements the platform specific parts of Run / Line while keeping the internals hidden as they are now.
TextureFont uses a new class gl::TextureFontAtlas to tightly pack glyphs onto multiple textures, and enable multiple TextureFonts to share a GL texture. This is an optional interface, the existing create methods still work as expected.
A FreeType TextEngine implementation is provided. It adds a third-party library "UTF8-CPP" for handling UTF-8 conversions (necessary on Android, which has minimal wstring support). This supports rendering via TextureFont methods only, and will return empty Surfaces for other render calls. It doesn't handle Shape2D conversion, returning an empty shape.
I've modified and tested samples to use the new Font class, on Windows, OS X and Android so far.
Added call method to CallbackMgr with zero args.
Merge remote-tracking branch 'upstream/master'
Merging TextEngine code.
Added Freetype libraries for Windows and OS X
Compile fixes (Windows)
Fix Text samples (Windows).
Fixing samples to use TextEngine/FontRef.
Merge remote-tracking branch 'origin/textengine-contrib' into texteng…
OS X project file update and compile fixes.
Throw invalid name exception if constructing a FreeType font from
FreeType TextBox alignment support.
Thanks for your work on this - I will be sitting down with it immediately upon our upcoming 0.8.4 release...
Deleted internal freetype headers.
Cache FreeType TextBox measurements.
Prevent measuring glyph past the end of TextBox's text.
Runtime check for GDI text handling in TextureFont measureString().
Perform measureString GDI check on Windows only.
Use font bounding box for line last character width
Update textbox size at end of calculation
I'm going to leave this here for the time being; text is likely to be the focus of 0.8.7 now, and I'm certain it will be very valuable for that rewrite.