强制UIFont渲染为Monospaced

Ant*_*tox 5 cocoa-touch objective-c uifont ios

是否有可能迫使a UIFont等宽?

具体来说,我使用的字体不包含等宽数字(表格数字).创建一个等宽的修改后的字体对象,并将该字体添加到属性字符串的数字段中,效果很好.

另一种解决方案可能是将自定义属性添加到属性字符串,并修改处理文本布局的内容,以便在特定范围内使用固定大小的字形.

没有工作的事情:

有一些问题是提出通过覆盖解决类似问题-drawRect:-drawTextInRect:UILabel(参见:是否有可能改变与可可触摸字体的字母间距/字距?).这似乎是一个疯狂的解决方案,如果字符串混合使用等宽字体和非等宽字体,那将会非常复杂.

还有许多问题建议,特别是关于数字,创建具有启用某些字体特征的字体描述符的字体.(请参阅在iOS上显示按比例分隔的数字(而不是等宽/表格)).这似乎只适用于包含这些功能的字体.我使用的字体不包括这些功能,它们没有任何效果.可以使用类似的东西来检查字体功能NSLog(@"%@", CTFontCopyFeatures ( ( __bridge CTFontRef ) myFont ));