Copyright updated.
[m17n/libotf.git] / src / otf.h
index 9499a60..3fb566a 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
+Copyright (C) 2003, 2004, 2005, 2006
   National Institute of Advanced Industrial Science and Technology (AIST)
   Registration Number H15PRO167
 
@@ -25,14 +25,14 @@ write to the Free Software Foundation, Inc., 59 Temple Place, Suite
 #define _OTF_H_
 
 /* Version name of this library.  */
-#define LIBOTF_VERSION "0.9.2"
+#define LIBOTF_VERSION "0.9.5"
 
 /* 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 2
+#define LIBOTF_RELEASE_NUMBER 5
 
 /***
     Table of contents:
@@ -51,7 +51,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place, Suite
     (1-11) Structure for OTF
 
     (2) API for reading OTF
-    (2-1) OTF_open()
+    (2-1) OTF_open(), OTF_open_ft_face()
     (2-2) OTF_close()
     (2-3) OTF_get_table()
     (2-4) OTF_check_table()
@@ -63,6 +63,8 @@ write to the Free Software Foundation, Inc., 59 Temple Place, Suite
     (3-4) OTF_drive_gsub()
     (3-5) OTF_drive_gpos()
     (3-6) OTF_drive_tables()
+    (3-7) OTF_get_unicode()
+    (3-8) OTF_drive_gsub_alternate()
 
     (4) API for error handling
     (4-1) Error codes
@@ -797,10 +799,10 @@ typedef struct
   int XCoordinate;
   int YCoordinate;
   union {
-    union {
+    struct {
       unsigned AnchorPoint;
     } f1;
-    union {
+    struct {
       OTF_DeviceTable XDeviceTable;
       OTF_DeviceTable YDeviceTable;
     } f2;
@@ -1063,6 +1065,11 @@ typedef struct
 
 extern OTF *OTF_open (char *name);
 
+#include <ft2build.h>
+#include FT_FREETYPE_H
+
+extern OTF *OTF_open_ft_face (FT_Face face);
+
 
 /*** (2-2) OTF_close () */
 
@@ -1109,6 +1116,52 @@ extern int OTF_get_table (OTF *otf, char *name);
 
 extern int OTF_check_table (OTF *otf, char *name);
 
+/*** (2-5) OTF_get_scripts () */
+
+/***
+    Get supported scripts.
+
+    The OTF_get_scripts() function setups OTF_ScriptList of GSUB (if
+    $GSUBP is nonzero) or GPOS (if $GSUBP is zero) table of the
+    OpenType font $OTF.
+
+    If the table is successfully setup, return 0.  Otherwise, retrun
+    -1, and set the variable OTF_error to OTF_ERROR_TABLE.  */
+
+extern int OTF_get_scripts (OTF *otf, int gsubp);
+
+/*** (2-6) OTF_get_features () */
+
+/***
+    Get supported features.
+
+    The OTF_get_features() function setups OTF_FeatureList of GSUB (if
+    $GSUBP is nonzero) or GPOS (if $GSUBP is zero) table of the
+    OpenType font $OTF.
+
+    If the table is successfully setup, return 0.  Otherwise, retrun
+    -1, and set the variable OTF_error to OTF_ERROR_TABLE.  */
+
+extern int OTF_get_features (OTF *otf, int gsubp);
+
+/*** (2-7) OTF_check_features  */
+
+/***
+    Check supported features.
+
+    The OTF_check_features() function checks if or not the OpenType
+    font $OTF has, for $SCRIPT and $LANGUAGE, all features in the
+    array $FEATURES.  The array size is $N_FEATURES.  If $LANGUAGE is
+    zero or $OTF doesn't have LangSys for $SCRIPT, the default LangSys
+    is checked.
+
+    If $OTF has all the features, return 1.  Otherwise, return 0.  If
+    an error occurs, return -1, and set the variable OTF_error to
+    OTF_ERROR_TABLE.   */
+
+extern int OTF_check_features (OTF *otf, int gsubp,
+                              OTF_Tag script, OTF_Tag language,
+                              OTF_Tag *features, int n_features);
 
 /*** (3) API for driving OTF */
 
@@ -1175,8 +1228,6 @@ typedef struct
       OTF_Anchor *mark2_anchor;
     } f6;
   } f;
-
-  OTF_AlternateSet *alternate_set;
 } OTF_Glyph;
 
 /***
@@ -1242,7 +1293,9 @@ extern int OTF_drive_gdef (OTF *otf, OTF_GlyphString *gstring);
     font $OTF, and by using features the font has for script $SCRIPT
     and language system $LANGSYS, update member <glyphs> of the glyph
     string $GSTRING.  It may substitute, delete, insert glyphs in that
-    array.  $FEATURES is a list of features to apply.  */
+    array.  $FEATURES is a list of features to apply.  This doesn't
+    perform a lookup of type 3 (Alternate Substitution).  For that,
+    use OTF_drive_gsub_alternate().  */
 
 extern int OTF_drive_gsub (OTF *otf, OTF_GlyphString *gstring,
                           char *script, char *language, char *features);
@@ -1283,6 +1336,18 @@ extern int OTF_drive_tables (OTF *otf, OTF_GlyphString *gstring,
 
 extern int OTF_get_unicode (OTF *otf, OTF_GlyphID code);
 
+/*** (3-8) OTF_drive_gsub_alternate() */
+
+/***
+    Find alternate glyphs.
+
+    This is like OTF_drive_gsub(), but perform only a lookup of type 3
+    (Alternate Substituion).  */
+
+extern int OTF_drive_gsub_alternate (OTF *otf, OTF_GlyphString *gstring,
+                                    char *script, char *language,
+                                    char *features);
+
 /*** (4) API for error handling ***/
 
 /*** (4-1) Error codes ***/
@@ -1338,6 +1403,13 @@ extern int OTF_error;
     See the function OTF_drive_gpos() for more detail.  */
 #define OTF_ERROR_GPOS_DRIVE   7
 
+/***
+    FT_Face access error.
+
+    This error indicates that the library fails in accessing Sfnt
+    tables via FT_Face.  */
+#define OTF_ERROR_FT_FACE      8
+
 
 /*** (4-2) OTF_perror() */