Android如何显示音标

                 我们大家都是音标,比如说查找一个英文单词,你不知道它的发音,这时你就得借助音标来帮你完成。那我们怎么样才能在 android 中让它显示音标呐?我么就得借助一个关键字的包,它就是 kingsoft_phonetic_ue.ttf 。如果不用它的话,显示的音标就会出现乱码,这个大家一定要记住了。那我们就来看看怎么才能实现一个没有乱码的音标。

                我们先来看看有乱码和没有乱码的效果图:
  乱码          没有乱码


                我们现在需要一个金山的音标字体。一般可以通过关键字 kingsoft_phonetic_ue.ttf 查到。这是经过处理的金山字体,否则也无法使用。

                该字体文件,我是从:http://code.google.com/p/scrollwordad/的项目中得到的。在命令行下:
svn checkout http://scrollwordad.googlecode.com/svn/trunk/ scrollwordad-read-only该文件就在 assets/font 目录下,名称为 phonetic.ttf

                然后,要注意,音标不能用上述的直接复制的办法。要用类似下面的ascii码表示:

                 Im5pIEriEs

                其中I就会在该字体中显示ɪ,5是重音符号。

                下载的字体文件放置在 android 项目的 assets/font 目录下即可。另外,要为 TextView 设置如下属性,将字体设置给它:

Java代码:

  1. wordTextView=(TextView) findViewById(R.id.wordTextView);


  2. wordPhoneticTextView=(TextView) findViewById(R.id.wordPhoneticTextView);


  3. Typeface mFace = Typeface.createFromAsset(getAssets(), "font/phonetic.ttf");


  4. wordPhoneticTextView.setTypeface(mFace);
复制代码

在推上fo了个toefl单词机器人,没想到很多单词音标显示成了小方块,那就是android默认的英文字体对某些英语国际音标不支持了,当然我的Galaxy S刷了第三方ROM的,不过从网上的帖子来看,官方的字体存在一样的问题,总而言之是字体的问题了。 也搜了一些帖子,但没有很好的解决方案,默认的英文字体还是挺美观的,只是某些英语音标的编码位上缺失了相应的字符而已,Anroid使用Java作为默认开发环境,那默认的字体也应该是使用UNICODE UCS编码的,事实证明的却如此。那就很简单了,强大的字体编辑工具FontForge派上用场了。 Ubuntu仓库里面的版本太低了,可以使用GetDeb仓库来安装最新版本的FontForge。用FontForge打开Android默认的英文字体DroidSans.ttf,果然国际音标编码区域空空如也,英语音标现实不完全也就一点儿也不奇怪了。从国际音标wiki上查找到了这写符号的UNICODE编码,从DejaVuSerif.ttf和Gothic.ttf这两个字体里面提取了对应的字形(glyph)插入到DroidSans.ttf相应的BMP(Basic Multilingual Plane)编码位上。当然只补充了英语音标会用到的字符,包括ɑ,ɒ,ɔ,ə,ɛ,ɜ,ɪ,ɵ,ʃ,ʌ,ʒ,ʤ,ʦ,ʧ这几个常用音标字符。默认的字体竟然连重音(primary stress)和次重音(Secondary stress)这两个符号都没有,一并补齐了。 将制作好的字体覆盖Android默认英文字体/system/fonts/DroidSans.ttf,当然需要root权限,再看英语音标显示的相当完美了,google dictionary里面的音标也完全没有问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值