Revision: 3779
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=3779&view=rev
Author:   jouni
Date:     2007-09-04 13:27:36 -0700 (Tue, 04 Sep 2007)

Log Message:
-----------
More work on supporting Type 1 fonts in PDF. Sort of works now.

Modified Paths:
--------------
    trunk/matplotlib/CHANGELOG
    trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py
    trunk/matplotlib/lib/matplotlib/dviread.py

Modified: trunk/matplotlib/CHANGELOG
===================================================================
--- trunk/matplotlib/CHANGELOG  2007-09-04 19:52:23 UTC (rev 3778)
+++ trunk/matplotlib/CHANGELOG  2007-09-04 20:27:36 UTC (rev 3779)
@@ -1,3 +1,7 @@
+2007-09-04 Embedding Type 1 fonts in PDF, and thus usetex support
+           via dviread, sort of works. To test, enable it by 
+           renaming _draw_tex to draw_tex. - JKS
+
 2007-09-03 Added ability of errorbar show limits via caret or
            arrowhead ends on the bars; patch by Manual Metz. - EF
 

Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py     2007-09-04 
19:52:23 UTC (rev 3778)
+++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py     2007-09-04 
20:27:36 UTC (rev 3779)
@@ -581,7 +581,7 @@
             'CapHeight':   1000, # default guess if missing from AFM file
             'XHeight':     afmdata.get_xheight(),
             'FontFile':    fontfileObject,
-            'FontFamily':  Name(familyname),
+            'FontFamily':  familyname,
             #'FontWeight': a number where 400 = Regular, 700 = Bold
             }
         try:
@@ -1422,7 +1422,7 @@
         self.file.output(Op.grestore)
 
     def _draw_tex(self, gc, x, y, s, prop, angle):
-        # Rename to draw_tex to enable, but it doesn't work at the moment
+        # Rename to draw_tex to enable
 
         texmanager = self.get_texmanager()
         fontsize = prop.get_size_in_points()
@@ -1606,6 +1606,19 @@
             return draw_text_woven(chunks)
 
     def get_text_width_height_descent(self, s, prop, ismath):
+        if rcParams['text.usetex']:
+            texmanager = self.get_texmanager()
+            fontsize = prop.get_size_in_points()
+            dvifile = texmanager.make_dvi(s, fontsize)
+            dvi = dviread.Dvi(dvifile, 72)
+            text, boxes = iter(dvi).next()
+            # TODO: better bounding box -- this is not quite right:
+            l = min(p[0] for p in text+boxes)
+            r = max(p[0] for p in text+boxes) + fontsize
+            b = min(p[1] for p in text+boxes)
+            t = max(p[1] for p in text+boxes) + fontsize
+            # (not to even mention finding the baseline)
+            return r-l, t-b, t-b
         if ismath:
             w, h, d, glyphs, rects, used_characters = \
                 self.mathtext_parser.parse(s, 72, prop)

Modified: trunk/matplotlib/lib/matplotlib/dviread.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/dviread.py  2007-09-04 19:52:23 UTC (rev 
3778)
+++ trunk/matplotlib/lib/matplotlib/dviread.py  2007-09-04 20:27:36 UTC (rev 
3779)
@@ -15,6 +15,8 @@
             ...
 """
 
+# TODO: support for TeX virtual fonts (*.vf) which are a dvi-like format
+
 import matplotlib
 import matplotlib.cbook as mpl_cbook
 import os


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

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to