From: Tomas Frydrych (tomasfrydrych_at_yahoo.co.uk)
Date: Wed Feb 18 2004 - 13:07:11 EST
This is the beginning of major refactoring of the bidi processing and
glyph shaping, which has two objectives:
1. To provide transparent abstract interface between our layout
classes and a shaping engine; this will allow us to link in an
external shaping library, be it Pango, Uniscribe or SIL
Graphite, or to load it as a plugin.
2. To make the bidi processing conform fully to the Unicode bidi
algorithm. This will require to move some code from fp_Line into
fl_BlockLayout.
The present commit goes someway toward #1. The GR_Graphics class has
now a number of new virtual methods, of those the most significant
are itemize(), shape() and renderChars(); there are some new classes
to allow passing of data between these methods without having to
worry about implementation details.
I have also added a new class GR_GraphicsFactory() which will allow
us to have parallel graphics implementations, both built-in and as
plugins. For example, on win32 we could have graphics that uses
Uniscribe, a default one that offers no complex script support and
another one that uses SIL Graphite; the user will be able to choose
which to use (or a plugin will replace the default implentation with
its own as it loads). The factory will be accessed via XAP_App, but
some work is still required before it will be usable.
The UT_contextGlyph class underwent change of identity; it is now
called GR_ContextGlyph and lives in the corresponding place. I have
modified the makefiles, but not the MSVC project files.
This is work in progress; there is still quite a bit of code in
fp_TextRun that makes assumptions about implementation of the shaping
engine and which needs to go. Mostly it is a question of moving it
into some other suitable place.
There is very little of new code, so things should work just as they
used to, if not, I will endeavour to fix things promptly.
Tomas
This archive was generated by hypermail 2.1.4 : Wed Feb 18 2004 - 13:06:53 EST