我当前的项目使用了许多字体中不存在的一些符号。到目前为止,我已经发现一些 iOS 渲染为一个盒子,所以我期待迟早会找到一个 Android 也无法渲染的东西,尽管到目前为止它在这方面做得比 iOS 更好。
有没有办法以编程方式检查给定的 Unicode 代码点是否会在屏幕上正确显示,而不是作为空方框等?
如果我可以检测到无法渲染的符号,我可以为它实施一种解决方法,而不是显示一个丑陋的框。
对于一般的 unicode 字符,您可以使用PaintCompat.hasGlyph。
您仍然应该使用 ianhanniballake 的回答中提到的 EmojiCompat 才能正确呈现表情符号。
使用Emoji Compat,所有当前的 Unicode 字符都支持回 API 19。它可以与Downloadable Fonts一起使用,确保随着其他 Unicode 字符变得标准化,您的应用程序会自动支持它们。
您可以使用hasEmojiGlyph()确认 Emoji Compat 是否支持特定字符:
EmojiCompat.get().hasEmojiGlyph(charSequence);
注意:你必须在调用它之前初始化 Emoji Compat。
EmojiCompat DevByte 视频展示了让事情正常运行的最小步骤。