android在哪里读取fonts.xml文件以正确加载字体?

android在哪里读取fonts.xml文件以正确加载字体?,android,fonts,android-firmware,Android,Fonts,Android Firmware,我已经找了好几天了 我公司的安卓设备(美国制造)使用安卓2.1。我们需要为我们的一位客户提供阿拉伯语支持。我们能够得到一个第三方软件来正确地加入阿拉伯语,并从另一个第三方购买了一种字体来在2.1中显示阿拉伯语 Android 2.1有一个名为fonts.xml的文件,指定何时使用字体,包括备用字体 我想知道代码中的哪个组件读取font.xml文件(当前位于/frameworks/base/data/fonts中),以便我可以将此文件更改到另一个位置,并根据客户动态更改它,而无需每次重建系统的新映

我已经找了好几天了

我公司的安卓设备(美国制造)使用安卓2.1。我们需要为我们的一位客户提供阿拉伯语支持。我们能够得到一个第三方软件来正确地加入阿拉伯语,并从另一个第三方购买了一种字体来在2.1中显示阿拉伯语

Android 2.1有一个名为fonts.xml的文件,指定何时使用字体,包括备用字体

我想知道代码中的哪个组件读取font.xml文件(当前位于/frameworks/base/data/fonts中),以便我可以将此文件更改到另一个位置,并根据客户动态更改它,而无需每次重建系统的新映像

谢谢大家!

更新:

搜索fonts.xml时,我发现sdk.atree包含以下行:

# fonts for layoutlib.
frameworks/base/data/fonts/fonts.xml                 platforms/${PLATFORM_NAME}/data/fonts/fonts.xml
frameworks/base/data/fonts/DroidSans.ttf             platforms/${PLATFORM_NAME}/data/fonts/DroidSans.ttf
frameworks/base/data/fonts/DroidSans-Bold.ttf        platforms/${PLATFORM_NAME}/data/fonts/DroidSans-Bold.ttf
frameworks/base/data/fonts/DroidSansMono.ttf         platforms/${PLATFORM_NAME}/data/fonts/DroidSansMono.ttf
frameworks/base/data/fonts/DroidSerif-Bold.ttf       platforms/${PLATFORM_NAME}/data/fonts/DroidSerif-Bold.ttf
frameworks/base/data/fonts/DroidSerif-BoldItalic.ttf platforms/${PLATFORM_NAME}/data/fonts/DroidSerif-BoldItalic.ttf
frameworks/base/data/fonts/DroidSerif-Italic.ttf     platforms/${PLATFORM_NAME}/data/fonts/DroidSerif-Italic.ttf
frameworks/base/data/fonts/DroidSerif-Regular.ttf    platforms/${PLATFORM_NAME}/data/fonts/DroidSerif-Regular.ttf
frameworks/base/data/fonts/DroidSansFallback.ttf     platforms/${PLATFORM_NAME}/data/fonts/DroidSansFallback.ttf
frameworks/base/data/fonts/DroidSansJapanese.ttf     platforms/${PLATFORM_NAME}/data/fonts/DroidSansJapanese.ttf
但是,我在my/system/fonts中没有看到fonts.xm和DroidSansJapanese.ttf文件/

我建议我的工作将阿拉伯语字体重命名为DroidSansJapanese.ttf,以便系统能够读取它,但这肯定会在将来造成混乱

我还尝试手动将修改后的fonts.xml放入/sytem/fonts并重新启动设备,但没有成功

此外,FontLoader.java加载fonts.xml,但在通过Bridge.java时,它没有指定整个路径。java还通过了完整路径。使用的变量是字符串fontOsLocation。这两个类的名称都是这样的,因此我进行了搜索,但没有找到指定源中确切位置的内容:

public static FontLoader create(String fontOsLocation) {}

我的最后一个选择是尝试重新写入FontLoader,因此即使fontOsLocation需要一个字符串,我也只会给它一个来自SD卡的硬编码路径。但我不知道这会对系统产生什么影响。谢谢。

好的,我找到了一个解决方案。对于遇到此问题的任何人,下面是:

external/skia/src/ports/SkFontHost_android.cpp->指定哪个.ttf文件用于哪个样式

需要将字体文件添加到:

frameworks/base/data/font/->这里是所有的.ttf文件

Android.mk inside frameworks/base/data/font/folder也需要修改,以便将新字体文件从该文件夹复制到/system/font


希望这对其他人有所帮助。

当你在Android源代码副本中搜索
font.xml
时,你找到了什么?嘿。我在找类似的东西,发现这个很有用,谢谢:-)你能深入了解操作系统启动时如何动态更改字体吗?(比如三星在S3ROM中如何允许系统字体根据设置进行动态更改)你是说从应用程序开始?您只需调用typefonts类来更改字体:Typeface type=Typeface.createFromAsset(getAssets(),“font/Kokila.ttf”);txtyour.setTypeface(类型);嘿,没有任何一个应用程序。我的意思是改变整个系统的字体。在ICS中说你想把机器人改成Arial。在飞行中,没有重新启动?我相信你需要系统权限。在我的公司,我们构建自己的硬件,因此我们能够修改内核以进行此类更改。但是,我不知道怎么做,因为我在应用程序方面工作。为什么不看看三星的资料来源:我相信他们发布了他们的安卓系统资料来源。感谢skia path!:)