android – 在所有字体中是否缺少任何unicode字符的字形?

前端之家收集整理的这篇文章主要介绍了android – 在所有字体中是否缺少任何unicode字符的字形?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Is there a “glyph not found” character?8个
在Android上,我希望能够检测所使用的字体是否可以显示某个字符,但据我所知,这是不可能的,如 Check if custom font can display character所示的常规方法

为了检测这个,我正在写一个我要检查的字符到一个位图,然后我写另一个我知道的字符丢失到另一个位图并比较位图的内容.如果它们相等则缺少角色.

问题是,是否有任何unicode角色的字形(或多或少)保证在Android手机上常用的字体上缺失?

在维基百科上阅读它时,Unicode replacement character听起来很有希望:

It is used to indicate problems when a system is not able to render a
stream of data to a correct symbol. It is most commonly seen when a
font does not contain a character,but is also seen when the data is
invalid and does not match any character

但是经过一些测试后,我发现这个角色并不是用来表示我的Windows 7计算机或我测试过的Android手机(Motorola Atrix)上缺少的字形.

解决方法

用于呈现所用字体中缺少的字形的字形没有任何指定的Unicode值.在实际字体中,字形ID 0应始终为 .notdef glyph,用于缺少字形的所有字符.但是,这些信息不可能来自Android上的字体,因此无法直接使用.notdef字形.

在Unicode中有许多保留/未分配的代码点,我的有限测试表明这些代码点是使用.notdef字形呈现的.因此,通过使用U+0978(Devanagari block中间的保留代码点),我可以检测到我想要测试的字体中是否存在其他有效的已知字符.

这不是一个未来的证明解决方案,因为Unicode Consortium将来可能会将新的字形添加到保留的代码点.但是对于我的需求来说,它已经足够好了,因为我想做的事情是在不久的将来不再相关的临时事情.

更新:

看看U 0978的解决方案并不长久.该字符在Unicode 7.0版本的June 2014添加.另一个选项是使用unicode中存在的字形,但不太可能以普通字体使用.

Early Dynastic Cuneiform块中的U+124AB可能是许多字体中根本不存在的东西.

猜你在找的Android相关文章