Implemented following approach:
a. decompose original transform to bitmap transform (combination
of quadrant rotation and mirror) and remainder transform
b. further decompose remainder transform to safe hinting transform
and outline compensation transform
c. perform hinting with safe transform
d. apply compensation transform to hinted outline
e. perform scan convertion
f. apply bitmap transform
As a result of this we have following improvements:
- quality of transformed text is significantly improved
if transfromation matrix is close to identity
(e.g. for small rotations)
- better consistency of the length of transformed text
- fixed number of artefacts of assymetrical transforms (see also 4912220)
- quadrant transforms/flips now produce symmetrical results
Note that quadrant rotations embeded into composite glyphs are handled
without using bitmap transforms and for those glyphs some assymetry is
still possible because of dropout control rules.
Also note that for some transforms quality will not improve and in some cases it may degrade. One example of this is rotations by large angles.
Some screenshots illustrating improvements and less obvious consequences are attached
to this bug report (sources of the actual tests are available from related bug reports).