Empty rearrangements in AAT

Originator:sascha.brawer
Number:rdar://36384131 Date Originated:2018-01-09
Status:Open Resolved:
Product:CoreGraphics Product Version:
Classification: Reproducible:Always
 
Area:
Core Graphics

Summary:
In CoreText’s implementation of the AAT ‘morx’ table, rearrangement verbs get ignored when the variable-length part of the marked sequence is empty. This behavior does not match the ‘morx’ specification, which says that ‘x’ represents an arbitrary sequence of glyphs. It’s not 100% clear from the spec whether ‘arbitrary sequence’ includes zero-length sequences, but it would certainly make sense to interpret the spec this way — other implementations (eg. fontkit) have taken this path. (It might be worth clarifying the spec).

Steps to Reproduce:
Run the Unicode text rendering test suite [https://github.com/unicode-org/text-rendering-tests] and check test case MORX-4: [https://rawgit.com/unicode-org/text-rendering-tests/master/reports/CoreText.html#MORX-4]. The test fonts are linked from the test descriptions.

Expected Results:
Tests should pass, as they do with fontkit: [https://rawgit.com/unicode-org/text-rendering-tests/master/reports/fontkit.html#MORX-4]

Actual Results:
Tests for CoreText are failing. See [https://rawgit.com/unicode-org/text-rendering-tests/master/reports/CoreText.html#MORX-4] for test report.

Version/Build:
macOS 10.12.6 (16G1114)

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!