我一直在尋找這麼多天。android在哪裏讀取文件fonts.xml來正確加載字體?
我公司的Android設備(由我們製造)使用Android 2.1。我們需要爲我們的客戶之一提供阿拉伯語支持。我們能夠獲得第三方軟件正確加入阿拉伯語,並從另一個第三方購買字體以在2.1中顯示阿拉伯文。
Android 2.1有一個名爲fonts.xml的文件,用於指定何時使用包括備用字體的字體。
我想知道代碼中的哪個組件讀取fonts.xml文件(當前位於/ frameworks/base/data/fonts中),以便我可以將此文件更改爲另一個位置,每次重建系統的新圖像。
謝謝!
UPDATE:
做了搜索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
不過,我沒有看到文件fonts.xm和DroidSansJapanese.ttf在我/系統/字體/
我建議我的工作將阿拉伯語字體重命名爲DroidSansJapanese.ttf,以便系統能夠讀取它,但這會在將來造成混亂。
我也嘗試手動將修改後的fonts.xml放入/ sytem/fonts並重新啓動設備,但沒有奏效。
另外,FontLoader.java加載fonts.xml,但它並沒有指定整個路徑,因爲它被Bridge.java傳遞。 Bridge.java也通過完整路徑。使用的變量是String fontOsLocation。它在這兩個類命名這個樣子,所以我做了搜索,但沒有發現任何源指定的確切位置:
public static FontLoader create(String fontOsLocation) {}
我最後的辦法是嘗試重新寫FontLoader因此,即使它需要一個字符串fontOsLocation,我只是給它一個來自SD卡的硬編碼路徑。但我不知道這可能會對系統產生什麼影響。謝謝。
當您搜索到'fonts.xml'的Android源代碼副本時,您發現了什麼? – CommonsWare
更新了我的問題。 –