4 #include "dl-pkfont.hh"
5 #include "dl-vffont.hh"
7 using DviLib::FileLoader;
8 using DviLib::AbstractFont;
15 do_run_program (const char *program,
19 char **argv = g_new (char *, g_list_length (args) + 2);
25 argv[i++] = g_strdup (program);
26 for (l = args; l; l = l->next)
27 argv[i++] = g_strdup ((char *)l->data);
34 g_spawn_sync (NULL, /* working directory */
36 NULL, /* environment */
37 G_SPAWN_SEARCH_PATH, /* flags */
38 NULL, /* child setup */
39 NULL, /* user data for child setup */
42 NULL, /* exit status */
52 run_program (const char *program,
58 GList *arguments = NULL;
61 va_start (arg_list, arg1);
63 arguments = g_list_append (arguments, (gpointer)arg1);
65 s = va_arg (arg_list, gchar*);
68 arguments = g_list_append (arguments, s);
69 s = va_arg (arg_list, gchar*);
74 return do_run_program (program, arguments, err);
78 run_kpsewhich (int dpi,
82 char *dpistr = g_strdup_printf ("--dpi=%d", dpi);
83 char *formatstr = g_strdup_printf ("--format=%s", format.c_str());
84 char *namestr = g_strdup (name.c_str());
88 result = run_program ("kpsewhich", &err, dpistr, formatstr, namestr, NULL);
92 cout << err->message << endl;
100 /* Nothing useful returned */
106 cout << "kpsewhich " << dpistr << " " << formatstr << " " << namestr << " " << endl;
116 run_mktexpk (int dpi, string name)
118 char *dpistr = g_strdup_printf ("--bdpi=%d", dpi);
119 char *bdpistr = g_strdup_printf ("--dpi=%d", dpi);
120 char *namestr = g_strdup (name.c_str());
123 result = run_program ("mktexpk", NULL, bdpistr, dpistr, namestr, NULL);
133 FontFactory::create_font (std::string name,
140 filename = run_kpsewhich (dpi, "vf", name);
143 return new VfFont (*new FileLoader (filename), at_size);
147 filename = run_kpsewhich (dpi, "pk", name);
150 return new PkFont (*new FileLoader (filename), at_size);
154 run_mktexpk (dpi, name);
156 cout << "birnan" << endl;
159 filename = run_kpsewhich (dpi, "pk", name);
162 return new PkFont (*new FileLoader (filename), at_size);
164 cout << "no luck" << endl;
166 throw (string ("bad font"));