summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libass/ass.c4
-rw-r--r--libass/ass_render.c3
-rw-r--r--libass/ass_types.h1
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