merge_test: test merging all possible OS/2 versions with one another
This commit is contained in:
parent
2cef07af80
commit
669b1395cb
@ -1,7 +1,12 @@
|
|||||||
|
import io
|
||||||
|
import itertools
|
||||||
from fontTools.misc.py23 import *
|
from fontTools.misc.py23 import *
|
||||||
from fontTools import ttLib
|
from fontTools import ttLib
|
||||||
|
from fontTools.ttLib.tables._g_l_y_f import Glyph
|
||||||
|
from fontTools.fontBuilder import FontBuilder
|
||||||
from fontTools.merge import *
|
from fontTools.merge import *
|
||||||
import unittest
|
import unittest
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
class MergeIntegrationTest(unittest.TestCase):
|
class MergeIntegrationTest(unittest.TestCase):
|
||||||
@ -113,6 +118,53 @@ class CmapMergeUnitTest(unittest.TestCase):
|
|||||||
self.assertEqual(self.merger.duplicateGlyphsPerFont, [{}, {'space#0': 'space#1'}])
|
self.assertEqual(self.merger.duplicateGlyphsPerFont, [{}, {'space#0': 'space#1'}])
|
||||||
|
|
||||||
|
|
||||||
|
def _compile(ttFont):
|
||||||
|
buf = io.BytesIO()
|
||||||
|
ttFont.save(buf)
|
||||||
|
buf.seek(0)
|
||||||
|
return buf
|
||||||
|
|
||||||
|
|
||||||
|
def _make_fontfile_with_OS2(*, version, **kwargs):
|
||||||
|
upem = 1000
|
||||||
|
glyphOrder = [".notdef", "a"]
|
||||||
|
cmap = {0x61: "a"}
|
||||||
|
glyphs = {gn: Glyph() for gn in glyphOrder}
|
||||||
|
hmtx = {gn: (500, 0) for gn in glyphOrder}
|
||||||
|
names = {"familyName": "TestOS2", "styleName": "Regular"}
|
||||||
|
|
||||||
|
fb = FontBuilder(unitsPerEm=upem)
|
||||||
|
fb.setupGlyphOrder(glyphOrder)
|
||||||
|
fb.setupCharacterMap(cmap)
|
||||||
|
fb.setupGlyf(glyphs)
|
||||||
|
fb.setupHorizontalMetrics(hmtx)
|
||||||
|
fb.setupHorizontalHeader()
|
||||||
|
fb.setupNameTable(names)
|
||||||
|
fb.setupOS2(version=version, **kwargs)
|
||||||
|
|
||||||
|
return _compile(fb.font)
|
||||||
|
|
||||||
|
|
||||||
|
def _merge_and_recompile(fontfiles, options=None):
|
||||||
|
merger = Merger(options)
|
||||||
|
merged = merger.merge(fontfiles)
|
||||||
|
buf = _compile(merged)
|
||||||
|
return ttLib.TTFont(buf)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"v1, v2", list(itertools.permutations(range(5+1), 2))
|
||||||
|
)
|
||||||
|
def test_merge_OS2_mixed_versions(v1, v2):
|
||||||
|
# https://github.com/fonttools/fonttools/issues/1865
|
||||||
|
fontfiles = [
|
||||||
|
_make_fontfile_with_OS2(version=v1),
|
||||||
|
_make_fontfile_with_OS2(version=v2),
|
||||||
|
]
|
||||||
|
merged = _merge_and_recompile(fontfiles)
|
||||||
|
assert merged["OS/2"].version == max(v1, v2)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
import sys
|
import sys
|
||||||
sys.exit(unittest.main())
|
sys.exit(unittest.main())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user