[test] Add script for extracting tests from text-rendering-tests

Work in progress...

https://github.com/unicode-org/text-rendering-tests
This commit is contained in:
Behdad Esfahbod 2018-01-10 01:54:12 +01:00
parent 6b4d63f295
commit 316a28f8f8
1 changed files with 45 additions and 0 deletions

View File

@ -0,0 +1,45 @@
#!/usr/bin/env python
from __future__ import print_function
import sys
import xml.etree.ElementTree as ET
# Can we extract this from HTML element itself? I couldn't.
namespaces = {
'ft': 'https://github.com/OpenType/fonttest',
'xlink': 'http://www.w3.org/1999/xlink',
}
def ns(s):
ns,s = s.split(':')
return '{%s}%s' % (namespaces[ns], s)
def unistr(s):
return ','.join('U+%04X' % ord(c) for c in s)
def glyphstr(glyphs):
out = []
for glyphname,x,y in glyphs:
if x or y:
out.append('%s@%d,%d' % (glyphname, x, y))
else:
out.append(glyphname)
return '['+'|'.join(out)+']'
html = ET.fromstring(sys.stdin.read())
found = False
for elt in html.findall(".//*[@class='expected'][@ft:id]", namespaces):
found = True
name = elt.get(ns('ft:id'))
text = elt.get(ns('ft:render'))
font = elt.get(ns('ft:font'))
glyphs = []
for use in elt.findall(".//use"):
x = int(use.get('x'))
y = int(use.get('y'))
href = use.get(ns('xlink:href'))
assert href[0] == '#'
glyphname = '.'.join(href[1:].split('/')[1].split('.')[1:])
glyphs.append((glyphname, x, y))
print("../fonts/%s:--font-size=1000 --no-clusters --no-advances:%s:%s" % (font, unistr(text), glyphstr(glyphs)))
sys.exit(0 if found else 1)