LIGATURES 在 java/awt/font/TextAttribute 中如何工作?

How does LIGATURES work in java/awt/font/TextAttribute?

我不明白为什么那些LIGATURES可以打开和关闭?如果有一个包含 的字符串会怎样?我认为一个字符串是否包含连字。使用的字体也是如此。那么连字可以关闭是什么意思呢?

font land 中的连字是一个技术术语,意思是 "a replacement when rendering of two or more codepoints in the data with an alternate shape" 并且是字体可以执行自动替换的方式之一(其他示例是完整的单词替换,或位置替换,例如在阿拉伯语,其中一个字母的绘制方式取决于它在单词中的书写位置)。

拥有包含单个 unicode "character" 的字符串数据,然后看到由您使用的字体呈现的相同内容并没有看到连字;数据和呈现的形式是相同的,所以你所看到的在功能上等同于在你的数据中有一个 "a",并且看到相同的 "a" 由字体呈现。

但是,如果您的数据包含 多个 字母 fi(两个字母)或 ffl(三个字母)并且字体将其转换为单个字形分别为 ,然后那些 连字:数据中的内容和呈现的内容不同。因此,您可以打开或关闭 行为:

"Should the font be allowed to perform replacements in my data based on what the type designers for that font thought looks better, or should it render my data exactly, without ligature substitutions?"