【问题标题】:Can I check if a Unicode codepoint will be displayable under Android?我可以检查 Unicode 代码点是否可以在 Android 下显示吗?
【发布时间】:2017-09-02 01:31:06
【问题描述】:

我当前的项目使用了许多字体中不存在的一些符号。到目前为止,我已经发现一些 iOS 渲染为一个盒子,所以我期待迟早会找到一个 Android 也无法渲染的,尽管到目前为止它在这方面做得比 iOS 更好。

有没有办法以编程方式检查给定的 Unicode 代码点是否会在屏幕上正确显示,而不是作为一个空的方框等?

如果我可以检测到无法渲染的符号,我可以为其实施解决方法,而不是显示丑陋的框。

【问题讨论】:

  • 字体中使用和缺少哪些符号?
  • 到目前为止,我还没有在 Android 上找到一个丢失的符号,但我发现 iOS 上没有新的亚美尼亚货币符号 ֏ 所以我假设这不是一次性的。
  • 我的合作开发者发现我无法测试的早期版本的 Android 没有某些 Unicode 国旗表情符号。

标签: android unicode fonts glyph codepoint


【解决方案1】:

对于一般的 unicode 字符,您可以使用 PaintCompat.hasGlyph

您仍应使用 ianhanniballake 的回答中提到的 EmojiCompat 才能正确呈现表情符号。

【讨论】:

    【解决方案2】:

    使用 Emoji Compat,所有当前的 Unicode 字符都支持回 API 19。它可以与 Downloadable Fonts 一起使用,确保随着其他 Unicode 字符标准化,您的应用会自动支持它们。

    您可以通过hasEmojiGlyph() 确认 Emoji Compat 是否支持特定字符:

    EmojiCompat.get().hasEmojiGlyph(charSequence);
    

    注意:在调用它之前你必须有initialized Emoji Compat

    EmojiCompat DevByte video 显示了让工作正常运行的最少步骤。

    【讨论】:

    • 我关心的字符不是 Emoji。这仍然适用吗?
    • 我在 hasEmojiGlyph() 方法上添加了一条注释,它应该准确地告诉您将呈现为框(如果返回 false)与富字符。
    • 对于一般的 unicode 字符,您可以使用 PaintCompat.hasGlyph。 developer.android.com/reference/android/support/v4/graphics/…
    猜你喜欢
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 2014-11-14
    相关资源
    最近更新 更多