diff options
Diffstat (limited to 'libass/ass_render.c')
-rw-r--r-- | libass/ass_render.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/libass/ass_render.c b/libass/ass_render.c index cf22bec..b0accb7 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -662,7 +662,8 @@ static void blend_vector_clip(ASS_Renderer *render_priv, ASS_Image *head) ol_key.u.drawing.text = render_priv->state.clip_drawing_text; double m[3][3] = {{0}}; - double w = render_priv->font_scale / (1 << (render_priv->state.clip_drawing_scale - 1)); + int32_t scale_base = lshiftwrapi(1, render_priv->state.clip_drawing_scale - 1); + double w = scale_base > 0 ? (render_priv->font_scale / scale_base) : 0; m[0][0] = render_priv->font_scale_x * w; m[1][1] = w; m[2][2] = 1; @@ -1105,7 +1106,8 @@ get_outline_glyph(ASS_Renderer *priv, GlyphInfo *info) return; } - double w = priv->font_scale / (1 << (info->drawing_scale - 1)); + int32_t scale_base = lshiftwrapi(1, info->drawing_scale - 1); + double w = scale_base > 0 ? (priv->font_scale / scale_base) : 0; scale.x = info->scale_x * w; scale.y = info->scale_y * w; desc = 64 * info->drawing_pbo; |