我正在尝试使用系统字体并应用等宽设计,但是没有运气。我可以使用自定义字体功能成功地使文本等距,并传入Courier
和大小,但这不是个主意,因为字体大小是固定的。
VStack {
Text("lmlmlmlm 12345678")
Text("lmlmlmlm 12345678")
.font(Font.system(.body, design: .monospaced))
Text("lmlmlmlm 12345678")
.font(Font.custom("Courier", size: 18))
}
如何使系统字体与.monospaced
设计一起使用?我认为这可能是.monospaced
的错误,因为.serif
选项确实按预期修改了文本。
答案 0 :(得分:2)
似乎.monospaced
字体仅在给定固定大小时适用:
Text("monospaced")
.font(.system(size: 14, design: .monospaced))
给定诸如body
之类的动态文本样式,此方法将无效。但是,正如您还提到的那样,它对于其他字体也可以正常工作,因此这可能是Xcode 11.0 beta中的一个错误,希望在以后的发行版中得到解决。
此问题已通过 Xcode 11 beta 3 修复。现在,以下代码可以工作:
Text("monospaced")
.font(.system(.body, design: .monospaced))
答案 1 :(得分:2)
如果您只想使数字等距,则可以尝试使用以下方式:
Text("0123456789")
.font(Font.system(.body, design: .monospaced).monospacedDigit())
但是,这并没有规避Xcode 11.0 beta的明显错误。字母仍不等距呈现。