[Top][All Lists]
[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.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- GPOS support available!,
Werner LEMBERG <=