From 25ad92c8a68bf72464601a644ed57b9213126a78 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 25 Dec 2006 09:35:06 -0500 Subject: [PATCH] Implement Feature --- src/hb-types-private.cc | 46 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/src/hb-types-private.cc b/src/hb-types-private.cc index 89c920f..69c8b9e 100644 --- a/src/hb-types-private.cc +++ b/src/hb-types-private.cc @@ -319,7 +319,7 @@ struct Script; struct ScriptList { DEFINE_NOT_INSTANTIABLE(ScriptList); - /* Scripts, in sorted alphabetical order */ + /* Scripts, in sorted alphabetical tag order */ DEFINE_RECORD_ARRAY_TYPE (Script, scriptRecord, scriptCount); USHORT scriptCount; /* Number of ScriptRecords */ @@ -329,7 +329,7 @@ struct ScriptList { struct Script { DEFINE_NOT_INSTANTIABLE(Script); - /* LangSys', in sorted alphabetical order */ + /* LangSys', in sorted alphabetical tag order */ DEFINE_RECORD_ARRAY_TYPE (LangSys, langSysRecord, langSysCount); /* Return NULL if none */ @@ -354,7 +354,7 @@ struct Script { struct LangSys { DEFINE_NOT_INSTANTIABLE(LangSys); - /* FeatureIndexes, in no particular order */ + /* Feature indices, in no particular order */ DEFINE_ARRAY_TYPE (USHORT, featureIndex, featureCount); /* Returns -1 if none */ @@ -373,9 +373,47 @@ struct LangSys { * language system--excludes the required * feature */ USHORT featureIndex[]; /* Array of indices into the FeatureList--in - * arbitrary order */ + * arbitrary order. featureCount entires long */ }; +struct Feature; + +struct FeatureList { + DEFINE_NOT_INSTANTIABLE(FeatureList); + /* Feature indices, in sorted alphabetical tag order */ + DEFINE_RECORD_ARRAY_TYPE (Feature, featureRecord, featureCount); + + USHORT featureCount; /* Number of FeatureRecords in this table */ + FeatureRecord featureRecord[];/* Array of FeatureRecords--zero-based (first + * feature has FeatureIndex = 0)--listed + * alphabetically by FeatureTag. featureCount + * entries long */ +}; + +struct Feature { + DEFINE_NOT_INSTANTIABLE(Feature); + /* LookupList indices, in no particular order */ + DEFINE_ARRAY_TYPE (USHORT, lookupIndex, lookupCount); + + // TODO: implement get_feature_params() + + Offset featureParams; /* Offset to Feature Parameters table (if one + * has been defined for the feature), relative + * to the beginning of the Feature Table; = NULL + * if not required */ + USHORT lookupCount; /* Number of LookupList indices for this + * feature */ + USHORT lookupIndex[]; /* Array of LookupList indices for this + * feature--zero-based (first lookup is + * LookupListIndex = 0). lookupCount + * entries long */ +}; + + + + + + #include #include -- 2.7.4