[Matplotlib-users] How to use different fonts in mathtext

I finally had time to try out your new code a bit, and I like it. It works well for the very simple cases, like superscripts. One thing that I noticed is that the height of the superscript depends on the font size -- is this a hardwired distance, or relative to font size. Also, it seems that when using the regular unicode fonts, more difficult math expressions, e.g., integrals, look terrible. I guess this is the point when CM is unavoidable...

I have been thinking that it might be possible to use some of the CM sans fonts, like CM bright. Also, there is a Arev font set (vera, backwards -- basically Bitstream Vera with math extensions) that looks like it might be promising, but it seems that mathtext does not see these extented characters.

I found an excellent writeup on math/text font combinations in LaTeX here:
  http://ctan.tug.org/tex-archive/info/Free_Math_Font_Survey/survey.html
from this informative page:
  http://cg.scs.carleton.ca/~luc/greek.html
There are, of course, many others.

-Rob

···

On Aug 6, 2007, at 4:03 PM, Michael Droettboom wrote:

There is now experimental support for custom fonts in math mode.
Try the above, and let me know how it goes...

----
Rob Hetland, Associate Professor
Dept. of Oceanography, Texas A&M University
http://pong.tamu.edu/~rob
phone: 979-458-0096, fax: 979-845-6331

Rob Hetland wrote:

There is now experimental support for custom fonts in math mode.
Try the above, and let me know how it goes...

I finally had time to try out your new code a bit, and I like it. It works well for the very simple cases, like superscripts. One thing that I noticed is that the height of the superscript depends on the font size -- is this a hardwired distance, or relative to font size.

It is intended to be relative to the xheight (the height of a lower case x) in the font. If you find any cases where it looks really wrong, let me know. I don't know how reliable the xheight information in the font is.

Also, it seems that when using the regular unicode fonts, more difficult math expressions, e.g., integrals, look terrible. I guess this is the point when CM is unavoidable...

I agree, they look terrible. There are things that could be done -- like using CM for only certain characters -- but that sort of depends on what font you're using for the rest of the math. It may be that the user provides a font that *does* have a good integral. None of that is very difficult to do, but finding a way to expose it to the user without exposing too much complexity and causing too many different testing configurations is the hard part. I think the end result may be a very small set of "font configurations" that work reasonably well, and anything outside of that is sort of "unsupported" territory.

I have been thinking that it might be possible to use some of the CM sans fonts, like CM bright. Also, there is a Arev font set (vera, backwards -- basically Bitstream Vera with math extensions) that looks like it might be promising, but it seems that mathtext does not see these extented characters.

I'll download these fonts and give them a try.

I found an excellent writeup on math/text font combinations in LaTeX here:
    http://ctan.tug.org/tex-archive/info/Free_Math_Font_Survey/survey.html
from this informative page:
    http://cg.scs.carleton.ca/~luc/greek.html
There are, of course, many others.

Thanks for those links. That certainly provides a lot of options... I'll have to look into these further.

Cheers,
Mike

···

On Aug 6, 2007, at 4:03 PM, Michael Droettboom wrote:

Rob Hetland wrote:

There is now experimental support for custom fonts in math mode.
Try the above, and let me know how it goes...

I finally had time to try out your new code a bit, and I like it. It works well for the very simple cases, like superscripts. One thing that I noticed is that the height of the superscript depends on the font size -- is this a hardwired distance, or relative to font size.

It is intended to be relative to the xheight (the height of a lower case x) in the font. If you find any cases where it looks really wrong, let me know. I don't know how reliable the xheight information in the font is.

Also, it seems that when using the regular unicode fonts, more difficult math expressions, e.g., integrals, look terrible. I guess this is the point when CM is unavoidable...

I agree, they look terrible. There are things that could be done -- like using CM for only certain characters, such as the radical -- but that sort of depends on what font you're using for the rest of the math. It may be that the user provides a font that *does* have a good integral. None of that is very difficult to do, but finding a way to expose it to the user without exposing too much complexity and causing too many different testing configurations is the hard part. I think the end result may be a very small set of "font configurations" that work reasonably well, and anything outside of that is sort of "unsupported" territory.

I have been thinking that it might be possible to use some of the CM sans fonts, like CM bright. Also, there is a Arev font set (vera, backwards -- basically Bitstream Vera with math extensions) that looks like it might be promising, but it seems that mathtext does not see these extented characters.

I'll download these fonts and give them a try.

I found an excellent writeup on math/text font combinations in LaTeX here:
    http://ctan.tug.org/tex-archive/info/Free_Math_Font_Survey/survey.html
from this informative page:
    http://cg.scs.carleton.ca/~luc/greek.html
There are, of course, many others.

Thanks for those links. That certainly provides a lot of options... I'll have to look into these further.

Cheers,
Mike

···

On Aug 6, 2007, at 4:03 PM, Michael Droettboom wrote:

Michael Droettboom wrote:

Rob Hetland wrote:

I have been thinking that it might be possible to use some of the CM sans fonts, like CM bright. Also, there is a Arev font set (vera, backwards -- basically Bitstream Vera with math extensions) that looks like it might be promising, but it seems that mathtext does not see these extented characters.

I'll download these fonts and give them a try.

The Arev fonts are working for me. They aren't 100% complete, but there are lots of basic things in there, like \neq for instance. In fact, this is the most complete free font I've seen in terms of math symbols (The long-awaited Stix fonts don't count until I can see it). There are also symbols in there which are not part of regular LaTeX, and at present there is no way to get at them from matplotlib. (That's on my TODO list.)

Perhaps it's a configuration issue? I put all the Arev fonts in my ~/.fonts (which is now looked at by matplotlib) and added the following to my matplotlibrc:

mathtext.use_cm : False
mathtext.fallback_to_cm : True
mathtext.cal : (['Arev Sans'], 'normal', 'oblique')
mathtext.it : (['Arev Sans'], 'normal', 'oblique')
mathtext.rm : (['Arev Sans'], 'normal', 'normal')
mathtext.bf : (['Arev Sans'], 'bold', 'normal')
mathtext.sf : (['Arev Sans'], 'normal', 'normal')

Cheers,
Mike

···

On Aug 6, 2007, at 4:03 PM, Michael Droettboom wrote:

FontBook (a Mac font manager) put user installed fonts into ~/Library/Fonts by default. Perhaps this would also be a good place for MPL to look for fonts.

-r

···

On Aug 13, 2007, at 10:37 AM, Michael Droettboom wrote:

I put all the Arev fonts in my
~/.fonts (which is now looked at by matplotlib)

----
Rob Hetland, Associate Professor
Dept. of Oceanography, Texas A&M University
http://pong.tamu.edu/~rob
phone: 979-458-0096, fax: 979-845-6331

mathtext.use_cm : False
mathtext.fallback_to_cm : True
mathtext.cal : (['Arev Sans'], 'normal', 'oblique')
mathtext.it : (['Arev Sans'], 'normal', 'oblique')
mathtext.rm : (['Arev Sans'], 'normal', 'normal')
mathtext.bf : (['Arev Sans'], 'bold', 'normal')
mathtext.sf : (['Arev Sans'], 'normal', 'normal')

I've got this set, but I still get an error message like:

>>> text(5, 0.8, r'\\beta', fontsize=20)
/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/matplotlib/mathtext.py:732: MathTextWarning: Font 'BitstreamVeraSans-Roman' does not have a glyph for '\beta'
   MathTextWarning)
<matplotlib.text.Text instance at 0x18dfedf0>

I know that Arev has all of the greek letters, but MPL does not seem to be able to use these. The sans-serif font should also be Arev Sans (according to rcParams), so I'm not sure where it it picking up bitstream-vera (unless Arev still calls itself that).

-Rob

···

On Aug 13, 2007, at 10:37 AM, Michael Droettboom wrote:

----
Rob Hetland, Associate Professor
Dept. of Oceanography, Texas A&M University
http://pong.tamu.edu/~rob
phone: 979-458-0096, fax: 979-845-6331