X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fotf.h;h=efa37fffb313333da5db38671baba8e2c992c1ab;hb=7404f27e585163a341b474fe28cd3d0df5f7e152;hp=9499a6068d997b6fd62803be54905b0d743b728f;hpb=32d0537a93e0b3b3e3e8a08eede799ab0f4d9406;p=m17n%2Flibotf.git diff --git a/src/otf.h b/src/otf.h index 9499a60..efa37ff 100644 --- 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 @@ -24,15 +24,19 @@ write to the Free Software Foundation, Inc., 59 Temple Place, Suite #ifndef _OTF_H_ #define _OTF_H_ +#ifdef __cplusplus +extern "C" { +#endif + /* 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 +55,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 +67,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 +803,10 @@ typedef struct int XCoordinate; int YCoordinate; union { - union { + struct { unsigned AnchorPoint; } f1; - union { + struct { OTF_DeviceTable XDeviceTable; OTF_DeviceTable YDeviceTable; } f2; @@ -1061,7 +1067,12 @@ typedef struct See also OTF_get_table() and OTF_close(). */ -extern OTF *OTF_open (char *name); +extern OTF *OTF_open (const char *name); + +#include +#include FT_FREETYPE_H + +extern OTF *OTF_open_ft_face (FT_Face face); /*** (2-2) OTF_close () */ @@ -1093,7 +1104,7 @@ extern void OTF_close (OTF *otf); See also OTF_open(). */ -extern int OTF_get_table (OTF *otf, char *name); +extern int OTF_get_table (OTF *otf, const char *name); /*** (2-4) OTF_check_table () */ @@ -1107,8 +1118,54 @@ extern int OTF_get_table (OTF *otf, char *name); See also OTF_open(). */ -extern int OTF_check_table (OTF *otf, char *name); +extern int OTF_check_table (OTF *otf, const 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, + const OTF_Tag *features, int n_features); /*** (3) API for driving OTF */ @@ -1175,8 +1232,6 @@ typedef struct OTF_Anchor *mark2_anchor; } f6; } f; - - OTF_AlternateSet *alternate_set; } OTF_Glyph; /*** @@ -1242,10 +1297,13 @@ 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 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); + const char *script, const char *language, + const char *features); /*** (3-5) OTF_drive_gpos() */ @@ -1259,7 +1317,8 @@ extern int OTF_drive_gsub (OTF *otf, OTF_GlyphString *gstring, $GSTRING. $FEATURES is a list of features to apply. */ extern int OTF_drive_gpos (OTF *otf, OTF_GlyphString *gstring, - char *script, char *language, char *features); + const char *script, const char *language, + const char *features); /*** (3-6) OTF_drive_tables() */ @@ -1271,8 +1330,9 @@ extern int OTF_drive_gpos (OTF *otf, OTF_GlyphString *gstring, order, and update the glyphs string GSTRING. */ extern int OTF_drive_tables (OTF *otf, OTF_GlyphString *gstring, - char *script, char *language, - char *gsub_features, char *gpos_features); + const char *script, const char *language, + const char *gsub_features, + const char *gpos_features); /*** (3-7) OTF_get_unicode() */ @@ -1283,6 +1343,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, + const char *script, const char *language, + const char *features); + /*** (4) API for error handling ***/ /*** (4-1) Error codes ***/ @@ -1338,6 +1410,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() */ @@ -1350,7 +1429,7 @@ extern int OTF_error; first, followed by a colon and a blank. Then the message and a newline. */ -extern void OTF_perror (char *prefix); +extern void OTF_perror (const char *prefix); /*** (5) API miscellaneous ***/ @@ -1362,7 +1441,7 @@ extern void OTF_perror (char *prefix); NULL, return 0. Otherwise, $NAME must be at least 4-byte length. Only the first 4 characters are took into an account. */ -extern OTF_Tag OTF_tag (char *name); +extern OTF_Tag OTF_tag (const char *name); /*** Convert OTF tag to name string. @@ -1373,5 +1452,8 @@ extern OTF_Tag OTF_tag (char *name); extern void OTF_tag_name (OTF_Tag tag, char *name); +#ifdef __cplusplus +} +#endif #endif /* not _OTF_H_ */