|
From: <jo...@us...> - 2009-09-20 13:19:33
|
Revision: 7796
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7796&view=rev
Author: jouni
Date: 2009-09-20 13:19:25 +0000 (Sun, 20 Sep 2009)
Log Message:
-----------
Fix off-by-one error in dviread.Tfm
Modified Paths:
--------------
branches/v0_99_maint/CHANGELOG
branches/v0_99_maint/lib/matplotlib/dviread.py
Modified: branches/v0_99_maint/CHANGELOG
===================================================================
--- branches/v0_99_maint/CHANGELOG 2009-09-20 13:07:15 UTC (rev 7795)
+++ branches/v0_99_maint/CHANGELOG 2009-09-20 13:19:25 UTC (rev 7796)
@@ -1,6 +1,5 @@
-2009-09-20 Prevent exception in case of missing height and depth information
- in a TeX font - this doesn't make the typesetting right, but prevents
- the crash - JKS
+2009-09-20 Fix off-by-one error in dviread.Tfm, and additionally protect
+ against exceptions in case a dvi font is missing some metrics - JKS
2009-09-15 Don't fail on AFM files containing floating-point bounding boxes - JKS
Modified: branches/v0_99_maint/lib/matplotlib/dviread.py
===================================================================
--- branches/v0_99_maint/lib/matplotlib/dviread.py 2009-09-20 13:07:15 UTC (rev 7795)
+++ branches/v0_99_maint/lib/matplotlib/dviread.py 2009-09-20 13:19:25 UTC (rev 7796)
@@ -415,7 +415,7 @@
scale, tfm, texname, vf
self.size = scale * (72.0 / (72.27 * 2**16))
try:
- nchars = max(tfm.width.iterkeys())
+ nchars = max(tfm.width.iterkeys()) + 1
except ValueError:
nchars = 0
self.widths = [ (1000*tfm.width.get(char, 0)) >> 20
@@ -619,12 +619,11 @@
widths, heights, depths = \
[ struct.unpack('!%dI' % (len(x)/4), x)
for x in (widths, heights, depths) ]
- for i in range(ec-bc):
- self.width[bc+i] = _fix2comp(widths[ord(char_info[4*i])])
- self.height[bc+i] = _fix2comp(heights[ord(char_info[4*i+1]) >> 4])
- self.depth[bc+i] = _fix2comp(depths[ord(char_info[4*i+1]) & 0xf])
+ for idx, char in enumerate(range(bc, ec+1)):
+ self.width[char] = _fix2comp(widths[ord(char_info[4*idx])])
+ self.height[char] = _fix2comp(heights[ord(char_info[4*idx+1]) >> 4])
+ self.depth[char] = _fix2comp(depths[ord(char_info[4*idx+1]) & 0xf])
-
class PsfontsMap(object):
"""
A psfonts.map formatted file, mapping TeX fonts to PS fonts.
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|