序言:由于API 17 (Android4.2),有一个方法TextView.setTextLocale()可以显式地解决TextViews和派生类的这个问题。指定一个日语区域设置(Locale.JAPAN),那么Unihan字符将看起来是日语的。
我在Android上有一个应用程序,它在WebViews和TextViews中显示日语文本。按照惯例,中国和日本有一些汉字(汉字)的外观不同,但它们共用相同的Unicode码点。通常,浏览器将依赖于lang标记来选择正确的字形。在Android上,它们都默认为中国形状,我想要日本形状。
这个问题在这篇文章中得到了很好的解释。这篇文章也很好地说明了这个问题--当在Android (多达2.2)上观看时,“依赖于语言的字符的示例”中的字符看起来都是一样的,而且是中文的。
使用lang="ja"属性没有帮助。将整个系统的区域设置转换为日语也没有帮助。
我想知道在日本销售的Android手机。像直,今,化这样的角色看起来也是中式的吗?我想不是吧。
所以问题是:有没有官方本地化的Android图片?我能让一个在模拟器上运行吗?DroidSansFallback字体仍然是这些字体上唯一启用CJK的字体吗?如果是的话,它和香草的美国Android一样吗?
我希望日文符号隐藏在字体的深处(Unicode私密区域或其他什么地方)。如果是这样,我可以利用他们..。
编辑:找到DroidSansJapanese.ttf,通过复制到/system/字体将其安装在模拟器上,重新启动。它对Unihan文章的外观没有任何影响。即使是日语文本输入的提示区域(应该更清楚)也会显示得像中文一样。
我如何知道DroidSansJapanese.ttf的字体名称?我有一种感觉,它仍然是Droid,和内置的DroidSansFallback字体一样。但是,如果它们包含相同的字体,应该优先考虑的是什么呢?人们会认为--系统环境,但显然不是。Android中的字体只是通过复制来安装的,对吗?
发布于 2011-09-23 07:17:50
有完全日本支持的字体。我听说过一些人在谈论DroidSansJapanese.tff和TakaoPGothic。
发布于 2011-09-22 03:17:41
找到了一个有点排他性的解决方案。
DroidSansJapanese.ttf字体存在并可供下载,例如,这里。我下载了它,将其重命名为DroidSansJapanese.mp3,以避免1MB的压缩资产限制,并将其置于assets/web下。然后,我介绍了以下CSS语句:
@font-face
{
font-family: "DroidJP";
src:url('DroidSansJapanese.mp3')
}然后,我将“DroidJP”添加到每个相关CSS样式的font-family中。按照我加载HTML的方式,assets/web文件夹已经被指定为加载链接内容的基础。
经过仔细检查,我在应用程序中找到了几个在TextViews中使用日语的地方。对于这些地方,我加载了这样的字体:
Typeface s_JFont =
Typeface.createFromAsset(Ctxt.getAssets(), "web/DroidSansJapanese.mp3");并在每一个相关的TextView上打电话给TextView。现在是为了利润!
这使我的APK增加了大约1MB。还有另一种方法,我会以压缩的形式将字体存储在资产中--这将为我节省大约500 KB的APK大小,但我必须在第一次运行时将其扩展到电话内存,担心数据文件夹路径,并失去与Android 1.5的兼容性。
一些功劳应该是:这里和这里。在Android2.1( WebViews,而不是TextViews)上不起作用--这是一个已知臭虫。
现在,问题仍然存在--如何识别默认字体已经包含日文形状的设备?
编辑re: mp3黑客。我首先实现了分块解决方案,但随后决定在资产中使用字体。分组方法有一个优点--较小的APK大小--还有以下缺点:
Typeface.createFromFile()方法是在API 4中引入的将字体存储为压缩资产也不是一种选择--字体在WebView中不会出现,您可以在LogCat中清楚地看到关于“数据超过UNCOMPRESS_DATA_MAX”的消息。
发布于 2018-11-04 20:51:39
在onCreate/OnCreateView中使用以下内容:
AssetManager am = getContext().getApplicationContext().getAssets();
mDroidSansJapaneseTypeface = Typeface.createFromAsset(am, String.format(Locale.JAPAN, "fonts/%s", "DroidSansJapanese.ttf")); //I put the font file in the assets/fonts/ folder然后,对于文本视图:
myTextView.setTypeface(mDroidSansJapaneseTypeface);
myTextView.setTextLocale(Locale.JAPAN);请注意,不是100%的所有字体将显示在Android中。我没有看到太多的问题,日本字符,但其他的CJK字符可能会显示为空白框,无论您使用什么ttf文件。
https://stackoverflow.com/questions/7503133
复制相似问题