[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:
parent
6b4d63f295
commit
316a28f8f8
|
@ -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)
|
Loading…
Reference in New Issue