朝鲜语/韩文字符在Anrdoid4.2.2上不显示Korean text isn't shown in Android 4.2.2
Korean text isn't shown in Android 4.2.2
环境
- 编译SDK:AIR 3.6/3.7
- 测试设备:Nexus 7(Android 4.2.2)/Samsung Note 2(Android 4.1.2)/Moto Atrix 2(Android 4.1.2)
- 测试模拟器:Android 4.2.2/4.1.2
现象
- App中使用朝鲜语/韩文字符(UTF-8编码)的文本,在Android4.2.2系统上不能显示,模拟器和设备均出现这个问题;
- 不仅是App的显示有这个问题,App在Android系统App列表中的名称也无法显示;
- 无论设备语言是英文、朝鲜语/韩文还是中文,这个问题都会出现;
- 同样的App放到Android 4.1.2及以下系统中均表现正常;
- 使用中文字符(UTF-8编码)的文本,无论在Android 4.2还是其他系统上,均表现正常;
- 如果希望看现象截图,可以看这里:http://forums.adobe.com/message/5361043#5361043。
解决过程
- 我在 Android 项目的 issue 列表中发现了同样的问题 Korean font/locale unavailable in Android 4.2 ,但该问题没有得到正面答复。从截图上看,提出该问题的也是中国开发者。这是个巧合吗?
- 我怀疑是AIR的问题,因为如果这是Android操作系统问题,那韩国的Android 4.2开发者怎么办?为什么我用英文搜索不到相关信息?我在 AIR Bugs and Performance Issues 上询问了这个问题;
- 2013-05-29,Adobe的员工Pahup回复我AIR 3.8 beta解决了这个问题。我在labs上看了一下,3.8 beta确实更新了,更新时间就是今天。但经过实际测试,这个问题依然存在。
- 2013-05-30,Pahup回复说需要设置字体属性,尝试之后,果然OK。
解决方法
首先确保使用AIR 3.8SDK。
若使用Flex,可以通过设置 fontFamily 来支持Korean字符显示,例如:
1<s:Label text="고속도로" fontFamily="NanumGothic"/>
若使用TextField,可以通过设置 TextFormat 的 font 属性来支持Korean字符显示, 例如:
1var __label:TextField = new TextField();
2var __ft:TextFormat = new TextFormat();
3__ft.font= "NanumGothic";
4__label.defaultTextFormat = __ft;
5__label.text = "고속도로";
以上做法,只有AIR 3.8支持。因此,我还必须要等待AIR 3.8发布。
- 文章ID:1865
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/korean-text-isnt-shown-in-android-4-2-2/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。