help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Using fonts with the print command


From: Dave T
Subject: Using fonts with the print command
Date: Sun, 9 Mar 2008 20:55:01 -0400 (EDT)

I ran into a problem trying to print a plot to a PNG file.  I originally 
reported this to the octave bugs list but I finally realized it was more a 
matter of understanding how to use fonts with Octave 3.0 under Linux.  (I don't 
know if this problem exists for Windows users or if so how to solve it).  It 
took me a long time to figure out how this works so I thought I'd share the 
answer.

I was trying to do something like this:

   x = 1:10 ;
   plot (x);
   title ('My plot');
   print myplot.png -dpng
  
When Octave executed the print command, I got this error message:
 
   gdImageStringFT: Could not find/open font while printing string My plot with 
font Helvetica

It turns out that Octave 3.0 uses 'Helvetica' as it's default font and if you 
don't happen to have a Helvetica font installed, you'll get this error message. 
 I fixed this problem by finding the fonts that are installed on my system and 
explicitly specifying which font to use.  Here's a detailed explanation:

First you need some fonts.  You could use one of the five default fonts 
available in gnuplot but I found them way too limited for my needs.  You 
probably already have some good true type fonts installed in your Linux distro. 
 If not, you should be able to install some with your package manager.

Next you need to find the path to the fonts.  Try looking in 
"/usr/share/fonts/truetype".  If they aren't there, you can do "find . -name 
*.ttf" from /usr or other system directories until you find the font 
directories.  As an example, I found two font files I wanted to use:

  /usr/share/fonts/truetype/ttf-mgopen/MgOpenModernaBold.ttf
  /usr/share/fonts/truetype/ttf-dejavu/DejaVuSans-Bold.ttf
     
Now you need to tell gnuplot where to find the fonts.  Do this by setting the 
GDFONTPATH environment variable.  I had to list each font subdirectory like 
this:

export 
GDFONTPATH="/usr/share/fonts/truetype/ttf-mgopen:/usr/share/fonts/truetype/ttf-dejavu"

Now you can use the name of the font file in Octave like this:

  title ('My plot', 'FontName', 'MgOpenModernaBold.ttf', 'FontSize', 18);

As far as I can tell, the Octave plot window didn't use the font I specified 
but when I printed to a PNG file, it had the right font.

If for some reason, setting GDFONTPATH doesn't work, you can specify the full 
path to the font.  It's a yucky hack, but it works.  I discovered thru trial 
and error that there seems to be some magical length limit on the path name.  
When I did this in octave:

  title ('My plot', 'FontName', 
"/usr/share/fonts/truetype/ttf-mgopen/MgOpenModernaBold.ttf");

I got an error.  So I copied the font file to a directory with a shorter name 
and shortened the file name as well:

  title ('My plot', 'FontName', "/home/dave/Fonts/MdrnaBd.ttf");

This works just fine.


_______________________________________________
No banners. No pop-ups. No kidding.
Make My Way  your home on the Web - http://www.myway.com




reply via email to

[Prev in Thread] Current Thread [Next in Thread]