Implement Feature
authorBehdad Esfahbod <behdad@behdad.org>
Mon, 25 Dec 2006 14:35:06 +0000 (09:35 -0500)
committerBehdad Esfahbod <behdad@behdad.org>
Mon, 25 Dec 2006 14:35:06 +0000 (09:35 -0500)
src/hb-types-private.cc

index 89c920f..69c8b9e 100644 (file)
@@ -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 <stdlib.h>
 #include <stdio.h>