ЭФ>> 1) я читаю кодепоинты из UTF-8
ЭФ>> 2) пишу склеиватель, который управляется внешним конфигом
ЭФ>> 3) склеиватель склеивает кодепоинты в TextElements (которые string)
S> Зачем конфиг?
Эти TextElements — это то (последовательности CodePoint-ов),
что шрифт должен удачно отрендерить как единый объект.
Можно было бы назвать его даже RenderingElement.
Если в коде файла три буквы 'f', 'f', 'i' в виде трёх кодепоинтов,
то сами они никак не склеятся в один кодепоинт с кодом 0xFB03.
И это не фича UTF-16, а
прямо в Unicode есть такой codepoint —
https://unicodemap.org/details/0xFB03/index.html
Вы предлагаете полагаться на систему (и АПИ) рендеринга,
чтобы о таких штуках знала она, но не знал я.
Мне мешает так поступить:
1) незнание того, как этот рендеринг в точности работает
и как на него влиять (для этого, вероятно, надо редактировать определение шрифта);
2) незнание АПИ.
Если же я делаю свой конфиг, то в нём я дублирую эту информацию понятным мне способом.
Мне кажется, что это будет быстрее и проще,
чем изучать все хитросплетения существующих реализаций.