{
#endif
+#if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE)
+
extern void m17n_init_win (void);
#undef M17N_INIT
#define M17N_INIT() m17n_init_win ()
#undef M17N_FINI
#define M17N_FINI() m17n_fini_win ()
+#endif
+
/***en @defgroup m17nGUI GUI API */
/***ja @defgroup m17nGUI GUI API */
/*=*/
/*=*/
+extern MSymbol Mdevice;
+
extern MSymbol Mfont;
extern MSymbol Mfont_width;
extern MSymbol Mfont_ascent;
extern MSymbol Mfont_descent;
extern MFrame *mframe_default;
+extern MSymbol Mdisplay;
+extern MSymbol Mscreen;
+extern MSymbol Mdrawable;
+extern MSymbol Mwidget;
+extern MSymbol Mdepth;
+extern MSymbol Mcolormap;
+
extern MFrame *mframe (MPlist *plist);
extern void *mframe_get_prop (MFrame *frame, MSymbol key);
/*=*/
-extern MSymbol Mfont;
+extern MSymbol Mx, Mfreetype, Mxft;
extern MPlist *mfont_freetype_path;
extern MFont *mfont ();
-extern MFont *mfont_from_name (char *name);
-
extern MFont *mfont_copy (MFont *font);
-extern char *mfont_name (MFont *font);
+extern MFont *mfont_parse_name (char *name, MSymbol format);
-extern MFont *mfont_from_spec (char *family, char *weight, char *slant,
- char *swidth, char *adstyle, char *registry,
- unsigned short point, unsigned short res);
+extern char *mfont_unparse_name (MFont *font, MSymbol format);
+
+/* These two are obsolete (from 1.1.0). */
+extern char *mfont_name (MFont *font);
+extern MFont *mfont_from_name (char *name);
extern MSymbol Mfoundry;
extern MSymbol Mfamily;
extern MSymbol Msize;
extern MSymbol Mresolution;
+extern MSymbol Mfontconfig;
+
extern void *mfont_get_prop (MFont *font, MSymbol key);
extern int mfont_put_prop (MFont *font, MSymbol key, void *val);
extern int mfont_set_selection_priority (MSymbol *keys);
+extern int mfont_resize_ratio (MFont *font);
+
+extern MPlist *mfont_list (MFrame *frame, MFont *font, MSymbol language,
+ int maxnum);
+
+
/* end of font module */
/*=*/
/***en @defgroup m17nFontset Fontset */
/***ja @defgroup m17nFontset ¥Õ¥©¥ó¥È¥»¥Ã¥È */
/*=*/
-
+/*** @addtogroup m17nFontset
+ @{ */
typedef struct MFontset MFontset;
extern MFontset *mfontset (char *name);
MFont *spec, MSymbol layouter_name,
int how);
+extern MPlist *mfontset_lookup (MFontset *fontset, MSymbol script,
+ MSymbol language, MSymbol charset);
+/*** @} */
/* end of fontset module */
/*=*/
#MFaceHookFunc ¤Ï¥Õ¥§¡¼¥¹¤Î #Mhook ¥×¥í¥Ñ¥Æ¥£¤ò»ØÄꤹ¤ë·¿¤Ç¤¢¤ë¡£
¤³¤Î¥×¥í¥Ñ¥Æ¥£¤ÎÃͤϡ¢¤³¤Î·¿¤Î´Ø¿ô¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤é¤Ê¤¤¡£
*/
-typedef void *(*MFaceHookFunc) (MFace *face, void *arg, void *info);
+typedef void (*MFaceHookFunc) (MFace *face, void *arg, void *info);
/*=*/
extern void *mface_get_prop (MFace *face, MSymbol key);
¹ç¤Î¤ß¡£¡Ë */
unsigned anti_alias : 1;
+ /***en If nonzero, disable the adjustment of glyph positions to
+ avoid horizontal overlapping at font boundary. */
+ /***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢¥Õ¥©¥ó¥È¶³¦¤Ç¤Î¿åÊ¿Êý¸þ¤Î¥°¥ê¥Õ¤Î½Å¤Ê¤ê¤òÈò¤±
+ ¤ë¤¿¤á¤Î¥°¥ê¥Õ°ÌÃÖ¤ÎÄ´À°¤ò̵¸ú¤Ë¤¹¤ë¡£ */
+ unsigned disable_overlapping_adjustment : 1;
+
/***en If nonzero, the values are minimum line ascent and descent
pixels. */
/***ja 0 ¤Ç¤Ê¤±¤ì¤Ð¡¢ÃͤϹԤΠascent ¤È descent ¤ÎºÇ¾®Ãͤò¼¨¤¹¡£ */
/***en Metric of the glyph. */
/***ja ¥°¥ê¥Õ¤ÎÀ£Ë¡. */
- MDrawMetric this;
+ MDrawMetric metrics;
/***en Font used for the glyph. Set to NULL if no font is found for
the glyph. */
- /***ja ¤½¤Î¥°¥ê¥ÕÍѤ˻Ȥï¤ì¤ë¥Õ¥©¥ó¥È¡£¸«¤Ä¤«¤é¤Ê¤±¤ì¤Ð NULL¡£
+ /***ja ¥°¥ê¥Õ¤Ë»È¤ï¤ì¤ë¥Õ¥©¥ó¥È¡£¸«¤Ä¤«¤é¤Ê¤±¤ì¤Ð NULL¡£
the glyph. */
MFont *font;
/***en Character ranges corresponding to visually left and right
glyphs. */
- /***ja »ë³ÐŪ¤Êº¸±¦¤Î¥°¥ê¥Õ¤ËÂбþ¤¹¤ëʸ»ú¤ÎÈÏ°Ï¡£ */
+ /***ja ɽ¼¨¾å¤Îº¸±¦¤Î¥°¥ê¥Õ¤ËÂбþ¤¹¤ëʸ»ú¤ÎÈÏ°Ï¡£ */
int left_from, left_to;
int right_from, right_to;
+ /***en Logical width of the glyph. Nominal distance to the next
+ glyph. */
+ /***ja ¥°¥ê¥Õ¤ÎÏÀÍýŪÉý¡£¼¡¤Î¥°¥ê¥Õ¤È¤Î̾Ìܾå¤Îµ÷Î¥¡£ */
+ int logical_width;
} MDrawGlyphInfo;
/*=*/
+/*** @ingroup m17nDraw */
+/***en
+ @brief Type of information about a glyph metric and font.
+
+ The type #MDrawGlyph is the structure that contains information
+ about a glyph metric and font. It is used by the function
+ mdraw_glyph_list (). */
+/***ja
+ @brief ¥°¥ê¥Õ¤ÎÀ£Ë¡¤È¥Õ¥©¥ó¥È¤Ë´Ø¤¹¤ë¾ðÊó¤Î·¿Àë¸À.
+
+ #MDrawGlyph ·¿¤Ï¥°¥ê¥Õ¤ÎÀ£Ë¡¤È¥Õ¥©¥ó¥È¤Ë´Ø¤¹¤ë¾ðÊó¤ò´Þ¤à¹½Â¤ÂΤǤ¢
+ ¤ë¡£mdraw_glyph_list () ¤Ï¤³¤ì¤òÍѤ¤¤ë¡£ */
+
+typedef struct
+{
+ /***en Character range corresponding to the glyph. */
+ /***ja ¥°¥ê¥Õ¤ËÂбþ¤¹¤ëʸ»ú¤ÎÈÏ°Ï. */
+ int from, to;
+
+ /***en Font glyph code of the glyph. */
+ /***ja ¥Õ¥©¥ó¥ÈÆâ¤Î¥°¥ê¥Õ¥³¡¼¥É¡£ */
+ int glyph_code;
+
+ /***en Logical width of the glyph. Nominal distance to the next
+ glyph. */
+ /***ja ¥°¥ê¥Õ¤ÎÏÀÍýŪÉý¡£¼¡¤Î¥°¥ê¥Õ¤È¤Î̾Ìܾå¤Îµ÷Î¥¡£ */
+ int x_advance, y_advance;
+
+ /***en X/Y offset relative to the glyph position. */
+ /***ja ¥°¥ê¥Õ¤Î°ÌÃÖ¤ËÂФ¹¤ë X/Y ¥ª¥Õ¥»¥Ã¥È. */
+ int x_off, y_off;
+
+ /***en Metric of the glyph. */
+ /***ja ¥°¥ê¥Õ¤ÎÀ£Ë¡. */
+ int lbearing, rbearing, ascent, descent;
+
+ /***en Font used for the glyph. Set to NULL if no font is found for
+ the glyph. */
+ /***ja ¥°¥ê¥Õ¤Ë»È¤ï¤ì¤ë¥Õ¥©¥ó¥È¡£¸«¤Ä¤«¤é¤Ê¤±¤ì¤Ð NULL¡£
+ the glyph. */
+ MFont *font;
+
+ /***en Type of the font. One of Mx, Mfreetype, Mxft. */
+ /***ja ¥Õ¥©¥ó¥È¤Î¥¿¥¤¥×¡£Mx¡¢Mfreetype¡¢Mxft ¤Î¤¤¤º¤ì¤«¡£ */
+ MSymbol font_type;
+
+ /***en Pointer to the font structure. The actual type is
+ (XFontStruct *) if <font_type> member is Mx, FT_Face if
+ <font_type> member is Mfreetype, and (XftFont *) if <font_type>
+ member is Mxft. */
+ /***ja ¥Õ¥©¥ó¥È¤Î¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¡£¼ÂºÝ¤Î·¿¤Ï <font_type> ¥á¥ó¥Ð¤¬
+ Mx ¤Ê¤é (XFontStruct *)¡¢ Mfreetype ¤Ê¤é FT_Face¡¢Mxft ¤Ê¤é
+ (XftFont *)¡£ */
+ void *fontp;
+
+} MDrawGlyph;
+
+/*=*/
+
/***en
@brief Type of text items.
extern int mdraw_glyph_info (MFrame *frame, MText *mt, int from, int pos,
MDrawControl *control, MDrawGlyphInfo *info);
+extern int mdraw_glyph_list (MFrame *frame, MText *mt, int from, int to,
+ MDrawControl *control, MDrawGlyph *glyphs,
+ int array_size, int *num_glyphs_return);
+
extern void mdraw_text_items (MFrame *frame, MDrawWindow win, int x, int y,
MDrawTextItem *items, int nitems);