Commit 64094f56 authored by Derk-Jan Hartman's avatar Derk-Jan Hartman

* hebrew line order fixes. patch by Barak Ori (barakori at gmail dot com) (closes #369)

parent 127a398a
...@@ -18,6 +18,7 @@ Arkadiusz Lipiec <A.Lipiec at elka.pw.edu.pl> - Polish translation ...@@ -18,6 +18,7 @@ Arkadiusz Lipiec <A.Lipiec at elka.pw.edu.pl> - Polish translation
Arkadiusz Miskiewicz <misiek at pld.ORG.PL> - autoconf and Makefile patches Arkadiusz Miskiewicz <misiek at pld.ORG.PL> - autoconf and Makefile patches
Arnaud Gomes-do-Vale <arnaud at carrosse.frmug.org> - autoconf patches Arnaud Gomes-do-Vale <arnaud at carrosse.frmug.org> - autoconf patches
Arwed v. Merkatz <v.merkatz at gmx dot net> - Gamma correction for adjust filter Arwed v. Merkatz <v.merkatz at gmx dot net> - Gamma correction for adjust filter
Barak Ori <barakori at gmail dot com> - Bidi fixes
Benjamin Mironer <bmironer at noos.fr> - Mac OS X fixes Benjamin Mironer <bmironer at noos.fr> - Mac OS X fixes
Benoit Steiner <benny at via.ecp.fr> - MPEG system input, network input Benoit Steiner <benny at via.ecp.fr> - MPEG system input, network input
Bill Eldridge <bill at rfa.org> - documentation Bill Eldridge <bill at rfa.org> - documentation
......
...@@ -526,10 +526,34 @@ static int RenderText( filter_t *p_filter, subpicture_region_t *p_region_out, ...@@ -526,10 +526,34 @@ static int RenderText( filter_t *p_filter, subpicture_region_t *p_region_out,
#if defined(HAVE_FRIBIDI) #if defined(HAVE_FRIBIDI)
{ {
uint32_t *p_fribidi_string; uint32_t *p_fribidi_string;
FriBidiCharType base_dir = FRIBIDI_TYPE_ON;
p_fribidi_string = malloc( (i_string_length + 1) * sizeof(uint32_t) ); p_fribidi_string = malloc( (i_string_length + 1) * sizeof(uint32_t) );
fribidi_log2vis( (FriBidiChar*)psz_unicode, i_string_length,
&base_dir, (FriBidiChar*)p_fribidi_string, 0, 0, 0 ); /* Do bidi conversion line-by-line */
int pos = 0;
while(pos < i_string_length)
{
while(pos < i_string_length) {
i_char = psz_unicode[pos];
if (i_char != '\r' && i_char != '\n')
break;
p_fribidi_string[pos] = i_char;
++pos;
}
int start_pos = pos;
while(pos < i_string_length) {
i_char = psz_unicode[pos];
if (i_char == '\r' || i_char == '\n')
break;
++pos;
}
if (pos > start_pos)
{
FriBidiCharType base_dir = FRIBIDI_TYPE_LTR;
fribidi_log2vis((FriBidiChar*)psz_unicode + start_pos, pos - start_pos,
&base_dir, (FriBidiChar*)p_fribidi_string + start_pos, 0, 0, 0);
}
}
free( psz_unicode_orig ); free( psz_unicode_orig );
psz_unicode = psz_unicode_orig = p_fribidi_string; psz_unicode = psz_unicode_orig = p_fribidi_string;
p_fribidi_string[ i_string_length ] = 0; p_fribidi_string[ i_string_length ] = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment