*** empty log message ***
[m17n/m17n-test.git] / check-fs.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <m17n-gui.h>
5
6 void
7 print_font (MFont *font)
8 {
9   MSymbol family, language, script, otf;
10
11   family = mfont_get_prop (font, Mfamily);
12   language = mfont_get_prop (font, Mlanguage);
13   script = mfont_get_prop (font, Mscript);
14   otf = mfont_get_prop (font, Motf);
15
16   if (family)
17     printf ("%s", msymbol_name (family));
18   if (script)
19     printf (":script=%s", msymbol_name (script));
20   if (language)
21     printf (":lang=%s", msymbol_name (language));
22   if (otf)
23     printf (":otf=%s", msymbol_name (otf));
24 }
25
26 int
27 main (int argc, char **argv)
28 {
29   MFrame *frame;
30   MFontset *fontset;
31   MPlist *plist, *pl, *p, *p0;
32
33   if (argc < 2
34       || strcmp ("-h", argv[1]) == 0 || strcmp ("--help", argv[1]) == 0)
35     {
36       printf ("Usage: check-fs FONTSET-NAME\n");
37       exit (1);
38     }
39
40   M17N_INIT ();
41   plist = mplist ();
42   mplist_add (plist, Mdevice, NULL);
43   frame = mframe (plist);
44   m17n_object_unref (plist);
45
46   fontset = mfontset (argv[1]);
47   for (plist = mfontset_lookup (fontset, Mt, Mnil, Mnil);
48        plist &&  mplist_key (plist) != Mnil; plist = mplist_next (plist))
49     {
50       MSymbol script = mplist_key (plist);
51
52       printf ("\n(%s", msymbol_name (script));
53       for (pl = mfontset_lookup (fontset, script, Mt, Mnil);
54            pl && mplist_key (pl) != Mnil; pl = mplist_next (pl))
55         {
56           MSymbol language = mplist_key (pl);
57
58           if (language == Mt)
59             language = Mnil;
60           printf ("\n  (%s", msymbol_name (language));
61           for (p = mfontset_lookup (fontset, script, language, Mnil);
62                p && mplist_key (p) != Mnil; p = mplist_next (p))
63             {
64               MSymbol flt = mplist_key (p);
65               MFont *font = mplist_value (p);
66
67               printf ("\n    (");
68               print_font (font);
69               if (flt != Mt)
70                 printf (" (with flt %s)", msymbol_name (flt));
71               for (p0 = mfont_list (frame, font, Mnil, 0);
72                    p0 && mplist_key (p0) != Mnil; p0 = mplist_next (p0))
73                 if (! mplist_find_by_key (mplist_next (p0), mplist_key (p0)))
74                   printf ("\n      %s", msymbol_name (mplist_key (p0)));
75               printf (")");
76             }
77           printf (")");
78         }
79       printf (")");
80     }
81   printf ("\n");
82
83   m17n_object_unref (frame);
84   M17N_FINI ();
85   exit (0);
86 }