安卓系统不能正确显示音标,并不是新鲜的话题。和别人一样,我的安卓没啥特别的,同样遭受这个问题折磨。
不正确的音标显示
为了解决这个问题,开始度娘。。。慢慢在这个问题上有点眉目了。
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.