Package: fonttools
Version: 1.99+2.0b1+cvs20031014-1
Severity: important
Tags: patch
It is not summer now, but fonttools do not work because of taylight
saving time is active. When I run ttx I get (timezone Europe/Kiev):
$ LANG=C date
Tue Sep 13 14:54:57 EEST 2005
Dumping "FreeMono.ttf" to "FreeMono.ttx"...
Dumping 'GlyphOrder' table...
Traceback (most recent call last):
File "/usr/bin/ttx", line 11, in ?
ttx.main(sys.argv[1:])
File "/usr/lib/python2.3/site-packages/FontTools/fontTools/ttx.py",
line 261, in main
process(jobs, options)
File "/usr/lib/python2.3/site-packages/FontTools/fontTools/ttx.py",
line 246, in process
action(input, output, options)
File "/usr/lib/python2.3/site-packages/FontTools/fontTools/ttx.py",
line 161, in ttDump
disassembleInstructions=options.disassembleInstructions)
File
"/usr/lib/python2.3/site-packages/FontTools/fontTools/ttLib/__init__.py",
line 230, in saveXML
self._tableToXML(tableWriter, tag, progress)
File
"/usr/lib/python2.3/site-packages/FontTools/fontTools/ttLib/__init__.py",
line 245, in _tableToXML
table = self[tag]
File
"/usr/lib/python2.3/site-packages/FontTools/fontTools/ttLib/__init__.py",
line 333, in __getitem__
tableClass = getTableClass(tag)
File
"/usr/lib/python2.3/site-packages/FontTools/fontTools/ttLib/__init__.py",
line 715, in getTableClass
module = getTableModule(tag)
File
"/usr/lib/python2.3/site-packages/FontTools/fontTools/ttLib/__init__.py",
line 704, in getTableModule
__import__("fontTools.ttLib.tables." + pyTag)
File
"/usr/lib/python2.3/site-packages/FontTools/fontTools/ttLib/tables/_h_e_a_d.py",
line 108, in ?
mac_epoch_diff = calc_mac_epoch_diff()
File
"/usr/lib/python2.3/site-packages/FontTools/fontTools/ttLib/tables/_h_e_a_d.py",
line 104, in calc_mac_epoch_diff
assert time.gmtime(safe_epoch)[:6] == safe_epoch_t[:6]
AssertionError
When I run it with TZ=EEST it works. The reason is that package uses
function (or variable) time.timezone that returns offset for winter
timezone that is not active now. Attached patch fixes this bug.
-- System Information:
Debian Release: testing/unstable
APT prefers unstable
APT policy: (990, 'unstable')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.13
Locale: LANG=uk_UA.UTF-8, LC_CTYPE=uk_UA.UTF-8 (charmap=UTF-8)
Versions of packages fonttools depends on:
ii libc6 2.3.5-6 GNU C Library: Shared libraries an
ii python2.3 2.3.5-8 An interactive high-level object-o
ii python2.3-numeric 23.8-4 Numerical (matrix-oriented) Mathem
ii python2.3-xml 0.8.4-1 XML tools for Python (2.3.x)
fonttools recommends no packages.
-- debconf-show failed
diff -urN
fonttools-1.99+2.0b1+cvs20031014/Lib/fontTools/ttLib/tables/_h_e_a_d.py
fonttools-mod/Lib/fontTools/ttLib/tables/_h_e_a_d.py
--- fonttools-1.99+2.0b1+cvs20031014/Lib/fontTools/ttLib/tables/_h_e_a_d.py
2003-02-23 21:40:07.000000000 +0200
+++ fonttools-mod/Lib/fontTools/ttLib/tables/_h_e_a_d.py 2005-09-13
14:49:42.000000000 +0300
@@ -100,7 +100,10 @@
to the epoch on this machine.
"""
safe_epoch_t = (1972, 1, 1, 0, 0, 0, 0, 0, 0)
- safe_epoch = time.mktime(safe_epoch_t) - time.timezone
+ if time.daylight:
+ safe_epoch = time.mktime(safe_epoch_t) - time.altzone
+ else:
+ safe_epoch = time.mktime(safe_epoch_t) - time.timezone
assert time.gmtime(safe_epoch)[:6] == safe_epoch_t[:6]
seconds1904to1972 = 60 * 60 * 24 * (365 * (1972-1904) + 17) # thanks,
Laurence!
return long(safe_epoch - seconds1904to1972)