]> granicus.if.org Git - libass/commitdiff
Workaround for broken fonts with bad ascender/descender.
authoreugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>
Tue, 5 Sep 2006 20:06:20 +0000 (20:06 +0000)
committereugeni <eugeni@b3059339-0415-0410-9bf9-f77b7e298cf2>
Tue, 5 Sep 2006 20:06:20 +0000 (20:06 +0000)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@19699 b3059339-0415-0410-9bf9-f77b7e298cf2

libass/ass_render.c

index 341001466284cc0e5936968189c7bda5d93789bc..e2c8febb82b3feb138ca5c2fe746efff25e2e274 100644 (file)
@@ -1467,17 +1467,21 @@ static void process_karaoke_effects(void)
 static int get_face_ascender(FT_Face face)
 {
        int v = face->size->metrics.ascender;
-       if (!v)
-               v = FT_MulFix(face->bbox.yMax, face->size->metrics.y_scale);
-       return v;
+       int v2 = FT_MulFix(face->bbox.yMax, face->size->metrics.y_scale);
+       if (v > v2 * 0.9)
+               return v;
+       else
+               return v2;
 }
 
 static int get_face_descender(FT_Face face)
 {
-       int v = face->size->metrics.descender;
-       if (!v)
-               v = FT_MulFix(face->bbox.yMin, face->size->metrics.y_scale);
-       return -v;
+       int v = - face->size->metrics.descender;
+       int v2 = - FT_MulFix(face->bbox.yMin, face->size->metrics.y_scale);
+       if (v > v2 * 0.9)
+               return v;
+       else
+               return v2;
 }
 
 /**