Re: Putting the "World" back in WWW...

Karl Auerbach (
Sun, 02 Oct 94 23:39:52 -0600

From: "Richard L. Goerwitz" <>
Date: Sun, 02 Oct 94 12:32:15 -0600

>Issues of directionality is not critical to this given that we've been
>able to do Hebrew/Arabic using a single internatioanlized Motif.

Could you describe this implementation in more detail?

Basically, the Motif Text widget has been modified to use a set of
services we call "Layout Services". These services provide transformations
of text based on a set of layout values, e.g. orientation, typeOfText,
symmetric swapping, numeric, shapingcharset and others. The
transformation actually provide the ability to convert between implicit
data into visual data. There is some support for some explicit controls
as well. All of the layout services are used internal to Motif such
that internationalized applications are not aware of these transformation.

The Text widget does provide resources that allow the user to control
some of the layout values, e.g. orientation, swapping and numeric.

Every locale includes it's own layout object that defines its behavior.
Thus the layout services work with every locale but only perform
re-ordering transformations when executing under the Hebrew/Arabic locales.
We've not done every locale as of yet.

We have proposed the Layout Services to the XOpen and Uniform Joing
Internationalization Working Group and they have been discussing the
proposal. It has been changed somewhat from the AIX version but
is basically the same. I understand it will be going into company review
this month.

I've never heard
of a client that correctly handled bidirectional wordwrap.

To be honest, the word support in Motif if non-existent. Basically, all
it provides is line wrap based on spaces. Yet, in the Hebrew/Arabic
locales it does do this based on the visual space instead of the
implicit state.

Also as long as I'm giving more details... the layout services has
only been done using the national code sets of Hebrew/Arabic - ISO88859-6,8
and PC code sets IBM-856/IBM-1046.