Android WebView 不呈现表情符号 U+1F642、U+1F917

Android WebView does not render emoji U+1F642, U+1F917

如果我在 Android WebView 中加载 Unicode 表情符号图表 (http://unicode.org/emoji/charts/full-emoji-list.html),U+1F642 和 U+1F917 的表情符号无法正确呈现。

mWebView = (WebView) findViewById(R.id.web_view);

// Calling all or none of the next 3 calls does NOT change the behavior
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new WebViewClient());

mWebView.loadUrl("http://unicode.org/emoji/charts/full-emoji-list.html");

这特别奇怪,因为在第一列中表情符号没有呈现,但在 Google 列中它们呈现得很好。

见附图。红色框显示了两个表情符号。请注意,在第 3 列中,它们没有正确呈现。在 Google 列(蓝色框)中,它们确实呈现正确。编辑:这是因为蓝色框中的东西是图像。

知道为什么某些表情符号无法在 Android WebView 中正确呈现吗?

这取决于您使用的 Android 的 WebView 版本。

在 Unicode 7.0 中添加了微微笑脸,在 Android 5.0 中开始支持。

拥抱脸在 Unicode 8.0 中添加,Android 6.0.1 开始支持。

我假设您一定是在较旧的 WebView 版本上查看此内容。加载其他列是因为它们实际上是图像,而不是 Unicode 字符(表情符号)本身。