这发生在TextKit上。但是当我使用CoreText时,一切都很好。
Xcode调试窗口中的富文本也存在同样的问题。
那么,它是TextKit的错误吗?除了用CoreText替换TextKit还有什么解决方案吗?
答案 0 :(得分:0)
我试过了,CoreText和TextKit之间确实存在差异。 我猜它是由字体回退函数引起的。
例如,我们有一个字符串"啦☜啦",并设置字体。如果给定的字体没有包含所有字符,通常会有一些后备字体列表,如:
English font
CJK font
Emoji font
Unicode font (support almost all the unicode character)
有两种方法可以找到后备字体。
因此,如果TextKit使用第二种方式,那么两个“啦”可能会使用不同的字体,因为字符是'☜'。
要解决此问题,您可以使用属性字符串并提供'☜'一个不同的字体大小来打破后备循环,然后第二个'啦'使用CJK字体。