freetype-devel
[Top][All Lists]
Advanced

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

GPOS support available!


From: Werner LEMBERG
Subject: GPOS support available!
Date: Wed, 05 Jan 2000 01:07:36 GMT

Dear friends!


I can finally announce that full GPOS support is available! GSUB,
GPOS, and GDEF support now complies to OpenType 1.2.

To achieve this, small changes to the GSUB interface were necessary.
Please see the (updated) file apirefx.txt for details.  Below you can
find the commit log entries.  It should be available in the next
development snapshot also.

ftstrtto and ftdump have been extended to support GPOS.

Enjoy!


    Werner


=============================================================================


ftxgdef.c: Check_Property() has been moved to this file from the ftxgsub
           module.

ftxopenf.h: Declaration of Check_Property() and CHECK_Property() moved to
            this file.

ftxopen.h: New error code TTO_Err_No_MM_Interpreter if no PS interpreter for
           Multiple Master fonts is available.

ftxgsub.h: The TTO_GSUB_String structure has been extended to support
           glyph component backtracking for ligatures (as needed by some
           GPOS lookup table formats): `components[]' (an array to hold the
           actual component index of a ligature a certain mark glyph belongs
           to), `ligIDs[]' (identifying all glyph components and associated
           mark glyphs of a ligature), and `max_ligID' (as a source of
           glyph ID values).  Consequently, the interface to
           TTO_GSUB_Add_String() has changed.

ftxgsub.c: Check_Property() and CHECK_Property() have been moved to other
           modules.

           TTO_GSUB_Add_String() now also handles (re)allocation of the new
           arrays `components[]' and `ligIDs[]', as described in apirefx.txt.

           A ligature consisting only of mark glyphs will now be treated as
           a mark glyph if no GDEF table is available.

           Lookup_LigatureSubst() has been extended to keep track of ligature
           IDs and components.

ftxgpos.h: Two function pointers have been introduced to handle anchor tables
           resp. Multiple Master fonts: TTO_GlyphFunction and TTO_MMFunction.
           Use TT_GPOS_Register_Glyph_Function() and
           TT_GPOS_Register_MM_Function() to set up the hooks.
           For details please read the comments in ftxgpos.h.

           A new data object for GPOS handling has been defined:
           TTO_GPOS_Data.  It usually contains correction values for the
           glyph position and the advance values.  Please refer to
           apirefx.txt for details.  Note that due to some problems not yet
           resolved regarding vertical cursive connections (who really needs
           this :-) it is possible that the interface will change!

           Finally, the new TT_GPOS_Apply_String() function will work
           similarly to TT_GSUB_Apply_String(); a full-featured example is
           given in ftstrtto.c.

ftxgpos.c: The changes are too numerous to be listed here; only some
           noteworthy features are mentioned here.

           Contrary to GSUB handling, GPOS needs data from the glyphs itself.
           Some formats of anchor tables (used e.g. to attach mark glyphs to
           base glyphs) and device tables refer to contour points, and
           cursive connections need advance values and dimensions of the
           glyphs if used vertically (vertical cursive connections has not
           been implemented yet -- this is the only omission of GPOS
           support).  The GPOS_Instance structure puts the necessary data
           together.

           Some GPOS subtables have been loaded incorrectly; this has been
           fixed.

           Otherwise, GPOS handling is quite similar to GSUB handling.

arabic.c: Isolated glyphs have not always been recognized correctly.

ftdump.c: Added Print_GPOS() function to dump GPOS tables.

ftstrtto.c: Toggling GSUB is now assigned to key `S' (it was `G').  Toggling
            GPOS is assigned to key `P'.

            Rounding and scaling will now occur immediately before rendering.

            To properly apply GPOS data for mark glyphs, the arrays `X[]'
            and `Y[]' will now collect glyph positions.

            Fixed usage string.

            The program will now display current dpi and ppem values in
            addition to the pt value.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]