diff options
author | Behdad Esfahbod <behdad@behdad.org> | 2014-05-27 15:54:04 -0400 |
---|---|---|
committer | Behdad Esfahbod <behdad@behdad.org> | 2014-05-27 15:54:04 -0400 |
commit | 9fed95216a963b6ef4733d68a691f0ac965b120d (patch) | |
tree | 0b69f7abe01ef85b37a09e5aa9964d62366b1ef3 | |
parent | ec5f5150e2c9ba53696fbddae504a004398b367a (diff) | |
download | fonttools-9fed95216a963b6ef4733d68a691f0ac965b120d.tar.gz |
Fix rangeShift calculations for count=0 in sfnt, cmap, and kern
-rw-r--r-- | Lib/fontTools/ttLib/sfnt.py | 2 | ||||
-rw-r--r-- | Lib/fontTools/ttLib/tables/_c_m_a_p.py | 2 | ||||
-rw-r--r-- | Lib/fontTools/ttLib/tables/_k_e_r_n.py | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/Lib/fontTools/ttLib/sfnt.py b/Lib/fontTools/ttLib/sfnt.py index c6bc93a9..95679e99 100644 --- a/Lib/fontTools/ttLib/sfnt.py +++ b/Lib/fontTools/ttLib/sfnt.py @@ -483,7 +483,7 @@ def getSearchRange(n): exponent = maxPowerOfTwo(n) searchRange = (2 ** exponent) * 16 entrySelector = exponent - rangeShift = n * 16 - searchRange + rangeShift = max(0, n * 16 - searchRange) return searchRange, entrySelector, rangeShift diff --git a/Lib/fontTools/ttLib/tables/_c_m_a_p.py b/Lib/fontTools/ttLib/tables/_c_m_a_p.py index d0c6c41f..a3fb6ccc 100644 --- a/Lib/fontTools/ttLib/tables/_c_m_a_p.py +++ b/Lib/fontTools/ttLib/tables/_c_m_a_p.py @@ -781,7 +781,7 @@ class cmap_format_4(CmapSubtable): maxExponent = maxPowerOfTwo(segCount) searchRange = 2 * (2 ** maxExponent) entrySelector = maxExponent - rangeShift = 2 * segCount - searchRange + rangeShift = max(0, 2 * segCount - searchRange) charCodeArray = array.array("H", endCode + [0] + startCode) idDeltaArray = array.array("H", idDelta) diff --git a/Lib/fontTools/ttLib/tables/_k_e_r_n.py b/Lib/fontTools/ttLib/tables/_k_e_r_n.py index 9fa9dd85..b8e60d39 100644 --- a/Lib/fontTools/ttLib/tables/_k_e_r_n.py +++ b/Lib/fontTools/ttLib/tables/_k_e_r_n.py @@ -118,7 +118,7 @@ class KernTable_format_0(object): nPairs = len(self.kernTable) entrySelector = sfnt.maxPowerOfTwo(nPairs) searchRange = (2 ** entrySelector) * 6 - rangeShift = (nPairs - (2 ** entrySelector)) * 6 + rangeShift = max(0, (nPairs - (2 ** entrySelector)) * 6) data = struct.pack(">HHHH", nPairs, searchRange, entrySelector, rangeShift) # yeehee! (I mean, turn names into indices) |