On Fri, Feb 22, 2002 at 09:06:52AM +1100, Martin Sevior wrote: > >From Lauris Kaplinski, gnome-print maintainer...... > ---------- Forwarded message ---------- > Date: Thu, 21 Feb 2002 21:34:25 +0200 > From: Lauris Kaplinski <[EMAIL PROTECTED]> > To: Martin Sevior <[EMAIL PROTECTED]> > Cc: [EMAIL PROTECTED] > Subject: Re: HowTo use TTF's in gnome print? [...]
Hello Lauris! Thank you so much for explaining gnome-print so well! Your explanation sure helps us understand and solve font problems. I have a patch for you. Some fonts have "-" in their fontname, but XLFD does not allow this, so this patch converts all "-" to "_" in familyname. Now, I also converted "&" to "+" because I ran into problems (or I thought I ran into problems) a few months ago with fontnames containing "&" (not gnome-print related). However, I just checked XLFD.txt and noticed that "&" is a valid field value, and can be legally used for familyname. (oops!) So, perhaps I was paranoid. :-) So, you may want to remove this line after applying the patch: if (ttf->gfi.familyName[i] == '&') ttf->gfi.familyName[i] = '+'; XLFD.txt does mention this though: Field values are constructed as strings of ISO 8859-1 graphic charac- ters, excluding the following: o "-" (HYPHEN), the XLFD font name delimiter character o "?" (QUESTION MARK) and "*" (ASTERISK), the X protocol font name wildcard characters o "," (COMMA), used by Xlib to separate XLFD font names in a font set. o """ (QUOTATION MARK), used by some commercial products to quote a font name. So, besides - , you may want to convert ? * , " to _ too. :-) Cheers, Anthony -- Anthony Fok Tung-Ling ThizLinux Laboratory <[EMAIL PROTECTED]> http://www.thizlinux.com/ Debian Chinese Project <[EMAIL PROTECTED]> http://www.debian.org/intl/zh/ Come visit Our Lady of Victory Camp! http://www.olvc.ab.ca/
--- gnome-print-0.34~/installer/gf-ttf.c Tue Jan 8 19:38:28 2002 +++ gnome-print-0.34/installer/gf-ttf.c Tue Jan 8 19:38:28 2002 @@ -113,6 +113,10 @@ if (ttf->gfi.fontName[i] == ' ') ttf->gfi.fontName[i] = '-'; } ttf->gfi.familyName = g_strdup (familyname); + for (i = 0; ttf->gfi.familyName[i]; i++) { + if (ttf->gfi.familyName[i] == '&') ttf->gfi.familyName[i] = '+'; + if (ttf->gfi.familyName[i] == '-') ttf->gfi.familyName[i] = '_'; + } ttf->gfi.isFixedPitch = FT_IS_FIXED_WIDTH (ft_face); ttf->gfi.fontBBox.llx = (gdouble) ft_face->bbox.xMin * 1000.0 / ft_face->units_per_EM; ttf->gfi.fontBBox.lly = (gdouble) ft_face->bbox.yMin * 1000.0 / ft_face->units_per_EM;