为什么某些 unicode 字符没有显示在 Interface Builder 中?
Why are certain unicode characters not showing in Interface Builder?
我想在标签中包含一些漂亮的 unicode 字符。它们在代码编辑器(使用 Menlo 字体)和 Interface Builder 的实用程序部分(屏幕右侧)中均正确显示。但是,它们在 IB 的 canvas 和应用程序的视图中都显示为问号。
在第一张图片中,您可以看到名为 "N-ary circled times operator"(代码点:0x2A02)的 unicode 字符在代码编辑器中正确显示。
在第二张图片中,您可以看到 IB 的快照,其中字符在右侧的文本字段中正确显示,但在视图中不正确。 (图片中的字体是System 17.0,其他字体问题依旧。)
看起来视图中使用的渲染是较旧浏览器的渲染(实际上,对于某些其他 unicode 符号,视图中显示的字符是您在代码编辑器中看到的字符的更丰富多彩的变体) .
有办法解决这个问题吗?
None iOS 提供的字体中包含该字符的字形。如果您在 MobileSafari 中访问 this test page,您还会看到它呈现为后备方块。
为了正确呈现此字符,您需要为您的应用程序提供一种字体,其中包含一个字形。
我发现 this article by Marcin 很有见地。这篇文章讨论了如何在幕后使用系统字体作为后备来呈现用户指定字体中不可用的字符。
It turns out that after you’re done with your font fallback list, your browser or operating system quietly adds over a dozen more fonts to help you out, including some fonts created expressly just for this purpose.
...
As an example, the four-font list on my Mac gets quietly extended to look more like this:
font-family: Joanna, Helvetica Now, Helvetica, Arial, Menlo, Monaco, .AppleSymbolsFB, LucidaGrande, CourierNewPSMT, GeezaPro, NotoNastaliqUrdu, Ayuthaya, Kailasa, 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.
我想在标签中包含一些漂亮的 unicode 字符。它们在代码编辑器(使用 Menlo 字体)和 Interface Builder 的实用程序部分(屏幕右侧)中均正确显示。但是,它们在 IB 的 canvas 和应用程序的视图中都显示为问号。
在第一张图片中,您可以看到名为 "N-ary circled times operator"(代码点:0x2A02)的 unicode 字符在代码编辑器中正确显示。
在第二张图片中,您可以看到 IB 的快照,其中字符在右侧的文本字段中正确显示,但在视图中不正确。 (图片中的字体是System 17.0,其他字体问题依旧。)
看起来视图中使用的渲染是较旧浏览器的渲染(实际上,对于某些其他 unicode 符号,视图中显示的字符是您在代码编辑器中看到的字符的更丰富多彩的变体) .
有办法解决这个问题吗?
None iOS 提供的字体中包含该字符的字形。如果您在 MobileSafari 中访问 this test page,您还会看到它呈现为后备方块。
为了正确呈现此字符,您需要为您的应用程序提供一种字体,其中包含一个字形。
我发现 this article by Marcin 很有见地。这篇文章讨论了如何在幕后使用系统字体作为后备来呈现用户指定字体中不可用的字符。
It turns out that after you’re done with your font fallback list, your browser or operating system quietly adds over a dozen more fonts to help you out, including some fonts created expressly just for this purpose.
...
As an example, the four-font list on my Mac gets quietly extended to look more like this:
font-family: Joanna, Helvetica Now, Helvetica, Arial, Menlo, Monaco, .AppleSymbolsFB, LucidaGrande, CourierNewPSMT, GeezaPro, NotoNastaliqUrdu, Ayuthaya, Kailasa, 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.