This document is about Yudit's shaping support, including Arabic.
The good news is that shaping support was possible without
beaching Yudit's main philosophy: binary compatibility. For
Arabic this means that if you read a document with no presentation
forms, the same form will be saved when the document is written back
There is an extra field added to glyph info, preceding the
pre-composed/presentation field, and that can take four values:
isolated, initial, medial, final.
These values are usually in '[' .. ']' indicating that this is NOT
the value that will be saved on disk. The presentation glyph value
will change as shaping takes place. If this value is not in brackets
it means that the glyph was already saved with the presentation values,
and yudit will not calculate new presentation values, it is constant.
Still it shows the values that should actually be used instead of
the presentation character, to allow auto-shaping.
Lets take the example from Roman Czyborra's arabjoin program,
character-by-character separated with ' ' spaces.
! لم ا ع ل ا لا ًب ه أ
If you take out the spaces we get:
I can even reverse the game (but it does not make any sense):
If you wonder how I did it - I changed direction to '<'. Then I
Selected the text and pressed direction button again. Or with
In Roman's original, using presentation form:
There is one more glyph, because Yudit joined U+0644 and U+0645 and
made a presentation form of U+FC42 - for better or worse.
Basically if there is a presentation form Yudit combines glyphs
and puts them into one single box. When you enter multiple glyphs
by hand one-by-one they will be put into a separate boxes on the
screen. But when you re-read the file, or cut&paste they may get
joined and share the presentation form's box.
This behavior is very similar in Yudit compositions. If you want to
have combining when you enter the text from keyboard you need a
keyboard map, that returns multiple characters.
I created a "shape" and a "deshape" converter for yudit. "shape" does
or at least is supposed to do what arabjoin did, make presentation forms.
These glyphs are the frozen version of shaped characters. You can defreeze
this with "deshape" converter - it converts presentation forms to their
You may want to:
- add new Keyboard maps
- stoolkit/SB_BiDi.cpp to help interface yudit with Unicode bidi.
(Further readings doc/Yudit-bidi.txt.)
- Help me to test Yudit. You won't believe it, but I don't understand
Arabic at all. I just did the programming and I copied a few
Arabic glyphs here....
- Sample text and docs are needed. I don't have much time for documentation.
- Arabic menu translations.... Please read REAME.TXT it tells you how
to add it.
Gaspar Sinai <email@example.com>