summaryrefslogtreecommitdiffstats
path: root/libass
diff options
context:
space:
mode:
Diffstat (limited to 'libass')
-rw-r--r--libass/ass_render.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c
index 3410014662..e2c8febb82 100644
--- a/libass/ass_render.c
+++ b/libass/ass_render.c
@@ -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;
}
/**