所以我需要在我的Android NDK項目中包含一個用於Freetype字體渲染的.ttf字體文件。我在哪裏放它,以便它將被放在apk中?如何在我的Android NDK項目中包含字體文件(.ttf)?
1
A
回答
-1
在src/main/
我創建另一個文件夾assets/
旁邊的java/
,jni/
和res/
文件夾,我放在.ttf
文件,並將其上傳到APK。我仍然試圖讓Freetype看到它,因爲目前的命令沒有得到它:
FT_New_Face(ft, "/assets/Arial.ttf", 0, &face);
但這是另一個問題。
+0
爲什麼標記爲已回答?有關這方面的任何消息?我遇到同樣的問題。 –
1
我將添加我的解決方案,它是通過傳遞assetManager,並在C++端保存對它的引用。字體ttf文件存儲在字體文件夾內的assets文件夾中。
FT_library library;
FT_Face fontFace;
AAsset* fontFile = AAssetManager_open(manager, "fonts/Roboto-Medium.ttf", AASSET_MODE_BUFFER);
off_t fontDataSize = AAsset_getLength(fontFile);
FT_Byte* fontData = new FT_Byte[fontDataSize];
AAsset_read(fontFile, fontData, (size_t) fontDataSize);
AAsset_close(fontFile);
if (FT_Init_FreeType(&library)) {
LOGE("Could not load library");
}
if (FT_New_Memory_Face(library, (const FT_Byte*)fontData, (FT_Long)fontDataSize, 0, &fontFace)) {
LOGE("Load memory failed");
}
傳遞assetManager只是將它作爲一個對象傳遞並在C++端進行轉換。
AAssetManager *manager = AAssetManager_fromJava(javaEnv, assetObject);
+0
我會補充說這是爲了加載自定義字體,對於系統字體,這是不需要的,因爲您可以直接訪問而不需要AssetManager。 – Adrian
相關問題
- 1. 在Xamarin C中的Android項目中包含外部字體ttf#
- 2. 如何在Android NDK項目中包含二進制文件?
- 3. 爲什麼我們在字體聲明中包含TTF文件?
- 4. 將uuid.h包含到Android NDK項目中
- 5. 不能將.ttf字體包含到項目中
- 6. 在Angular.js中包含字體(.ttf)
- 7. 如何包含code39字體ttf文件並使用它?
- 8. 如何在我的MVC項目中本地包含OpenSans字體?
- 9. 如何將ui網格字體文件包含到項目中
- 10. 如何將字體.ttf文件添加到grails項目
- 11. 如何在Android項目的Intellij IDEA中包含.so lib文件?
- 12. Android NDK:如何在AndroidStudio中包含* .so文件
- 13. 如何查找包含某個字形的.TTF字體?
- 14. 如何在我的項目中包含嵌入的sas文件?
- 15. 如何在Android項目中包含HTML5WebView
- 16. 如何在android中包含unity3d項目?
- 17. 如何從Android的TTF文件中檢索字體名稱
- 18. 如何在我的eclipse項目中包含jar文件
- 19. 在Android項目中通過NDK包含Crypto ++庫
- 20. 如何在頭文件中包含依賴項而不將其包含在包含頭文件的項目中
- 21. 如何在Android庫項目中包含jar文件
- 22. 如何在另一個ndk項目中包含靜態庫?
- 23. 如何在Android Studio中的庫項目中包含庫項目
- 24. 使用Android NDK包含庫文件
- 25. 一些在Android NDK包含文件NDK不起作用
- 26. 我的Android Intellij項目的.gitignore中應包含哪些文件?
- 27. 在項目中包含庫項目Android
- 28. 在我的項目中包含谷歌字體
- 29. 如何在Android NDK項目中使用預編譯頭文件?
- 30. 如何使用我的visual studio項目中包含的文件?
典型的方法是把它放在'assets /'中。我不太瞭解你將如何使用它,但我的猜測是,你需要將資產(從'AssetManager')複製到文件系統上的本地文件,然後讓你的本地代碼使用本地文件系統副本。 – CommonsWare
資產正常工作。想發佈爲答案? – iHowell
我建議你發佈答案,因爲你可以解釋你如何使用NDK方面的資產。 – CommonsWare