Как LIGATURES работает в java/awt/font/TextAttribute?

Я не понимаю, почему эти ЛИГАТУРЫ можно включать и выключать? Что должно произойти, если есть строка, содержащая ? Я думаю, что строка содержит лигатуру или нет. То же самое с использованным шрифтом. Так что же означает, что лигатура может быть отключена?

1 ответ

Решение

Лигатура в области шрифтов - это технический термин, означающий "замену при рендеринге двух или более кодовых точек в данных с альтернативной формой", и это один из способов, с помощью которых шрифты могут выполнять автоматические замены (другие примеры - полные замены слов или позиционные замены, которые важны, например, на арабском языке, где буква нарисована по-разному в зависимости от того, где в слове написано).

Наличие строковых данных, содержащих один Unicode-символ а затем, увидев то же самое, отрисованное шрифтом, который вы используете, вы не увидите лигатуру; Данные и визуализированная форма одинаковы, поэтому то, что вы видите, функционально идентично наличию "а" в ваших данных и тому же "а", отображаемому шрифтом.

Тем не менее, если ваши данные содержат несколько букв fi (две буквы) или ffl (три буквы) и шрифт превращает это в один глиф или же соответственно, это лигатуры: что в данных и что визуализируется, разные. Так что это то поведение, которое вы можете включить или выключить:

"Следует ли разрешить шрифту выполнять замены в моих данных на основе того, что дизайнеры шрифтов для этого шрифта считают лучше, или он должен точно отображать мои данные без лигатурных замен?"

Другие вопросы по тегам