*** empty log message ***
[m17n/m17n-lib.git] / src / font.h
index d17c363..54c75d1 100644 (file)
@@ -186,6 +186,13 @@ struct MFontDriver
   void (*render) (MDrawWindow win, int x, int y,
                  MGlyphString *gstring, MGlyph *from, MGlyph *to,
                  int reverse, MDrawRegion region);
+
+  /** Push to PLIST fonts matching with FONT.  LANGUAGE, if not Mnil,
+      limits fonts to ones that support LANGUAGE.  MAXNUM if greater
+      than 0 limits the number of listed fonts.  Return how many fonts
+      a listed.  */
+  int (*list) (MFrame *frame, MPlist *plist, MFont *font, MSymbol language,
+              int maxnum);
 };
 
 /** Initialize the members of FONT.  */
@@ -202,6 +209,10 @@ extern void mfont__flt_fini ();
 #include <ft2build.h>
 #include FT_FREETYPE_H
 
+#ifdef HAVE_FONTCONFIG
+#include <fontconfig/fontconfig.h>
+#endif
+
 #ifdef HAVE_OTF
 #include <otf.h>
 #endif /* HAVE_OTF */
@@ -215,9 +226,15 @@ typedef struct
   MPlist *charmap_list;
   int charmap_index;
   FT_Face ft_face;
+  char *languages;
 #ifdef HAVE_OTF
   OTF *otf;
 #endif /* HAVE_OTF */
+#ifdef HAVE_FONTCONFIG
+  FcLangSet *langset;
+#else
+  void *langset;
+#endif
   void *extra_info;            /* Xft uses this member.  */
 } MFTInfo;
 
@@ -279,6 +296,8 @@ extern void mfont__set_spec (MFont *font,
 extern int mfont__parse_name_into_font (char *name, MSymbol format,
                                        MFont *font);
 
+extern MPlist *mfont__encoding_list (void);
+
 extern unsigned mfont__flt_encode_char (MSymbol layouter_name, int c);
 
 extern int mfont__flt_run (MGlyphString *gstring, int from, int to,