如何使用 .monospaced 系统字体设计
Posted
技术标签:
【中文标题】如何使用 .monospaced 系统字体设计【英文标题】:How to use the .monospaced system font design 【发布时间】:2019-06-15 20:09:50 【问题描述】:我正在尝试使用系统字体并应用等宽设计,但没有运气。我可以使用自定义字体函数成功地使文本等宽并传入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
选项确实按预期修改了文本。
【问题讨论】:
【参考方案1】:似乎.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))
【讨论】:
也看到了这一点,并使用反馈助手向 Apple 提交了错误报告 - FB6146888【参考方案2】:如果你只想让数字等宽,你可以尝试使用这样的东西:
Text("0123456789")
.font(Font.system(.body, design: .monospaced).monospacedDigit())
但是,这并没有规避 Xcode 11.0 beta 的明显错误。字母仍然不是等宽的。
【讨论】:
如果你只想要等宽的数字,你应该将'design'参数设置为'.default'。干杯。以上是关于如何使用 .monospaced 系统字体设计的主要内容,如果未能解决你的问题,请参考以下文章