summaryrefslogtreecommitdiffstats
path: root/libass/ass.c
diff options
context:
space:
mode:
authorGrigori Goronzy <greg@blackbox>2011-08-01 15:51:27 +0200
committerGrigori Goronzy <greg@blackbox>2011-08-01 15:51:27 +0200
commitc979365946b2dc2499ede862b6f7da15f9bc0ed1 (patch)
tree688d0ecc6d17dbdd2df22719a2702ecba29a8b69 /libass/ass.c
parentd7544850775344879dd3049046c5b7ce2d52d3b3 (diff)
downloadlibass-c979365946b2dc2499ede862b6f7da15f9bc0ed1.tar.bz2
libass-c979365946b2dc2499ede862b6f7da15f9bc0ed1.tar.xz
Support language hint in the Script Info section
Parse a hint in the form "Language: xx" with xx being an ISO 639-1 language code, and pass it to HarfBuzz. This can be useful to render scripts with language-specific character variants.
Diffstat (limited to 'libass/ass.c')
-rw-r--r--libass/ass.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libass/ass.c b/libass/ass.c
index e262cc3..712c16c 100644
--- a/libass/ass.c
+++ b/libass/ass.c
@@ -28,6 +28,7 @@
#include <sys/stat.h>
#include <unistd.h>
#include <inttypes.h>
+#include <ctype.h>
#ifdef CONFIG_ICONV
#include <iconv.h>
@@ -69,6 +70,7 @@ void ass_free_track(ASS_Track *track)
}
free(track->style_format);
free(track->event_format);
+ free(track->Language);
if (track->styles) {
for (i = 0; i < track->n_styles; ++i)
ass_free_style(track, i);
@@ -595,6 +597,12 @@ static int process_info_line(ASS_Track *track, char *str)
track->ScaledBorderAndShadow = parse_bool(str + 22);
} else if (!strncmp(str, "Kerning:", 8)) {
track->Kerning = parse_bool(str + 8);
+ } else if (!strncmp(str, "Language:", 9)) {
+ char *p = str + 9;
+ while (*p && isspace(*p)) p++;
+ track->Language = malloc(3);
+ strncpy(track->Language, p, 2);
+ track->Language[2] = 0;
}
return 0;
}