Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android上看起来像中文的日语字符_Android_Unicode_Localization_Cjk - Fatal编程技术网

Android上看起来像中文的日语字符

Android上看起来像中文的日语字符,android,unicode,localization,cjk,Android,Unicode,Localization,Cjk,前言:自API 17(Android 4.2)以来,有一种方法TextView.setTextLocale()明确解决了TextView和派生类的这个问题。指定一个日语区域设置(locale.JAPAN),Unihan字符将看起来像日语 我在Android上有一个应用程序,在WebView和TextView中显示日语文本。根据惯例,在中国和日本,有些汉字(汉字)的外观不同,但具有相同的Unicode代码点。通常,浏览器将依赖lang标记来选择正确的图示符。在Android上,它们都默认为中国形

前言:自API 17(Android 4.2)以来,有一种方法
TextView.setTextLocale()
明确解决了TextView和派生类的这个问题。指定一个日语区域设置(
locale.JAPAN
),Unihan字符将看起来像日语


我在Android上有一个应用程序,在WebView和TextView中显示日语文本。根据惯例,在中国和日本,有些汉字(汉字)的外观不同,但具有相同的Unicode代码点。通常,浏览器将依赖
lang
标记来选择正确的图示符。在Android上,它们都默认为中国形状,我想要日本形状

这个问题在本文中得到了很好的解释。这篇文章也很好地说明了这个问题——当在Android上观看时(高达2.2版),“语言相关字符示例”中的字符看起来都一样,而且都是中文

使用
lang=“ja”
属性没有帮助。将整个系统的区域设置切换为日语也没有帮助

我想知道在日本销售的安卓手机。角色喜欢什么直, 今, 化 你穿上这些衣服也要有中国风格吗?我想不会吧

所以问题是:有没有Android的官方本地化图片?我可以在模拟器上运行一个吗?DroidSansFallback字体仍然是这些屏幕上唯一启用CJK的字体吗?如果是的话,它和香草美国安卓上的一样吗

我有点希望日文字形隐藏在字体深处的某个地方(Unicode专用区域或其他地方)。如果是这样,我可以利用他们

编辑:找到DroidSansJapanese.ttf,通过复制到/system/fonts将其安装在模拟器上,然后重新启动。这对Unihan文章的外观没有影响。甚至日语文本输入的提示区(应该更清楚)也显示为中文


我如何知道DroidSansJapanese.ttf的字体名称?我有一种感觉,它仍然是Droid Sans,与内置DroidSans后备字体相同。但是,如果它们包含相同的字体,是什么决定了哪种字体应该优先?有人会认为是系统语言环境,但显然不是。Android中的字体是通过复制安装的,对吗?

发现了一个有点笨拙的解决方案

DroidSansJapanese.ttf字体存在并可供下载,例如。我下载了它,将其重命名为DroidSansJapanese.mp3以避免1MB压缩资产限制,并将其置于
assets/web
下。然后,我介绍了以下CSS语句:

@font-face
{
font-family: "DroidJP";
src:url('DroidSansJapanese.mp3')
}
然后我在每个相关CSS样式的
字体系列中添加了'DroidJP'。按照我加载HTML的方式,
assets/web
文件夹已经被指定为加载链接内容的基础

经过仔细检查,我在应用程序中找到了几个日本人在
TextView
s中的位置。对于这些,我加载了如下字体:

Typeface s_JFont =
    Typeface.createFromAsset(Ctxt.getAssets(), "web/DroidSansJapanese.mp3");
并在每个相关文本视图上调用
setTypeface()
。现在赚钱

这将我的APK扩展了大约1MB。还有另一种方法,我将字体以压缩的形式存储在资产中——这将为我节省大约500KB的APK大小,但在第一次运行时,我必须将其扩展到手机内存,担心数据文件夹路径,并失去与安卓1.5的兼容性

一些信用是到期的:和。不适用于Android 2.1(网络视图,而不是文本视图)-这是一个错误

现在,问题仍然存在——如何识别默认字体已经包含日语形状的设备

编辑:mp3黑客。起初我实现了分块解决方案,但后来决定在资产中使用字体。分块方法有一个优点-较小的APK大小-和以下缺点:

  • 消耗更多的手机内存-最终将压缩字体存储在资产中,而未压缩字体存储在数据目录中
  • 在TextView方面与Android 1.5不兼容-方法
    Typeface.createFromFile()
    是在API级别4中引入的
  • 使HTML生成复杂化-带有@font-face声明的CSS需要参数化,因为数据路径是一个变量
  • 减慢第一次应用程序启动的速度-您需要花费时间组合块

将字体存储为压缩资源也不是一个选项-这样字体就不会显示在WebView中,并且您可以在LogCat中清楚地看到关于“数据超过解压缩数据最大值”的消息。

有完全支持日文的字体。我听过一些人谈论DroidSansJapanese.tff和TakaOp哥特式。

在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);

请注意,并非所有字体都将在Android中显示。我没有看到太多日文字符的问题,但其他CJK字符可能会显示为空白框,无论您使用的是什么ttf文件。

FYI这些字符在您的帖子中看起来是中国风格的。:)你贴的那些字是中文。。。一些日语单词也会有一些中文单词,我在日本,我没有问题。我们(公司)在那里有一个美国版本的galaxy s,而且在显示日本字符方面没有问题。有一件事会让我在webviews上遇到问题,那就是没有设置UTF-8元标记:你能发布一个链接或一个你遇到问题的页面样本吗?您使用的是什么设备?如果你提供更详细的信息,我可以试着回答。这里你只是说android不能显示日语,我不认为这是真的。@DallaRosa:请参阅“语言相关字符示例”下的内容。“日文”一栏中的汉字看起来仍然是中国风格。在Android emulator 1.5和2.2上试用。我稍后会在emulator上试用它们,但至少在我的Xperia Arc上,它们在我看来都是日本人。我不理解.mp3破解。理论上,Android资产打包工具