the same string.
size.y = para->height;
return size;
}
+
+/* psfontResolve:
+ * Construct alias for postscript fontname.
+ * NB. Uses a static array - non-reentrant.
+ */
+
+#define ADD_ATTR(a) \
+ if (a) { \
+ strcat(buf, comma ? " " : ", "); \
+ comma = 1; \
+ strcat(buf, a); \
+ }
+
+char* psfontResolve (PostscriptAlias* pa)
+{
+ static char buf[1024];
+ int comma=0;
+ strcpy(buf, pa->family);
+
+ ADD_ATTR(pa->weight);
+ ADD_ATTR(pa->stretch);
+ ADD_ATTR(pa->style);
+/*
+ if (pa->weight) {
+ strcat(buf, comma ? " " : ", ");
+ comma = 1;
+ strcat(buf, pa->weight);
+ }
+ if (pa->stretch) {
+ strcat(buf, comma ? " " : ", ");
+ comma = 1;
+ strcat(buf, pa->stretch);
+ }
+ if (pa->style) {
+ strcat(buf, comma ? " " : ", ");
+ comma = 1;
+ strcat(buf, pa->style);
+ }
+*/
+
+ return buf;
+}
+
}
}
+extern char* psfontResolve (PostscriptAlias* pa);
+
static void gdgen_textpara(GVJ_t * job, pointf p, textpara_t * para)
{
gdImagePtr im = (gdImagePtr) job->context;
pointf spf, epf;
double parawidth = para->width * job->scale.x;
+ char* fontname;
if (!im)
return;
epf.y = spf.y = p.y - para->yoffset_centerline * job->scale.y;
}
+#ifdef HAVE_GD_FONTCONFIG
+ if (para->postscript_alias)
+ fontname = psfontResolve (para->postscript_alias);
+ else
+#endif
+ fontname = para->fontname;
+
gdgen_text(im, spf, epf,
job->obj->pencolor.u.index,
para->fontsize,
ROUND(POINTS_PER_INCH * job->scale.x),
job->rotation ? (PI / 2) : 0,
- para->fontname,
+ fontname,
para->str);
}
}
#endif /* HAVE_GD_FONTCONFIG */
+extern char* psfontResolve (PostscriptAlias* pa);
+
static boolean gd_textlayout(textpara_t * para, char **fontpath)
{
char *err;
}
/* call gdImageStringFT with null *im to get brect and to set font cache */
#ifdef HAVE_GD_FONTCONFIG
- fontlist = para->fontname;
+ if (para->postscript_alias)
+ fontlist = psfontResolve (para->postscript_alias);
+ else
+ fontlist = para->fontname;
#else
fontlist = gd_alternate_fontlist(para->fontname);
#endif
#define FONT_DPI 96.
+extern char* psfontResolve (PostscriptAlias* pa);
+
static boolean pango_textlayout(textpara_t * para, char **fontpath)
{
static char buf[1024]; /* returned in fontpath, only good until next call */
pango_font_description_free (desc);
if (para->postscript_alias) {
- int comma=0;
- strcpy(buf, para->postscript_alias->family);
- if (para->postscript_alias->weight) {
- strcat(buf, comma ? " " : ", ");
- comma = 1;
- strcat(buf, para->postscript_alias->weight);
- }
- if (para->postscript_alias->stretch) {
- strcat(buf, comma ? " " : ", ");
- comma = 1;
- strcat(buf, para->postscript_alias->stretch);
- }
- if (para->postscript_alias->style) {
- strcat(buf, comma ? " " : ", ");
- comma = 1;
- strcat(buf, para->postscript_alias->style);
- }
- fnt = buf;
+ fnt = psfontResolve (para->postscript_alias);
}
else
fnt = fontname;