簡體   English   中英

如何在我的Android NDK項目中包含字體文件(.ttf)?

[英]How do I include a font file (.ttf) in my Android NDK project?

因此,我需要在Android NDK項目中包括一個.ttf字體文件,用於Freetype字體渲染。 我在哪里放置它以便將其放置在apk中?

我將添加解決方案,這是通過傳遞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);

src/main/我在放置了.ttf文件的java/jni/res/文件夾旁邊創建了另一個文件夾assets/ ,並將其上傳到apk。 我仍在嘗試讓Freetype看到它,因為當前命令沒有得到它:

FT_New_Face(ft, "/assets/Arial.ttf", 0, &face);

但這是另一個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM