Blob Blame History Raw
diff -up amanith/plugins/fonts/gfontsimpexp.cpp.BAD amanith/plugins/fonts/gfontsimpexp.cpp
--- amanith/plugins/fonts/gfontsimpexp.cpp.BAD	2007-11-15 10:02:49.000000000 -0500
+++ amanith/plugins/fonts/gfontsimpexp.cpp	2007-11-15 10:05:59.000000000 -0500
@@ -34,7 +34,6 @@
 
 #include <ft2build.h>
 #include FT_FREETYPE_H
-#include <freetype/internal/ftgloadr.h>
 
 namespace Amanith {
 
@@ -197,8 +196,9 @@ static void LoadGlyph(GFont2D& Font, con
 	GFontChar2D *c;
 	GGlyphMetrics tmpMetrics;
 	FT_Error error;
+	FT_Matrix subGlyphMatrix;
+	FT_Int subGlyphArg1, subGlyphArg2;
 	GInt32 i, j, k0, k1, numVert;
-	FT_SubGlyphRec subGlyph;
 	GPoint2 p;
 	GReal x, y;
 	GVect<GReal, 2> v;
@@ -223,19 +223,22 @@ static void LoadGlyph(GFont2D& Font, con
 		GDynArray<GSubChar2D> subChars(Face->glyph->num_subglyphs);
 
 		for (i = 0; i < (GInt32)Face->glyph->num_subglyphs; i++) {
-			subGlyph = Face->glyph->subglyphs[i];
-			subChars[i].GlyphIndex = subGlyph.index;
-			subChars[i].Flags = subGlyph.flags;
+			FT_Get_SubGlyph_Info(Face->glyph, i,
+						&subChars[i].GlyphIndex,
+						(FT_UInt*)&subChars[i].Flags,
+						&subGlyphArg1,
+						&subGlyphArg2,
+						&subGlyphMatrix);
 			// rotation and scale
-			subChars[i].Transformation[G_X][G_X] = Fixed1616ToReal(subGlyph.transform.xx);
-			subChars[i].Transformation[G_X][G_Y] = Fixed1616ToReal(subGlyph.transform.xy);
+			subChars[i].Transformation[G_X][G_X] = Fixed1616ToReal(subGlyphMatrix.xx);
+			subChars[i].Transformation[G_X][G_Y] = Fixed1616ToReal(subGlyphMatrix.xy);
 			// x position
-			subChars[i].Transformation[G_X][G_Z] = subGlyph.arg1 * Scale;
+			subChars[i].Transformation[G_X][G_Z] = subGlyphArg1 * Scale;
 			// rotation and scale
-			subChars[i].Transformation[G_Y][G_X] = Fixed1616ToReal(subGlyph.transform.yx);
-			subChars[i].Transformation[G_Y][G_Y] = Fixed1616ToReal(subGlyph.transform.yy);
+			subChars[i].Transformation[G_Y][G_X] = Fixed1616ToReal(subGlyphMatrix.yx);
+			subChars[i].Transformation[G_Y][G_Y] = Fixed1616ToReal(subGlyphMatrix.yy);
 			// y position
-			subChars[i].Transformation[G_Y][G_Z] = subGlyph.arg2 * Scale;
+			subChars[i].Transformation[G_Y][G_Z] = subGlyphArg2 * Scale;
 			// last row is an identity
 			subChars[i].Transformation[G_Z][G_X] = 0;
 			subChars[i].Transformation[G_Z][G_Y] = 0;