iOS 中的等宽字体是啥?

Posted

技术标签:

【中文标题】iOS 中的等宽字体是啥?【英文标题】:What is a monospace font in iOS?iOS 中的等宽字体是什么? 【发布时间】:2012-04-15 07:41:17 【问题描述】:

我想在我的 ios 应用程序中为我的 UILabel 使用等宽字体。

很遗憾,我找不到。甚至“美国打字机”实际上也不是等宽的。 XCode 中可用的等宽字体是什么?

【问题讨论】:

Xcode 本身不附带字体。也就是说,Xcode 的默认字体至少应该是雪豹和狮子的 Menlo。 2018 真的只有 Menlo 和 Courier。如今,iOS 和 Xcode 内置了很长的字体列表并且始终可用(您可以在 Xcode 中轻松查看)。只有两种等宽字体。 ***.com/a/50792536/3939807 适用于任何自定义字体和等宽数字字体 docs.huihoo.com/apple/wwdc/2013/… 【参考方案1】:

iOS 等宽字体

Courier  
Courier-Bold  
Courier-BoldOblique  
Courier-Oblique  
CourierNewPS-BoldItalicMT  
CourierNewPS-BoldMT  
CourierNewPS-ItalicMT  
CourierNewPSMT  
Menlo-Bold  
Menlo-BoldItalic  
Menlo-Italic  
Menlo-Regular

iosfonts.com 维护所有 iOS 字体的列表。

This webpage 检测您安装的系统字体并返回一个相当全面的列表。

【讨论】:

请注意“Menlo”和“Menlo-Regular”不是完全等距的,而“Menlo-Bold”确实是等距的。对于这两种字体,当显示“2”而不是其他数字时,我看到宽度的变化很小。使用 Simulator XCode 12.4 和 iOS 14.4 观察到【参考方案2】:

看着旧的listing of fonts shipped with iOS,我看到几个一个等宽字体s

(例如。Andale Mono, Monaco, Courier New)


2018 年只有 Menlo 和 Courier。

【讨论】:

并非所有这些字体都包含在 iOS 中(Andale Mono 和 Monaco 不包含)。似乎 Courier New 是唯一的固定宽度选项。 啊,是的,当我发布我没有正确阅读图例时。 这里最有趣的是,在第一个视图中,这个答案看起来像是一个笑话,因为 iOS 只有一个等宽字体。哈哈 从iOS 7开始就有Menlo字体【参考方案3】:

如果您的意图是显示数字并且您不关心使用的特定字体,您可以这样做:

UIFont.monospacedDigitSystemFontOfSize(
    UIFont.systemFontSize(),
    weight: UIFontWeightRegular)

【讨论】:

不幸的是,iOS 9 或更高版本 我尝试了这个使用 SKSpriteLabel 的计时器计数,但标签仍然“跳跃”与所说的“等宽”系统字体。 :-( Menlo 就是这样。 在 iOS 10.2 中,使用 UIFont.monospacedDigitSystemFont(ofSize:weight:) 对我有用。我的“数字计时器”UILabel 不会“跳来跳去”。自从@Jonny 尝试后,Apple 已经修复了它,或者 UILabel 没有 SKSpriteLabel 的错误。 此字体不等宽。奇怪。【参考方案4】:

Adobe 刚刚以 TTF 和 OTF 格式发布了一个不错的等宽字体 Source Code Pro。 它已获得Open Font License 的许可,因此可在应用程序中免费使用,包括商业应用程序。 您需要将字体文件添加为 Xcode 中的资源,方法是将 info.plist 中的 UIAppFonts 键设置为指向 SourceCodeProRegular.ttf 文件。

现在你可以在你的代码中设置,例如:

    self.textView.font = [UIFont fontWithName:@"Source Code Pro" size:14];

【讨论】:

【参考方案5】:

Expanding upon @reggie-pinkham's answer,我构建了这个JS Bin for folks to use as a live test page;为了节省未来读者的时间,这里有一些在 Mavericks 上使用 iOS 模拟器的屏幕截图:

iPad Air, iOS 8.1

iPhone 6 plus, iOS 8.1

【讨论】:

【参考方案6】:

从 iOS 13 开始,旧金山 (SF) Mono 可用。找不到在界面生成器中设置它的方法,但通过代码它是:

let font = UIFont.monospacedSystemFont(ofSize: 17.0, weight: .regular)

【讨论】:

以下是如何将字体添加到 Xcode:将字体添加到 xcode developer.apple.com/documentation/uikit/text_display_and_fonts/…【参考方案7】:

如果您正在寻找数字等宽字体,请尝试“Helvetica Neue”。

【讨论】:

??那是最著名的 NOT 等宽字体。 同意。但是,数字是等宽的。 我赞同“危险建议”。 -1 这正是我所需要的!其他单声道字体都有丑陋的零。【参考方案8】:

iOS 上可用的内置字体列表:http://iosfonts.com。 Courier 和 Menlo 似乎是其中唯一的等宽字体。

【讨论】:

【参考方案9】:

SwiftUI

可以使用Font的实例方法monospacedDigit

Text("0123456789")
    .foregroundColor(.white)
    .font(Font.custom("San Francisco", size: 20).monospacedDigit())

【讨论】:

【参考方案10】:

您可以使用以下Font 工厂方法访问等宽字体:

static func system(Font.TextStyle, design: Font.Design) -> Font

例子:

let monospacedBody = Font.system(.body, .monospaced)

其他用法:

let serifTitle = Font.system(.title, .serif)

【讨论】:

【参考方案11】:

与此同时,Apple 提供了一个很好的 Monospace 字体,可以在这里下载:Apple SFUI 以下是如何将字体添加到 Xcode:Add fonts to xcode

【讨论】:

以上是关于iOS 中的等宽字体是啥?的主要内容,如果未能解决你的问题,请参考以下文章

iPad 即将推出的 Swift Playgrounds 应用程序使用的等宽字体是啥? [关闭]

如何设置 <div> 的宽度以适应等宽字体中的常量字母数?

如何设置 <div> 的宽度以适应等宽字体中的常量字母数?

等宽字体的介绍

文本输入中自动填充的 CSS 字体系列问题

等宽字体都有哪些