Je suis nouveau à Android, et je me demande comment créer des caractères à partir des actifsSkia Comment créer une typographie à partir d'éléments à l'aide de SkTypeface * CreateFromFile (const char path []);
J'ai mon fichier .ttf dans mon application Android dans le dossier des actifs.
J'utilise du code natif pour créer caractères:
class Test
{
public:
Test(){};
Test(const char* path);
bool getHasFont(){ return hasFont;}
~Test(){}
private:
SkPaint paint;
SkTypeface* typeface;
bool hasFont;
};
Test::Test(const char* path)
{
LOGI(path);
typeface = SkTypeface::CreateFromFile(path);
if(typeface != NULL)
hasFont = true;
else
hasFont = false;
}
JNIEXPORT jboolean JNICALL Java_com_example_Test_NativeSkia_getHelloFromNative(JNIEnv *env,
jclass clazz, jstring path) {
const char *nativeString = env->GetStringUTFChars(path, 0);
Test* tes = new Test(nativeString);
return tes->getHasFont();
}
}
En application Android J'appelle:
boolean isWorking = NativeSkia.getTestFromNative("../assets/fonts/Agora/Agora-Reg.ttf");
Son retour faux;
Si je crée le dossier sur la carte SD, dans l'appareil, et de mettre toutes mes polices là:
boolean isWorking = NativeSkia.getTestFromNative("/mnt/sdcard/fonts/Agora/Agora-Reg.ttf");
Il fonctionne très bien, mais je dois avoir mes polices dans le dossier actif.
Un appel réussi à 'GetStringUTFChars' doit être suivi avec' ReleaseStringUTFChars' lorsque vous avez terminé avec le tableau. (Je ne sais pas quel jeu de caractères/encodage 'SkTypeface :: CreateFromFile' nécessite mais vous lui donnez Unicode/UTF-8 modifié.) –
Merci, mais ces faits que j'avais connus, aussi j'ai besoin de supprimer tes. Mais mon point était de savoir comment SkTypeface :: CreateFromFile (const char path []) fonctionne, si je lui ai donné le chemin de ma police dans les dossiers actifs (projet android), "../assets/fonts/Agora/Agora-Reg.ttf " – IgorB