summaryrefslogtreecommitdiffstats
path: root/libass/ass_render.c
diff options
context:
space:
mode:
Diffstat (limited to 'libass/ass_render.c')
-rw-r--r--libass/ass_render.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c
index b595881..f67cba6 100644
--- a/libass/ass_render.c
+++ b/libass/ass_render.c
@@ -2737,9 +2737,6 @@ ass_render_event(ASS_Renderer *render_priv, ASS_Event *event,
get_outline_glyph(render_priv, code,
text_info->glyphs + text_info->length, drawing);
- text_info->glyphs[text_info->length].pos.x = pen.x;
- text_info->glyphs[text_info->length].pos.y = pen.y;
-
// Add additional space after italic to non-italic style changes
if (text_info->length &&
text_info->glyphs[text_info->length - 1].hash_key.italic &&
@@ -2748,9 +2745,15 @@ ass_render_event(ASS_Renderer *render_priv, ASS_Event *event,
GlyphInfo *og = &text_info->glyphs[back];
while (og->bbox.xMax - og->bbox.xMin == 0 && og->hash_key.italic)
og = &text_info->glyphs[--back];
- pen.x += FFMAX(0, og->bbox.xMax - og->advance.x);
+ if (og->bbox.xMax > og->advance.x) {
+ // The FreeType oblique slants by 6/16
+ pen.x += og->bbox.yMax * 0.375;
+ }
}
+ text_info->glyphs[text_info->length].pos.x = pen.x;
+ text_info->glyphs[text_info->length].pos.y = pen.y;
+
pen.x += text_info->glyphs[text_info->length].advance.x;
pen.x += double_to_d6(render_priv->state.hspacing *
render_priv->font_scale