[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: