|
14 | 14 | from fontTools.misc.py23 import * |
15 | 15 | from fontTools.misc.py23 import PY2, PY3 |
16 | 16 |
|
| 17 | +import os |
17 | 18 | import time |
| 19 | +import calendar |
18 | 20 | import unicodedata |
19 | 21 | from fontTools.misc.textTools import binary2num |
20 | 22 | from fontTools.misc.arrayTools import unionRect |
@@ -60,21 +62,19 @@ def styleMapFamilyNameFallback(info): |
60 | 62 | # head |
61 | 63 |
|
62 | 64 | def dateStringForNow(): |
63 | | - year, month, day, hour, minute, second, weekDay, yearDay, isDST = time.localtime() |
64 | | - year = str(year) |
65 | | - month = str(month).zfill(2) |
66 | | - day = str(day).zfill(2) |
67 | | - hour = str(hour).zfill(2) |
68 | | - minute = str(minute).zfill(2) |
69 | | - second = str(second).zfill(2) |
70 | | - return "%s/%s/%s %s:%s:%s" % (year, month, day, hour, minute, second) |
| 65 | + return time.strftime("%Y/%m/%d %H:%M:%S", time.gmtime()) |
71 | 66 |
|
72 | 67 |
|
73 | 68 | def openTypeHeadCreatedFallback(info): |
74 | 69 | """ |
75 | | - Fallback to now. |
| 70 | + Fallback to the environment variable SOURCE_DATE_EPOCH if set, otherwise |
| 71 | + now. |
76 | 72 | """ |
77 | | - return dateStringForNow() |
| 73 | + if "SOURCE_DATE_EPOCH" in os.environ: |
| 74 | + t = datetime.utcfromtimestamp(int(os.environ["SOURCE_DATE_EPOCH"])) |
| 75 | + return t.strftime("%Y/%m/%d %H:%M:%S") |
| 76 | + else: |
| 77 | + return dateStringForNow() |
78 | 78 |
|
79 | 79 |
|
80 | 80 | # hhea |
@@ -622,9 +622,9 @@ def intListToNum(intList, start, length): |
622 | 622 |
|
623 | 623 | def dateStringToTimeValue(date): |
624 | 624 | try: |
625 | | - t = calendar.timegm(date, "%Y/%m/%d %H:%M:%S") |
626 | | - return long(time.mktime(t)) |
627 | | - except OverflowError: |
| 625 | + t = time.strptime(date, "%Y/%m/%d %H:%M:%S") |
| 626 | + return long(calendar.timegm(t)) |
| 627 | + except ValueError: |
628 | 628 | return long(0) |
629 | 629 |
|
630 | 630 |
|
|
0 commit comments