android音标,安卓系统如何正确显示音标

安卓系统不能正确显示音标,并不是新鲜的话题。和别人一样,我的安卓没啥特别的,同样遭受这个问题折磨。

不正确的音标显示

为了解决这个问题,开始度娘。。。慢慢在这个问题上有点眉目了。

1,在单一程序里无法正确显示音标

如果你是这个程序的开发者或者支持者,可以选择嵌入合适字体解决这个问题。解决方式如下:

a, 下载合适的带音标字体 Lucida Sans Unicode或者segoeui.ttf字体

b, 复制下载的lsansuni.ttf字体文件到android项目中assets文件夹

c, 使用自定义字体:

Typeface myTypeface = Typeface.createFromAsset(getAssets(), 'lsansuni.ttf');

mExplainView.setTypeface(myTypeface);

对于大部分安卓用户来说,对开发了解程度不深,并不具备通过这种方式解决问题的能力。

2, 整个系统无法显示音标,不局限于单一程序。

这个问题在网上已经讨论很久了,结论也相当明确,要么是自己替换的字体不包含音标字体,要么是安卓系统自带字体本身就不包含音标字体。解决的方式也很简单:1),寻找一种包含国际音标的字体文件进行替换,2),将国际音标字体替换进自己选择的字体文件,再行替换。

这里依照网上的教程,对字体进行自行替换。(我选择的安卓英文字体为比较紧凑的Armani.ttf)

a, 安装cgywin.

b, 下载fontforge,并解包。

c, 执行fontforge.bat,运行fontforge, 打开字体文件。

源文件: dejavuserif.ttf

目标文件: armani.ttf

d, 进行字体替换,将dejavuserif中的国际音标复制到armani.ttf中

国际音标扩展区 U+0250 ~ U+02AF

音标扩展区 U+1D00- ~ U+1D7F

音标扩展增补区 U+1D80 ~ U+1DBF

重音符号 U+02C8

次重音符号 U+02CC

e, 字体替换完成后,按File选择Generate Fonts生成新的文件。

生成的新文件就包含了国际音标的全部字符,可以寻找自己喜欢的方式替换进安卓系统了。或者采用Root Explorer附带权限修改的方式复制到/system/Fonts/DroidSans.ttf, 或者采用爱字体等第三方软件直接替换。

当然了,这种方式还是有点麻烦,更直接的方式是直接将dejavuserif.ttf的字体替换进安卓系统。别看我们前面忙了这么久,不过就是把别人的国际音标成区成区的搬砖头,换个位置而已。dejavuserif.ttf对我的问题是,字母不够紧凑,太多的圆角不太适应。

补充说明:

1,在原blog中,说寻找Gothic.ttf中对应的字符。但我并没在这里寻找到太多的音标字体,倒是找到了U+02600位置的符号区字符。

2,dejavuserif.ttf,包含有完整的音标字符文件,可以不经过修改直接替换进安卓。

3,在windows下最常见的音标文件ksphonet.ttf, lingoes.ttf,以及GWIPA.ttf,他们的音标都保存在微软符号区中,而且音标字体不是那么完整,无法在安卓系统中正确使用。还有一个问题,微软专用区的音标顺序和Unicode音标区的顺序是不一致的,无法整区进行替换。

特别是lingoes.ttf文件,和fontforge遵循的规范不一致,打开时频频出错。

微软符号区位置: U + F041

4, 在原版的armani.ttf文件中,男女表达符号U+2640和U+2642,明显弄反了,给予修正。

5,最近比较火爆的是Adobe推出的开源字体,思源黑体(SourceHan Sans),宣称适用于日文、中文、韩文、拉丁文、希腊文和西里尔字母的开源字体思源黑体(Source Han Sans)。其中并不包含国际音标字体。

修改后字体下载:

添加了国际音标的armani.ttf字体

http://vdisk.weibo.com/lc/2ydtwaGBZoKNQ5xmskZ 密码:J121

原始的dejavuserif.ttf文件下载

http://vdisk.weibo.com/lc/2ydtwaGBZoKNQ5DKiUh 密码:XGWF

参考资料:

Android修改系统字体完美显示英文国际音标

http://openwares.net/linux/android_font_phonetic_display.html

维基-国际音标区位表

http://zh.wikipedia.org/zh-sg/%E5%9B%BD%E9%99%85%E9%9F%B3%E6%A0%87#Unicode.E7.B7.A8.E7.A2.BC

unicode编码区对照表

http://wenku.baidu.com/link?url=0TsQDEJcTKFp9kGwuXP5wxLnzveXgEdOnDNq3hIpmWNmJAur1slQ750Ff2aFg1ypRaU0xTTangjkxvd_cqQT-6yBqaPo1NRR5QKIE1UJ3Iy

dejavu字体官网

http://dejavu-fonts.org/wiki/Download

etc.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在推上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、付费专栏及课程。

余额充值