correct value from the above character code via cmap if such a
glyph is available in the font.
- The function OTF_drive_gpos2 may insert a glyph whose glyph_id is
- 0 but positioning_type is positive. It is not an actual glyph
- but just contains positioning information that should be
- accumulated to the positioning information of the previous
- glyphs. */
+ The functions OTF_drive_gpos2 and OTF_driver_gpos_with_log may
+ insert a glyph whose glyph_id is 0 but positioning_type is
+ positive. It is not an actual glyph but just contains
+ positioning information that should be accumulated to the
+ positioning information of the previous glyphs. */
OTF_GlyphID glyph_id;
/* GlyphClass of the glyph. The value is extracted from the GDEF
GDEF table. */
unsigned MarkAttachClass;
- /* Positioning format type of the glyph. The value specifies how
- the glyph positioning information is encoded in the member <f>.
- If the value is N, the union member fN, is used. If the value is
- zero, the glyph has no positioning information, i.e. it should be
- drawn at the normal position. */
- int positioning_type;
+ /* The lowest 4-bit is a positioning format type of the glyph. The
+ value specifies how the glyph positioning information is encoded
+ in the member <f>. If the value is N, the union member fN, is
+ used. If the value is zero, the glyph has no positioning
+ information, i.e. it should be drawn at the normal position.
+
+ OTF_drive_gsub, OTF_drive_gsub_alternate, OTF_drive_gpos, and
+ OTF_drive_gpos2 always sets the higher bits to zero.
+
+ OTF_drive_gsub_with_log and OTF_drive_gpos_with_log sets the
+ higher 16-bit (i.e. 5th to 20th bits) to the index number of the
+ lastly applied feature on the glyph plus one. If no feature was
+ applied, those bits are zero. */
+ unsigned int positioning_type;
union {
struct {
int from, to;
const char *script, const char *language,
const char *features);
+/***
+ Process glyph string by GSUB table with log.
+
+ This is like OTF_drive_gsub(), but records which feature is
+ applied to each glyph in the higher bits of `positioning_type'
+ member of OTF_Glyph. */
+
+extern int OTF_drive_gsub_with_log (OTF *otf, OTF_GlyphString *gstring,
+ const char *script, const char *language,
+ const char *features);
+
+
/*** (3-5) OTF_drive_gpos() */
/***
const char *script, const char *language,
const char *features);
+/***
+ Process glyph string by GPOS table with log.
+
+ This is like OTF_drive_pos_2(), but records which feature is
+ applied to each glyph in the higher bits of `positioning_type'
+ member of OTF_Glyph. */
+
+extern int OTF_drive_gpos_with_log (OTF *otf, OTF_GlyphString *gstring,
+ const char *script, const char *language,
+ const char *features);
+
+
/*** (3-6) OTF_drive_tables() */
/***
extern void *OTF_get_data (OTF *otf, char *id);
-extern OTF_Tag *OTF_get_drive_log (OTF *otf);
-
#ifdef __cplusplus
}
#endif