diff options
-rw-r--r-- | libass/ass.c | 4 | ||||
-rw-r--r-- | libass/ass_render.c | 3 | ||||
-rw-r--r-- | libass/ass_types.h | 1 |
3 files changed, 7 insertions, 1 deletions
diff --git a/libass/ass.c b/libass/ass.c index 057a6e3..f7f5bcc 100644 --- a/libass/ass.c +++ b/libass/ass.c @@ -389,6 +389,8 @@ void ass_process_force_style(ASS_Track *track) track->WrapStyle = atoi(token); else if (!strcasecmp(*fs, "ScaledBorderAndShadow")) track->ScaledBorderAndShadow = parse_bool(token); + else if (!strcasecmp(*fs, "Kerning")) + track->Kerning = parse_bool(token); dt = strrchr(*fs, '.'); if (dt) { @@ -571,6 +573,8 @@ static int process_info_line(ASS_Track *track, char *str) track->WrapStyle = atoi(str + 10); } else if (!strncmp(str, "ScaledBorderAndShadow:", 22)) { track->ScaledBorderAndShadow = parse_bool(str + 22); + } else if (!strncmp(str, "Kerning:", 8)) { + track->Kerning = parse_bool(str + 8); } return 0; } diff --git a/libass/ass_render.c b/libass/ass_render.c index edb0c84..e713ab0 100644 --- a/libass/ass_render.c +++ b/libass/ass_render.c @@ -1816,6 +1816,7 @@ ass_render_event(ASS_Renderer *render_priv, ASS_Event *event, int MarginL, MarginR, MarginV; int last_break; int alignment, halign, valign; + int kern = render_priv->track->Kerning; double device_x = 0; double device_y = 0; TextInfo *text_info = &render_priv->text_info; @@ -1879,7 +1880,7 @@ ass_render_event(ASS_Renderer *render_priv, ASS_Event *event, } // Add kerning to pen - if (previous && code && !drawing->hash) { + if (kern && previous && code && !drawing->hash) { FT_Vector delta; delta = ass_font_get_kerning(render_priv->state.font, previous, diff --git a/libass/ass_types.h b/libass/ass_types.h index d6a0111..63bc36c 100644 --- a/libass/ass_types.h +++ b/libass/ass_types.h @@ -113,6 +113,7 @@ typedef struct ass_track { double Timer; int WrapStyle; int ScaledBorderAndShadow; + int Kerning; int default_style; // index of default style char *name; // file name in case of external subs, 0 for streams |