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)

Reply via email to