I am searching for advice on how to handle selecting a specific font, and
using that in a matplotlib figure.  As a background, the font will be picked
through the wx.FontDialog (common font dialog) provided by wxPython.  So,
what I will have is the font face (Arial, Times New Roman, Algerian, etc.
etc.), the weight, the style (italic, normal) and the point size.  All I
want to do is create a matplotlib font that matches this, and use it in the
plot.  My first try was this:

import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

# this does not work.  The title font is wrong.
the_font = 'Century Schoolbook'
fp = fm.FontProperties()
fp.set_name(the_font)
fp.set_size(24)
plt.title('The Title that should be in Century
Schoolbook',fontproperties=fp)
print fp
plt.show()

But that didn't work.  I know that "Century Schoolbook" is not really a font
family, but in the docs it says that you can list a font there.

The following does work, if I manually set the TrueType file explicitly:

fp = fm.FontProperties()
fp.set_file('c:\\Windows\Fonts\CENSCBK.TTF')
fp.set_size(24)
print fp
plt.title('The Title that is in Century Schoolbook',fontproperties=fp)
plt.show()

So I guess the question is....how does one accomplish this, portably?  I
don't quite understand the ins and outs of fonts.....


p.s.
I did take a stab at creating a mapping between the font names / weights /
styles like this:

all_fontfiles = fm.win32InstalledFonts()
allfonts = fm.createFontList(all_fontfiles)
fontdict = {}
for f in allfonts:
    fontdict[(f.name,f.style,f.weight)] = f.fname

And I think I can get this to work, because this maps me to a TTF file for
any name, style, and weight combination.  But this seemed awfully hacky, and
I don't know what problems I'll run into on other platforms (obviously, I
would have get all_fontfiles above differently on each platform).  If this
is the only way to do it, I guess that's OK, but I thought that surely there
was a better way.


Thanks,

-- 
Daniel Hyams
dhy...@gmail.com
------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to