6 #include <fontconfig/fontconfig.h>
7 #include <fontconfig/fcfreetype.h>
9 static FT_Library ft_library;
12 open_font (MFrame *frame, char *fontname, char **err)
21 pat = FcNameParse ((FcChar8 *) fontname);
24 *err = "invalid name format";
27 if (FcPatternGetString (pat, FC_FAMILY, 0, &fam) != FcResultMatch)
29 *err = "no family name";
32 if (FcPatternGetDouble (pat, FC_PIXEL_SIZE, 0, &pixelsize) != FcResultMatch)
34 FcPatternAddBool (pat, FC_SCALABLE, FcTrue);
35 FcPatternDel (pat, FC_PIXEL_SIZE);
36 os = FcObjectSetBuild (FC_FILE, NULL);
37 fs = FcFontList (NULL, pat, os);
40 *err = "no matching font";
43 FcPatternGetString (fs->fonts[0], FC_FILE, 0, &file);
45 if (FT_New_Face (ft_library, (char *) file, 0, &face))
47 FcFontSetDestroy (fs);
48 FcObjectSetDestroy (os);
49 FcPatternDestroy (pat);
50 *err = "font open fail";
53 FcFontSetDestroy (fs);
54 FcObjectSetDestroy (os);
55 FcPatternDestroy (pat);
56 if (FT_Set_Pixel_Sizes (face, pixelsize, pixelsize))
58 *err = "set pixelsize fail";
62 return mfont_encapsulate (frame, Mfreetype, face);
66 main (int argc, char **argv)
76 fprintf (stderr, "Usage: flt-old FONT-NAME < TEXT-FILE\n");
80 FT_Init_FreeType (&ft_library);
82 mt = mconv_decode_stream (msymbol ("utf-8"), stdin);
85 MFace *face = mface ();
86 MPlist *plist = mplist ();
87 MFontset *fontset = mfontset ("generic");
89 mface_put_prop (face, Mfontset, fontset);
90 mplist_add (plist, Mface, face);
91 mplist_add (plist, Mdevice, Mnil);
92 frame = mframe (plist);
93 m17n_object_unref (plist);
94 m17n_object_unref (face);
95 m17n_object_unref (fontset);
97 font = open_font (frame, argv[1], &err);
98 mtext_put_prop (mt, 0, len, Mfont, font);
101 fprintf (stderr, "Font error: %s: %s\n", argv[1], err);
105 mdraw_text_extents (frame, mt, 0, len, NULL, NULL, NULL, NULL);
106 m17n_object_unref (frame);
107 m17n_object_unref (mt);