Re: Simple BIDI tests for Debian Installer
Quoting Baruch Even (baruch@ev-en.org):
> Does the D-I uses gtk+2.0? If so it should have BIDI support built in.
> Is it completely text based? Then you need to add manual support, is it
> only for displaying text, or also for data input?
No GTK interface and my opinion is that we won't have one ready even
for i386 at release time.
So we're talking about text display, which uses newt.
This resumes to "newt should support BIDI". By reading some mailing
lists at arabeyes where Anmar Oueja came with this topic in January, I
understand that first BIDI support is needed in slang and/or ncurses,
then newt BIDI support.
I also understand that BIDI and shaping support are needed for Arabic,
both being scheduled in a due release of fribidi around....today.
>
> A request for help about D-I with bidi support is best referred to
> linux-il mailing list, there are some very knowledgeable peoples there
> regarding bidi behaviour in UIs.
Lior and Shlomi, this is up to you....
I'm not a coder so I can't even understand what exactly needs to be
done. I can only guess "au pif" as we say in french....:-)
I looked at fribidi code very quickly and found some reference to a
kind of "magic" function called fribidi_log2vis which seems to be the
core function for BIDI output support. It seems to me that any string
which needs to be output should be piped first to this function with
the appropriate argument and voila....
README excerpt:
The reordering of characters is done through the function:
void
fribidi_log2vis(/* input */
FriBidiChar *str,
int len,
FriBidiCharType *pbase_dir,
/* output */
FriBidiChar *visual_str,
gint *position_L_to_V_list,
gint *position_V_to_L_list,
gint8 *embedding_level_list
)
where
str is the Unicode input string
len is the length of the unicode string
pbase_dir is the input and output base direction. If
base == FRIBIDI_TYPE_ON then fribidi_log2vis
calculates the base direction on its own
according to the BiDi algorithm.
visual_str The reordered output unicode string.
position_L_to_V_list Maps the positions in the logical string to
positions in the visual string.
position_V_to_L_list Maps the positions in the visual string to
the positions in the logical string.
embedding_level_list Returns the classification of each character. Even
levels indicate LTR characters, and odd levels
indicate RTL characters. The main use of this
list is in interactive applications when the
embedding e.g. level determines cursor display.
In any of the output pointers == NULL, then that information is not
calculated.
IN the fribidi package, the fribidi.c source code seems to be a good
implementation example....
Reply to: