*** empty log message ***
[m17n/libotf.git] / src / otf.h
index 431e288..47d93e7 100644 (file)
--- a/src/otf.h
+++ b/src/otf.h
@@ -1,6 +1,6 @@
 /* otf.h -- Header file for libotf (OpenType font library).
 
-Copyright (C) 2003, 2004, 2005, 2006, 2007
+Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
   National Institute of Advanced Industrial Science and Technology (AIST)
   Registration Number H15PRO167
 
@@ -29,14 +29,14 @@ extern "C" {
 #endif
 
 /* Version name of this library.  */
-#define LIBOTF_VERSION "0.9.6"
+#define LIBOTF_VERSION "0.9.10"
 
 /* Major version number.  */
 #define LIBOTF_MAJOR_VERSION 0
 /* Minor version number.  */
 #define LIBOTF_MINOR_VERSION 9
 /* Release (i.e. patch level) number.  */
-#define LIBOTF_RELEASE_NUMBER 6
+#define LIBOTF_RELEASE_NUMBER 10
 
 /***
     Table of contents:
@@ -69,6 +69,7 @@ extern "C" {
     (3-6) OTF_drive_tables()
     (3-7) OTF_get_unicode()
     (3-8) OTF_drive_gsub_alternate()
+    (3-9) OTF_iterate_on_feature()
 
     (4) API for error handling
     (4-1) Error codes
@@ -165,7 +166,7 @@ typedef struct
   unsigned endCount;
   int idDelta;
   unsigned idRangeOffset;
-} OTF_cmapSegument;
+} OTF_cmapSegment;
 
 typedef struct
 {
@@ -173,7 +174,7 @@ typedef struct
   unsigned searchRange;
   unsigned entrySelector;
   unsigned rangeShift;
-  OTF_cmapSegument *segments;
+  OTF_cmapSegment *segments;
   int GlyphCount;
   unsigned *glyphIdArray;
 } OTF_EncodingSubtable4;
@@ -214,6 +215,37 @@ typedef struct
 
 typedef struct
 {
+  unsigned unicodeValue;
+  unsigned short glyphID;
+} OTF_UVSMapping;
+
+typedef struct
+{
+  unsigned startUnicodeValue;
+  unsigned short additionalCount;
+} OTF_UnicodeValueRange;
+
+typedef struct
+{
+  unsigned varSelector;
+  unsigned defaultUVSOffset;
+  unsigned nonDefaultUVSOffset;
+  /* DefaultUVS */
+  unsigned numUnicodeValueRanges;
+  OTF_UnicodeValueRange *unicodeValueRanges;
+  /* NonDefaultUVS */
+  unsigned numUVSMappings;
+  OTF_UVSMapping *uvsMappings;
+} OTF_VariationSelectorRecord;
+
+typedef struct
+{
+  unsigned nRecords;
+  OTF_VariationSelectorRecord *Records;
+} OTF_EncodingSubtable14;
+
+typedef struct
+{
   unsigned format;
   unsigned length;
   unsigned language;
@@ -225,6 +257,7 @@ typedef struct
     OTF_EncodingSubtable8 *f8;
     OTF_EncodingSubtable10 *f10;
     OTF_EncodingSubtable12 *f12;
+    OTF_EncodingSubtable14 *f14;
   }f;
 } OTF_EncodingSubtable;
 
@@ -241,11 +274,15 @@ typedef struct
   unsigned version;
   unsigned numTables;
   OTF_EncodingRecord *EncodingRecord;
-  /* Mapping table: Unicode->GlyphID */
+  /* Mapping table: Unicode->GlyphID (for BMP only) */
   unsigned short *unicode_table;
+  /* Maximum Glyph ID that corresponds to a Unicode character.  */
   int max_glyph_id;
   /* Mapping table: GlyphID->Unicode */
   unsigned short *decode_table;
+  /* Index of the EncodingRecord for Unicode->GlyphID mapping.
+     -1 means that the font supports only Unicode BMP characters.  */
+  int table_index;
 } OTF_cmap;
 
 
@@ -1283,6 +1320,16 @@ extern int OTF_drive_cmap (OTF *otf, OTF_GlyphString *gstring);
 extern int OTF_drive_cmap2 (OTF *otf, OTF_GlyphString *gstring,
                            int platform_id, int encoding_id);
 
+
+/***
+    Store variable glyphs of character C in the array CODE.  The array
+    size must be 256.  The Nth element of CODE is the glyph corresponding
+    to the variation selector (N + 1).  The return value is the number
+    of variation glyphs.  */
+
+extern int OTF_get_variation_glyphs (OTF *otf, int c, OTF_GlyphID code[256]);
+
+
 /*** (3-3) OTF_drive_gdef() */
 
 /***
@@ -1372,6 +1419,14 @@ extern int OTF_drive_gsub_alternate (OTF *otf, OTF_GlyphString *gstring,
                                     const char *script, const char *language,
                                     const char *features);
 
+/*** (3-9) OTF_iterate_on_feature() */
+typedef int (*OTF_Feature_Callback) (OTF *otf, const char *feature,
+                                    unsigned glyph_id);
+
+extern int OTF_iterate_gsub_feature (OTF *otf, OTF_Feature_Callback callback,
+                                    const char *script, const char *language,
+                                    const char *feature);
+
 /*** (4) API for error handling ***/
 
 /*** (4-1) Error codes ***/
@@ -1469,6 +1524,13 @@ extern OTF_Tag OTF_tag (const char *name);
 
 extern void OTF_tag_name (OTF_Tag tag, char *name);
 
+extern int OTF_put_data (OTF *otf, char *id, void *data,
+                        void (*freer) (void *data));
+
+extern void *OTF_get_data (OTF *otf, char *id);
+
+extern OTF_Tag *OTF_get_drive_log (OTF *otf);
+
 #ifdef __cplusplus
 }
 #endif