我想在标签中包含一些漂亮的unicode字符。它们在代码编辑器(使用Menlo字体)和Interface Builder的Utilities部分(屏幕右侧)中正确显示。但是,它们在IB画布的视图和应用程序中都显示为问号。
在第一张图片中,您可以看到代码编辑器中正确显示了名为“N-ary circled times operator”(Codepoint:0x2A02)的unicode字符。
在第二张图片中,您可以看到IB的快照,其中字符在右侧的文本字段中正确显示,但不在视图中。 (图片中的字体是System 17.0,但问题仍然存在于所有其他字体中。)
看起来在视图中使用的渲染是旧浏览器的渲染(实际上,对于其他一些unicode符号,视图中显示的字符是您在代码编辑器中看到的字符的更多彩变体)。 / p>
有没有办法解决这个问题?
答案 0 :(得分:1)
iOS提供的所有字体都不包含该字符的字形。如果您在MobileSafari中访问this test page,您还会看到它呈现为后备广场。
为了正确呈现此字符,您需要在应用程序中提供包含字形的字体。
答案 1 :(得分:0)
我发现 this article by Marcin 很有见地。文章讨论了如何在幕后使用系统字体作为后备来呈现用户指定字体中不可用的字符。
<块引用>事实证明,在您完成字体后备列表后,您的浏览器或操作系统会悄悄添加十多种字体来帮助您,包括一些专门为此目的而创建的字体。
...
举个例子,我的 Mac 上的四种字体列表悄悄地扩展到更像这样:
<块引用>font-family:Joanna、Helvetica Now、Helvetica、Arial、Menlo、Monaco ,.AppleSymbolsFB,LucidaGrande,CourierNewPSMT,GeezaPro,NotoNastaliqUrdu,大城,凯拉萨,PingFangSC,PingFangTC,HiraginoSans-W3,HiraginoSansGB-W3,PingFangHK,AppleSDGothicNeo,KohinoorBangla,KohinoorDevanagari,KohinoorGujarati,MuktaMahee,NotoSansKannada,KhmerSangamMN,LaoSangamMN,MalayalamSangamMN,NotoSansMyanmar, NotoSansZawgyi、NotoSansOriya、SinhalaSangamMN、TamilSangamMN、KohinoorTelugu、NotoSansArmenian、EuphemiaUCAS、STIXGeneral、Galvji、Kefa、.NotoSansUniversal、AppleColorEmoji、.LastResort;
对于移动设备,我有一种感觉,系统后备字体没有桌面版本那么多。我会推测这是由于需要存储在内存相对较低的移动设备上。我预计随着移动设备上的大内存变得越来越普遍,具有更大 unicode 支持的系统后备字体将包含在 iOS 和 Android 等移动操作系统中。