是否可以强制UIFont
为等宽?
具体来说,我使用的字体不包含等宽数字(表格数字)。创建一个等宽的修改后的字体对象,并将该字体添加到属性字符串的数字段中,效果很好。
另一种解决方案可能是将自定义属性添加到属性字符串,并修改处理文本布局的内容,以便为特定范围内的字形使用固定大小。
有许多问题建议通过覆盖-drawRect:
上的-drawTextInRect:
或UILabel
来解决类似问题(请参阅:Is it possible to alter the letter-spacing/kerning of a font with Cocoa Touch?)。这似乎是一个疯狂的解决方案,如果字符串混合使用等宽字体和非等宽字体,那将非常复杂。
还有许多问题建议,特别是关于数字,创建具有启用某些字体功能的字体描述符的字体。 (见Displaying proportionally spaced numbers (instead of monospace / tabular) on iOS)。这似乎只适用于包含这些功能的字体。我使用的字体不包括这些功能,它们没有任何效果。可以使用NSLog(@"%@", CTFontCopyFeatures ( ( __bridge CTFontRef ) myFont ));