SourceForge logo
SourceForge logo
Menu

SF.net SVN: matplotlib: [3673] trunk/matplotlib/lib/matplotlib

From: <md...@us...> - 2007年08月03日 19:47:51
Revision: 3673
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=3673&view=rev
Author: mdboom
Date: 2007年08月03日 12:47:49 -0700 (2007年8月03日)
Log Message:
-----------
Fix superscript offset bug (only offset when nucleus is slanted)
Modified Paths:
--------------
 trunk/matplotlib/lib/matplotlib/_mathtext_data.py
 trunk/matplotlib/lib/matplotlib/mathtext.py
Modified: trunk/matplotlib/lib/matplotlib/_mathtext_data.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/_mathtext_data.py	2007年08月03日 18:30:25 UTC (rev 3672)
+++ trunk/matplotlib/lib/matplotlib/_mathtext_data.py	2007年08月03日 19:47:49 UTC (rev 3673)
@@ -68,17 +68,6 @@
 r'\imath' : ('cmmi10', 8),
 r'\jmath' : ('cmmi10', 65),
 r'\wp' : ('cmmi10', 14),
- r'\Gamma' : ('cmmi10', 37),
- r'\Delta' : ('cmmi10', 11),
- r'\Theta' : ('cmmi10', 12),
- r'\Lambda' : ('cmmi10', 26),
- r'\Xi' : ('cmmi10', 4),
- r'\Pi' : ('cmmi10', 33),
- r'\Sigma' : ('cmmi10', 16),
- r'\Upsilon' : ('cmmi10', 19),
- r'\Phi' : ('cmmi10', 15),
- r'\Psi' : ('cmmi10', 27),
- r'\Omega' : ('cmmi10', 23),
 r'\alpha' : ('cmmi10', 13),
 r'\beta' : ('cmmi10', 35),
 r'\gamma' : ('cmmi10', 24),
@@ -128,6 +117,17 @@
 r'%' : ('cmr10', 48),
 r'\$' : ('cmr10', 99),
 r'@' : ('cmr10', 111),
+ r'\Gamma' : ('cmr10', 19),
+ r'\Delta' : ('cmr10', 6),
+ r'\Theta' : ('cmr10', 7),
+ r'\Lambda' : ('cmr10', 14),
+ r'\Xi' : ('cmr10', 3),
+ r'\Pi' : ('cmr10', 17),
+ r'\Sigma' : ('cmr10', 10),
+ r'\Upsilon' : ('cmr10', 11),
+ r'\Phi' : ('cmr10', 9),
+ r'\Psi' : ('cmr10', 15),
+ r'\Omega' : ('cmr10', 12),
 
 # these are mathml names, I think. I'm just using them for the
 # tex methods noted
Modified: trunk/matplotlib/lib/matplotlib/mathtext.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/mathtext.py	2007年08月03日 18:30:25 UTC (rev 3672)
+++ trunk/matplotlib/lib/matplotlib/mathtext.py	2007年08月03日 19:47:49 UTC (rev 3673)
@@ -482,7 +482,7 @@
 if bunch is not None:
 return bunch
 
- cached_font, num, symbol_name, fontsize = \
+ cached_font, num, symbol_name, fontsize, slanted = \
 self._get_glyph(fontname, sym, fontsize)
 
 font = cached_font.font
@@ -500,7 +500,8 @@
 ymin = ymin+offset,
 ymax = ymax+offset,
 # iceberg is the equivalent of TeX's "height"
- iceberg = glyph.horiBearingY/64.0 + offset
+ iceberg = glyph.horiBearingY/64.0 + offset,
+ slanted = slanted
 )
 
 self.glyphd[key] = Bunch(
@@ -558,13 +559,17 @@
 return glyph.height/64.0/2.0 + 256.0/64.0 * dpi/72.0
 return 0.
 
+ _slanted_symbols = Set(r"\int \oint".split())
+ 
 def _get_glyph(self, fontname, sym, fontsize):
 if fontname in self.fontmap and latex_to_bakoma.has_key(sym):
 basename, num = latex_to_bakoma[sym]
+ slanted = basename == "cmmi10" or sym in self._slanted_symbols
 cached_font = self._get_font(basename)
 symbol_name = cached_font.font.get_glyph_name(num)
 num = cached_font.glyphmap[num]
 elif len(sym) == 1:
+ slanted = (fontname == "it")
 cached_font = self._get_font(fontname)
 num = ord(sym)
 symbol_name = cached_font.font.get_glyph_name(
@@ -572,7 +577,7 @@
 else:
 raise ValueError('unrecognized symbol "%s"' % sym)
 
- return cached_font, num, symbol_name, fontsize
+ return cached_font, num, symbol_name, fontsize, slanted
 
 # The Bakoma fonts contain many pre-sized alternatives for the
 # delimiters. The AutoSizedChar class will use these alternatives
@@ -666,6 +671,8 @@
 and not category(unichr(uniindex)).startswith("L")):
 fontname = 'rm'
 
+ slanted = (fontname == 'it')
+ 
 cached_font = self._get_font(fontname)
 if found_symbol:
 try:
@@ -681,7 +688,7 @@
 glyphindex = cached_font.charmap[uniindex]
 
 symbol_name = cached_font.font.get_glyph_name(glyphindex)
- return cached_font, uniindex, symbol_name, fontsize
+ return cached_font, uniindex, symbol_name, fontsize, slanted
 
 class StandardPsFonts(Fonts):
 """
@@ -759,6 +766,8 @@
 else:
 warn("No TeX to built-in Postscript mapping for '%s'" % sym,
 MathTextWarning)
+
+ slanted = (fontname == 'it')
 font = self._get_font(fontname) 
 
 if found_symbol:
@@ -772,7 +781,8 @@
 
 if not found_symbol:
 glyph = sym = '?'
- symbol_name = font.get_char_name(glyph)
+ num = ord(glyph)
+ symbol_name = font.get_name_char(glyph)
 
 offset = 0
 
@@ -789,7 +799,8 @@
 ymin = ymin+offset,
 ymax = ymax+offset,
 # iceberg is the equivalent of TeX's "height"
- iceberg = ymax + offset
+ iceberg = ymax + offset,
+ slanted = slanted
 )
 
 self.glyphd[key] = Bunch(
@@ -963,6 +974,9 @@
 self.width = metrics.width
 self.height = metrics.iceberg
 self.depth = -(metrics.iceberg - metrics.height)
+
+ def is_slanted(self):
+ return self._metrics.slanted
 
 def get_kerning(self, next):
 """Return the amount of kerning between this and the given
@@ -2019,6 +2033,11 @@
 if isinstance(nucleus, Char):
 return nucleus.c in self._dropsub_symbols
 return False
+
+ def is_slanted(self, nucleus):
+ if isinstance(nucleus, Char):
+ return nucleus.is_slanted()
+ return False
 
 def subsuperscript(self, s, loc, toks):
 assert(len(toks)==1)
@@ -2126,7 +2145,8 @@
 if clr > 0.:
 shift_up += clr
 shift_down += clr
- x.shift_amount = DELTA * (shift_up + shift_down)
+ if self.is_slanted(nucleus):
+ x.shift_amount = DELTA * (shift_up + shift_down)
 x = Vlist([x,
 Kern((shift_up - x.depth) - (y.height - shift_down)),
 y])
@@ -2296,11 +2316,7 @@
 font_output.mathtext_backend.fonts_object = None
 return self.cache[cacheKey]
 
-if rcParams["mathtext.mathtext2"]:
- from matplotlib.mathtext2 import math_parse_s_ft2font
- from matplotlib.mathtext2 import math_parse_s_ft2font_svg
-else:
- math_parse_s_ft2font = math_parse_s_ft2font_common('Agg')
- math_parse_s_ft2font_svg = math_parse_s_ft2font_common('SVG')
+math_parse_s_ft2font = math_parse_s_ft2font_common('Agg')
+math_parse_s_ft2font_svg = math_parse_s_ft2font_common('SVG')
 math_parse_s_ps = math_parse_s_ft2font_common('PS')
 math_parse_s_pdf = math_parse_s_ft2font_common('PDF')
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.

View entire thread

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /