如何使用.monospaced系统字体设计

DLA*_*LAN 2 ios swiftui

我试图使用系统字体并应用等宽设计,但没有运气。我可以使用自定义字体功能成功地使文本等距并传入Courier一个大小,但这不是个主意,因为字体大小是固定的。

在此处输入图片说明

VStack {
    Text("lmlmlmlm 12345678")
    Text("lmlmlmlm 12345678")
    .font(Font.system(.body, design: .monospaced))
    Text("lmlmlmlm 12345678")
    .font(Font.custom("Courier", size: 18))
}
Run Code Online (Sandbox Code Playgroud)

如何使系统字体与.monospaced设计配合使用?我认为这可能是一个bug .monospaced,因为该.serif选项确实按预期修改了文本。

Mak*_*aki 9

如果您只想将数字设为等宽,您可以尝试使用如下内容:

Text("0123456789")
    .font(Font.system(.body, design: .monospaced).monospacedDigit())
Run Code Online (Sandbox Code Playgroud)

然而,这并不能规避 Xcode 11.0 beta 的明显错误。字母仍然没有呈现为等宽。


Mo *_*ani 6

似乎.monospaced字体仅在给定固定大小时适用:

Text("monospaced")
  .font(.system(size: 14, design: .monospaced))
Run Code Online (Sandbox Code Playgroud)

给定动态文本样式(例如),此功能将无效body。但是正如您还提到的,它对于其他字体也可以正常工作,因此这可能是Xcode 11.0 beta中的一个错误,希望在以后的发行版中得到修复。


更新:

Xcode 11 beta 3已解决此问题。以下代码现在可以工作:

Text("monospaced")
    .font(.system(.body, design: .monospaced))
Run Code Online (Sandbox Code Playgroud)

  • 我也看到了这一点,并使用反馈助手向 Apple 提交了错误报告 - FB6146888 (2认同)