Revision: 5724
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=5724&view=rev
Author:   mdboom
Date:     2008-07-09 06:39:36 -0700 (Wed, 09 Jul 2008)

Log Message:
-----------
Merged revisions 5721-5723 via svnmerge from 
https://matplotlib.svn.sf.net/svnroot/matplotlib/branches/v0_91_maint

........
r5723 | mdboom | 2008-07-09 09:33:13 -0400 (Wed, 09 Jul 2008) | 2 lines

Improve mathtext radical rendering

........

Modified Paths:
--------------
    trunk/matplotlib/CHANGELOG
    trunk/matplotlib/lib/matplotlib/mathtext.py

Property Changed:
----------------
    trunk/matplotlib/


Property changes on: trunk/matplotlib
___________________________________________________________________
Name: svnmerge-integrated
   - /branches/v0_91_maint:1-5720
   + /branches/v0_91_maint:1-5723

Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG  2008-07-09 13:33:13 UTC (rev 5723)
+++ trunk/matplotlib/CHANGELOG  2008-07-09 13:39:36 UTC (rev 5724)
@@ -1,3 +1,5 @@
+2008-07-09 Improve mathtext radical rendering - MGD
+
 2008-07-08 Improve mathtext superscript placement - MGD
 
 2008-07-07 Fix custom scales in pcolormesh (thanks Matthew Turk) - MGD

Modified: trunk/matplotlib/lib/matplotlib/mathtext.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/mathtext.py 2008-07-09 13:33:13 UTC (rev 
5723)
+++ trunk/matplotlib/lib/matplotlib/mathtext.py 2008-07-09 13:39:36 UTC (rev 
5724)
@@ -322,7 +322,13 @@
             self.image, ox, oy - info.metrics.ymax, info.glyph)
 
     def render_rect_filled(self, x1, y1, x2, y2):
-        self.image.draw_rect_filled(x1, y1, x2, max(y2 - 1, y1))
+        height = max(int(y2 - y1) - 1, 0)
+        if height == 0:
+            center = (y2 + y1) / 2.0
+            y = int(center - (height + 1) / 2.0)
+        else:
+            y = int(y1)
+        self.image.draw_rect_filled(int(x1), y, ceil(x2), y + height)
 
     def get_results(self, box):
         return (self.ox,
@@ -481,8 +487,8 @@
         to be destroyed."""
         self.used_characters = None
 
-    def get_kern(self, font1, sym1, fontsize1,
-                 font2, sym2, fontsize2, dpi):
+    def get_kern(self, font1, fontclass1, sym1, fontsize1,
+                 font2, fontclass2, sym2, fontsize2, dpi):
         """
         Get the kerning distance for font between sym1 and sym2.
 
@@ -670,7 +676,8 @@
             info2 = self._get_info(font2, fontclass2, sym2, fontsize2, dpi)
             font = info1.font
             return font.get_kerning(info1.num, info2.num, KERNING_DEFAULT) / 
64.0
-        return 0.0
+        return Fonts.get_kern(self, font1, fontclass1, sym1, fontsize1,
+                              font2, fontclass2, sym2, fontsize2, dpi)
 
 class BakomaFonts(TruetypeFonts):
     """
@@ -1123,7 +1130,8 @@
             font = info1.font
             return (font.get_kern_dist(info1.glyph, info2.glyph)
                     * 0.001 * fontsize1)
-        return 0.0
+        return Fonts.get_kern(self, font1, fontclass1, sym1, fontsize1,
+                              font2, fontclass2, sym2, fontsize2, dpi)
 
     def get_xheight(self, font, fontsize, dpi):
         cached_font = self._get_font(font)
@@ -1433,6 +1441,19 @@
                     new_children.append(kern)
             self.children = new_children
 
+    # This is a failed experiment to fake cross-font kerning.
+#     def get_kerning(self, next):
+#         if len(self.children) >= 2 and isinstance(self.children[-2], Char):
+#             if isinstance(next, Char):
+#                 print "CASE A"
+#                 return self.children[-2].get_kerning(next)
+#             elif isinstance(next, Hlist) and len(next.children) and 
isinstance(next.children[0], Char):
+#                 print "CASE B"
+#                 result = self.children[-2].get_kerning(next.children[0])
+#                 print result
+#                 return result
+#         return 0.0
+
     def hpack(self, w=0., m='additional'):
         """The main duty of hpack is to compute the dimensions of the
         resulting boxes, and to adjust the glue if one of those dimensions is
@@ -2593,13 +2614,6 @@
         thickness = state.font_output.get_underline_thickness(
             state.font, state.fontsize, state.dpi)
 
-        if root is None:
-            root = Box(0., 0., 0.)
-        else:
-            root = Hlist([Char(x, state) for x in root])
-            root.shrink()
-            root.shrink()
-
         # Determine the height of the body, and add a little extra to
         # the height so it doesn't seem cramped
         height = body.height - body.shift_amount + thickness * 5.0
@@ -2616,10 +2630,18 @@
                            Fill(),
                            padded_body])
         # Stretch the glue between the hrule and the body
-        rightside.vpack(height + 1.0, depth, 'exactly')
+        rightside.vpack(height + (state.fontsize * state.dpi) / (100.0 * 12.0),
+                        depth, 'exactly')
 
         # Add the root and shift it upward so it is above the tick.
         # The value of 0.6 is a hard-coded hack ;)
+        if root is None:
+            root = Box(check.width * 0.5, 0., 0.)
+        else:
+            root = Hlist([Char(x, state) for x in root])
+            root.shrink()
+            root.shrink()
+
         root_vlist = Vlist([Hlist([root])])
         root_vlist.shift_amount = -height * 0.6
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to