diff options
author | Grigori Goronzy <greg@blackbox> | 2011-08-01 15:51:27 +0200 |
---|---|---|
committer | Grigori Goronzy <greg@blackbox> | 2011-08-01 15:51:27 +0200 |
commit | c979365946b2dc2499ede862b6f7da15f9bc0ed1 (patch) | |
tree | 688d0ecc6d17dbdd2df22719a2702ecba29a8b69 /libass/ass.c | |
parent | d7544850775344879dd3049046c5b7ce2d52d3b3 (diff) | |
download | libass-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.c | 8 |
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; } |