X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fm17n-flt.h;h=a9efff70033495219da5a2bc0e366894aceb7a6f;hb=38a8279d68792a0ac90b2e81dc7a0795b414ae36;hp=a65a44a655684a4f128f230d133ae1c9a9e76c62;hpb=8df6f180521a257158998bdc716dddef116e7981;p=m17n%2Fm17n-lib.git diff --git a/src/m17n-flt.h b/src/m17n-flt.h index a65a44a..a9efff7 100644 --- a/src/m17n-flt.h +++ b/src/m17n-flt.h @@ -1,5 +1,5 @@ /* m17n-flt.h -- header file for the FLT API of the m17n library. - Copyright (C) 2007 + Copyright (C) 2007, 2008, 2009, 2010 National Institute of Advanced Industrial Science and Technology (AIST) Registration Number H15PRO112 @@ -109,18 +109,20 @@ typedef struct fractional pixel format. */ /***ja ½Ä½ñ¤­»þ¤ÎÁ÷¤ê¹â¤ò 26.6 fractional pixel format ¤Çɽ¸½¤·¤¿¤â¤Î¡£ */ int yadv; - /***@{ */ + /* @{ */ /***en Ink metrics of the glyph expressed in 26.6 fractional pixel format. */ /***ja ¤³¤Î¥°¥ê¥Õ¤Î¥¤¥ó¥¯¥á¥È¥ê¥Ã¥¯¤ò 26.6 fractional pixel format ¤Çɽ¸½¤·¤¿¤â¤Î¡£ */ int ascent, descent, lbearing, rbearing; - /***@} */ + /* @} */ + /* @{ */ /***en Horizontal and vertical adjustments for the glyph positioning expressed in 26.6 fractional pixel format. */ /***ja ¥°¥ê¥Õ°ÌÃÖ·è¤á¤ÎºÝ¤Î¿åÊ¿¡¦¿âľĴÀ°Ãͤò¡¢ 26.6 fractional pixel format ¤Çɽ¸½¤·¤¿¤â¤Î¡£ */ int xoff, yoff; + /* @} */ /***en Flag to tell whether the member \ has already been set to a glyph ID in the font. */ /***ja ¥á¥ó¥Ð¡¼ \ ¤Ë´û¤Ë¥°¥ê¥Õ ID @@ -155,28 +157,32 @@ typedef struct The type #MFLTGlyphAdjustment is the structure to store information about a glyph metrics/position adjustment. It is - given to the callback function #drive_otf of #MFLTFont. */ + given to the callback function @b drive_otf of #MFLTFont. */ /***ja @brief ¥°¥ê¥Õ°ÌÃÖÄ´À°¾ðÊó¤Î¤¿¤á¤Î·¿. ·¿ #MFLTGlyphAdjustment ¤Ï¡¢¥°¥ê¥Õ¤Î¥á¥È¥ê¥Ã¥¯/°ÌÃÖ¤ÎÄ´À°¤Ë´Ø¤¹¤ë¾ðÊó¤ò³ÊǼ¤¹¤ë¤¿¤á¤Î¹½Â¤ÂΤǤ¢¤ê¡¢ - #MFLTFont ¤Î callback ´Ø¿ô #drive_otf ¤ËÅϤµ¤ì¤ë¡£ */ + #MFLTFont ¤Î callback ´Ø¿ô @b drive_otf ¤ËÅϤµ¤ì¤ë¡£ */ typedef struct { + /* @{ */ /***en Adjustments for advance width for horizontal layout and advance height for vertical layout expressed in 26.6 fractional pixel format. */ /***ja ¿åÊ¿¡¦¿âľÊý¸þ¤ÎÁ÷¤êÎ̤ÎÄ´À°Ãͤò 26.6 fractional pixel format ¤Çɽ¸½¤·¤¿¤â¤Î¡£ */ int xadv, yadv; + /* @} */ + /* @{ */ /***en Horizontal and vertical adjustments for glyph positioning expressed in 26.6 fractional pixel format. */ /***ja ¥°¥ê¥Õ°ÌÃÖ·è¤á¤¿¤á¤Î¿åÊ¿¡¦¿âľĴÀ°Ãͤò 26.6 fractional pixel format ¤Çɽ¸½¤·¤¿¤â¤Î¡£ */ int xoff, yoff; + /* @} */ /***en Number of glyphs to go back for drawing a glyph. */ /***ja ¥°¥ê¥ÕÉÁ²è¤Î¤¿¤á¤ËÌá¤ë¤Ù¤­¥°¥ê¥Õ¿ô¡£ */ short back; @@ -235,37 +241,65 @@ typedef struct The type #MFLTOtfSpec is the structure that contains information about the GSUB and GPOS features of a specific script and language - system to be applied to a glyph sequence. */ + system. The information is used to select which features to + apply to a glyph string, or to check if a specific FLT is usable + for a specific font. */ /***ja @brief GSUB ¤ª¤è¤Ó GPOS OpenType ¥Æ¡¼¥Ö¥ë¤Î»ÅÍͤΤ¿¤á¤Î·¿. ·¿ #MFLTOtfSpec ¤Ï¡¢GSUB ¤ª¤è¤Ó GPOS¥Õ¥£¡¼¥Á¥ã¡¼¤Î¾ðÊó¤ò³ÊǼ¤¹¤ë¤¿ ¤á¤Î¹½Â¤ÂΤǤ¢¤ë¡£¤³¤ì¤é¥Õ¥£¡¼¥Á¥ã¡¼¤ÏÆÃÄê¤Î¥¹¥¯¥ê¥×¥È¤ª¤è¤Ó¸À¸ì¥· - ¥¹¥Æ¥à¤Î¤â¤Î¤Ç¤¢¤ê¡¢¥°¥ê¥ÕÎó¤ËŬÍѤµ¤ì¤ë¡£ */ + ¥¹¥Æ¥à¤Î¤â¤Î¤Ç¤¢¤ë¡£¤³¤Î¾ðÊó¤Ï¡¢¤É¤Î¥Õ¥£¡¼¥Á¥ã¡¼¤ò¥°¥ê¥ÕÎó¤ËŬÍѤ¹ + ¤ë¤«¡¢¤¢¤ë¤¤¤ÏÆÃÄê¤Î FLT ¤¬ÆÃÄê¤Î¥Õ¥©¥ó¥È¤ËÂФ·¤ÆÍ­¸ú¤«¤É¤¦¤«¤Î·èÄê + ¤Ë»ÈÍѤµ¤ì¤ë¡£ */ typedef struct { /***en Unique symbol representing the spec. This is the same as the - #OTF-SPEC of the FLT. */ + @ref OTF-SPEC of the FLT. */ /***ja ¤³¤Î»ÅÍͤòɽ¤ï¤¹¥æ¥Ë¡¼¥¯¤Ê¥·¥ó¥Ü¥ë¡£ - FLT ¤Î #OTF-SPEC ¤ÈƱ°ì¤ÎÃͤǤ¢¤ë¡£ */ + FLT ¤Î @ref OTF-SPEC ¤ÈƱ°ì¤ÎÃͤǤ¢¤ë¡£ */ MSymbol sym; + /* @{ */ /***en Tags for script and language system. */ /***ja ¥¹¥¯¥ê¥×¥È¤ª¤è¤Ó¸À¸ì¥·¥¹¥Æ¥à¤Î¥¿¥°¡£ */ unsigned int script, langsys; - - /***en Array of GSUB (1st element) and GPOS (2nd element) features. - Each array is terminated by 0. If an element is 0xFFFFFFFF - apply the previous features in that order, and apply all the - other features except those that appear in the following elements. - It may be NULL if there are no features. */ - /***ja GSUB ¥Õ¥£¡¼¥Á¥ã¡¼¤òÂè1Í×ÁÇ¡¢GPOS ¥Õ¥£¡¼¥Á¥ã¡¼¤òÂè2Í×ÁǤȤ¹¤ëÇÛ - Îó¡£³ÆÇÛÎó¤ÎËöÈø¤Ï0¤Ç¼¨¤µ¤ì¤ë¡£¤â¤·¤¢¤ëÍ×ÁǤ¬ 0xFFFFFFFF¤Ê¤é¤Ð¡¢ - °ÊÁ°¤ÎÁ´¥Õ¥£¡¼¥Á¥ã¡¼¤ò¤½¤Î½ç½ø¤ÇŬÍѤ·¡¢¹¹¤Ë°Ê¹ß¤ÎÍ×ÁǤȤ·¤Æ¸½¤ï - ¤ì¤ë¥Õ¥£¥Á¥ã¡¼°Ê³°¤Î¤¹¤Ù¤Æ¤òŬÍѤ¹¤ë¡£¥Õ¥£¡¼¥Á¥ã¡¼¤¬1¤Ä¤â¤Ê¤¤¾ì¹ç - ¤Ï NULL ¤Ç¤â¤è¤¤¡£ */ + /* @} */ + + /***en Array of GSUB (1st element) and GPOS (2nd element) feature + tag arrays. Each array is terminated by 0. It may be NULL if + there is no feature to specify. + + (1) The case of using this information for selecting which + features to apply to a glyph string. If the array is NULL, + apply no feature. If the first element is 0xFFFFFFFF, apply all + available features except for what appear in the second and + following elements (if any). Otherwise, apply all listed + features. + + (2) The case of using this information for checking if a a font + can be drived by a specific FLT. If the array is NULL, the font + should not have any features. Otherwize, the font should have + all features before 0xFFFFFFFF element (if any) and should not + have any features after that element. */ + /***ja GSUB ¥Õ¥£¡¼¥Á¥ã¡¼¥¿¥°¤ÎÇÛÎó¤òÂè1Í×ÁÇ¡¢GPOS ¥Õ¥£¡¼¥Á¥ã¡¼¥¿¥°¤Î + ÇÛÎó¤òÂè2Í×ÁǤȤ¹¤ëÇÛÎó¡£³ÆÇÛÎó¤ÎËöÈø¤Ï0¤Ç¼¨¤µ¤ì¤ë¡£¥Õ¥£¡¼¥Á¥ã¡¼ + ¤Î»ØÄ꤬1¤Ä¤â¤Ê¤¤¾ì¹ç¤Ï¤³¤ÎÇÛÎó¤ÎÍ×ÁÇ¤Ï NULL ¤Ç¤â¤è¤¤¡£ + + (1) ¤³¤Î¾ðÊ󤬥°¥ê¥ÕÎó¤ËŬÍѤ¹¤Ù¤­¥Õ¥£¡¼¥Á¥ã¡¼¤ÎÁªÂò¤Ë»È¤ï¤ì¤ë¾ì + ¹ç¡£¤â¤·ÇÛÎ󼫿Ȥ¬NULL¤Ê¤é¡¢¤É¤Î¥Õ¥£¡¼¥Á¥ã¡¼¤âŬÍѤ·¤Ê¤¤¡£¤â¤·ºÇ + ½é¤ÎÍ×ÁǤ¬ 0xFFFFFFFF ¤Ê¤é¡¢£²ÈÖÌܰʹߤΥե£¡¼¥Á¥ã¡¼¡Ê¤â¤·¤¢¤ì + ¤Ð¡Ë¤ò½ü¤¯¤¹¤Ù¤Æ¤ÎŬÍѲÄǽ¤Ê¥Õ¥£¡¼¥Á¥ã¡¼¤òŬÍѤ¹¤ë¡£¤½¤ì°Ê³°¤Î¾ì + ¹ç¥ê¥¹¥È¤µ¤ì¤¿¤¹¤Ù¤Æ¤Î¥Õ¥£¡¼¥Á¥ã¡¼¤òŬÍѤ¹¤ë¡£ + + (2) ¤³¤Î¾ðÊó¤¬ÆÃÄê¤Î FLT ¤¬ÆÃÄê¤Î¥Õ¥©¥ó¥È¤ËÍ­¸ú¤«¤É¤¦¤«¤Î·èÄê¤Ë»È + ¤ï¤ì¤ë¾ì¹ç¡£¤â¤·ÇÛÎ󼫿Ȥ¬NULL¤Ê¤é¡¢¥Õ¥©¥ó¥È¤Ï¥Õ¥£¡¼¥Á¥ã¡¼¤ò°ì¤Ä + ¤â»ý¤Ã¤Æ¤¤¤Æ¤Ï¤¤¤±¤Ê¤¤¡£¤â¤·ºÇ½é¤ÎÍ×ÁǤ¬0xFFFFFFFF¤Ê¤é¡¢¥Õ¥©¥ó¥È + ¤Ï£²ÈÖÌܤÎÍ×ÁǰʹߤΥե©¥ó¥È¤ò»ý¤Ã¤Æ¤¤¤Æ¤Ï¤¤¤±¤Ê¤¤¡£¤½¤ì°Ê³°¤Î¾ì + ¹ç¡¢¥Õ¥©¥ó¥È¤Ï0xFFFFFFFF °ÊÁ°¤Î¤¹¤Ù¤Æ¤Î¥Õ¥£¡¼¥Á¥ã¡¼¤ò»ý¤Á¡¢¤«¤Ä + 0xFFFFFFFF °Ê¹ß¤Î¥Õ¥£¡¼¥Á¥ã¡¼¤Ï°ì¤Ä¤â»ý¤Ã¤Æ¤¤¤Æ¤Ï¤¤¤±¤Ê¤¤¡£*/ unsigned int *features[2]; } MFLTOtfSpec; @@ -275,13 +309,22 @@ typedef struct @brief Type of font to be used by the FLT driver. The type #MFLTFont is the structure that contains information - about a font used by the FLT driver. */ + about a font used by the FLT driver. Usually, an application + should prepare a bigger structure whose first element is MFLTFont + and has more information about the font that is used by callback + funcitons, and give that structure to mflt functions by coercing + it to MFLTFont. It is assured that callback functions can safely + coerce MFLTFont back to the original structure. */ /***ja @brief FLT ¥É¥é¥¤¥Ð¤¬»È¤¦¥Õ¥©¥ó¥È¤Î·¿. ·¿ #MFLTFont ¤Ï¡¢FLT¥É¥é¥¤¥Ð¤¬»È¤¦¥Õ¥©¥ó¥È¤Ë´Ø¤¹¤ë¾ðÊó¤ò³ÊǼ¤¹¤ë¤¿ - ¤á¤Î¹½Â¤ÂΤǤ¢¤ë¡£ */ + ¤á¤Î¹½Â¤ÂΤǤ¢¤ë¡£Ä̾異¥×¥ê¥±¡¼¥·¥ç¥ó¤ÏºÇ½é¤ÎÍ×ÁǤ¬ MFLTFont ¤Ç¡¢ + »Ä¤ê¤ÎÍ×ÁǤËcallback´Ø¿ô¤¬ÍøÍѤ¹¤ë¥Õ¥©¥ó¥È¾ðÊó¤ò»ý¤Ã¤¿¡¢¤è¤êÂ礭¤Ê + ¹½Â¤ÂΤòÍÑ°Õ¤·¡¢¤½¤ì¤ò MFLTFont ¤Ë coerce ¤·¤Æ mflt ¤Î³Æ´Ø¿ô¤ËÅϤ¹¡£ + ³Æcallback´Ø¿ô¤Ï MFLTFont ¤ò¸µ¤Î¹½Â¤ÂÎ¤Ë coerce ¤·Ä¾¤¹¤³¤È¤¬¤Ç¤­¤ë + ¤³¤È¤¬Êݾڤµ¤ì¤Æ¤¤¤ë¡£ */ typedef struct _MFLTFont { @@ -385,6 +428,18 @@ extern int mflt_run (MFLTGlyphString *gstring, int from, int to, /*=*/ /*** @} */ +extern int mflt_enable_new_feature; + +extern MSymbol (*mflt_font_id) (MFLTFont *font); + +extern int (*mflt_iterate_otf_feature) (MFLTFont *font, + MFLTOtfSpec *spec, + int from, int to, + unsigned char *table); + +extern int (*mflt_try_otf) (struct _MFLTFont *font, MFLTOtfSpec *spec, + MFLTGlyphString *gstring, int from, int to); + M17N_END_HEADER #endif /* _M17N_FLT_H_ */