Arkadiusz Miskiewicz <misiek at pld.ORG.PL> - autoconf and Makefile 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
+Barak Ori <barakori at gmail dot com> - Bidi fixes
Benjamin Mironer <bmironer at noos.fr> - Mac OS X fixes
Benoit Steiner <benny at via.ecp.fr> - MPEG system input, network input
Bill Eldridge <bill at rfa.org> - documentation
#if defined(HAVE_FRIBIDI)
{
uint32_t *p_fribidi_string;
- FriBidiCharType base_dir = FRIBIDI_TYPE_ON;
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 );
psz_unicode = psz_unicode_orig = p_fribidi_string;
p_fribidi_string[ i_string_length ] = 0;