|
From: <jo...@us...> - 2009-12-13 12:06:16
|
Revision: 8026
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8026&view=rev
Author: jouni
Date: 2009-12-13 12:06:07 +0000 (Sun, 13 Dec 2009)
Log Message:
-----------
Address mathtext problem with non-BMP characters: http://thread.gmane.org/gmane.comp.python.matplotlib.general/19963/focus=19978
Modified Paths:
--------------
trunk/matplotlib/doc/users/mathtext.rst
trunk/matplotlib/lib/matplotlib/mathtext.py
Modified: trunk/matplotlib/doc/users/mathtext.rst
===================================================================
--- trunk/matplotlib/doc/users/mathtext.rst 2009-12-12 18:24:54 UTC (rev 8025)
+++ trunk/matplotlib/doc/users/mathtext.rst 2009-12-13 12:06:07 UTC (rev 8026)
@@ -23,6 +23,13 @@
customization variable ``mathtext.fontset`` (see
:ref:`customizing-matplotlib`)
+.. note::
+ On `"narrow" <http://wordaligned.org/articles/narrow-python>`_ builds
+ of Python, if you use the STIX fonts you should also set
+ ``ps.fonttype`` and ``pdf.fonttype`` to 3 (the default), not 42.
+ Otherwise `some characters will not be visible
+ <http://thread.gmane.org/gmane.comp.python.matplotlib.general/19963/focus=19978>`_.
+
Here is a simple example::
# plain text
Modified: trunk/matplotlib/lib/matplotlib/mathtext.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/mathtext.py 2009-12-12 18:24:54 UTC (rev 8025)
+++ trunk/matplotlib/lib/matplotlib/mathtext.py 2009-12-13 12:06:07 UTC (rev 8026)
@@ -82,6 +82,14 @@
TeX/Type1 symbol"""%locals()
raise ValueError, message
+def unichr_safe(index):
+ """Return the Unicode character corresponding to the index,
+or the replacement character if this is a narrow build of Python
+and the requested character is outside the BMP."""
+ try:
+ return unichr(index)
+ except ValueError:
+ return unichr(0xFFFD)
class MathtextBackend(object):
"""
@@ -321,7 +329,8 @@
def render_glyph(self, ox, oy, info):
oy = self.height - oy + info.offset
- thetext = unichr(info.num)
+ thetext = unichr_safe(info.num)
+
self.svg_glyphs.append(
(info.font, info.fontsize, thetext, ox, oy, info.metrics))
@@ -351,7 +360,7 @@
def render_glyph(self, ox, oy, info):
oy = self.height - oy + info.offset
- thetext = unichr(info.num)
+ thetext = unichr_safe(info.num)
self.glyphs.append(
(info.font, info.fontsize, thetext, ox, oy))
@@ -379,7 +388,7 @@
def render_glyph(self, ox, oy, info):
oy = oy - info.offset - self.height
- thetext = unichr(info.num)
+ thetext = unichr_safe(info.num)
self.glyphs.append(
(info.font, info.fontsize, thetext, ox, oy))
@@ -997,7 +1006,7 @@
cached_font = self._get_font(i)
glyphindex = cached_font.charmap.get(uniindex)
if glyphindex is not None:
- alternatives.append((i, unichr(uniindex)))
+ alternatives.append((i, unichr_safe(uniindex)))
# The largest size of the radical symbol in STIX has incorrect
# metrics that cause it to be disconnected from the stem.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|