Qt 4.8的文本渲染支持哪些字形替换特性?我正在聘请一个字体设计师来创建一个需要OpenType字形替换(GSUB)的字体,他想知道可以使用哪些特性。我指的是像标准连字(liga)、自选连字(dlig)、所有备用字形(aalt)等特性。完整的GSUB特性列表可以在这篇文章的末尾找到:http://ilovetypography.com/OpenType/opentype-features.html。
我联系了OpenType邮件列表和一个Qt开发者(江),并找出了以下细节:
通过使用“-qt-harfbuzz”配置重新编译Qt,我可以在Qt 5.3中获得扩展的OpenType功能。这启用了实验性的Harfbuzz-NG支持,然后涵盖以下GSUB功能:CALT、CCMP、CLIG、CURS、KERN、LIGA、LOCL、MARK、MKMK、RLIG。Qt 5.3的默认构建仅支持CCMP、LIGA和CLIG。
在Windows和Linux上,Qt 4.8仍使用旧版Harfbuzz,只有少数几个GSUB功能可用(CCMP、LIGA、CLIG)。Qt 4.8中没有实验性Harfbuzz-NG的选项。可能可以在旧版Harfbuzz源代码(Qt的一部分)中启用更多功能,并重新编译Qt,但这未经验证。我正在进行测试。
在Mac上,情况不同。Qt 4.8和5.3默认支持更多的GSUB功能,包括CALT。以下是江的解释:“据我所记,Qt 4.8 Mac在这里是异类,因为它默认使用Core Text,而Linux和Windows使用旧版HarfBuzz。Core Text应用其自己的OpenType功能集,因此结果与您使用旧版HarfBuzz得到的结果不同,后者可能默认不应用calt。”