With AAT, the same lookup data structure can be used for various
types of values. In the morx table, the values are glyph IDs or
glyph classes, which both are encoded as 16-bit unsigned integers.
In other AAT tables, however, the values can be different data types
with different encodings. By passing a `valueWriter` callback and
explicit `valueSize`, we prepare for eventually templatizing
the building of AATLookups.
Also, assert that the called writer wrote the exact number of bytes
that was predicted when figuring out what format should be used for
encoding an AATLookup.
On some Python builds, Unicode characters above U+FFFF get escaped
to two question marks ?? instead of just one ?. This is not a real
problem, but for testing it is a nuisance when the results depend
on the platform.
This class had been added in the `morx` branch, and I wanted
to merge it into master. While writing tests for it, I noticed
that `otConverters` has meanwhile been extended by an `UInt8`
converter. Therefore, only adding a test for the existing
implementation.
I've got some changes in the `morx` branch which I'd like to merge
into master. So I'm writing this unit test as an example how to
test `otConverter` code.