commit (HEAD): bidi and shaping

From: Tomas Frydrych (tomasfrydrych_at_yahoo.co.uk)
Date: Wed Feb 18 2004 - 13:07:11 EST

  • Next message: jskov_at_redhat.com: "hello"

    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