Common library for displaying a text in SDL2 application is SDL2_ttf. The library is a wrapper on FreeType library. It is necessary to add both libraries into a project.
Let’s start with FreeType dependency. Add build.gradle file. Just be aware that there will be many excluded files. The library itself is very huge, and only a fraction of functions is necessary for the application.
...
sources {
main {
jni {
source {
srcDir "src"
exclude "autofit"
exclude "smooth/smooth.c"
...
// Including this file in build causes duplications, because it includes directly C files
exclude "truetype/truetype.c"
exclude "type1"
exclude "type42"
exclude "winfonts"
}
}
}
}
Adding SDL2_ttf is similar to other libraries like SDL2_jpeg or SDL2_mixer.
SDL2_ttf and FreeType modules should be also registered at settings.gradle:
include ':freetype' ... include ':SDL2_ttf'
The first step to displaying text on the screen is to initialize the library and load a font:
#include "SDL_ttf.h"
...
if (TTF_Init() == -1) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "TTF_Init: %s\n", TTF_GetError());
return 7;
}
The next step is to load a font. The file should be stored in app/src/main/assets.
TTF_Font *font = TTF_OpenFont("blazed.ttf", 32);
if (!font) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION,
"Unable to load font: %s\n", TTF_GetError());
return 8;
}
The next step is to render a text:
SDL_Color textColor = { 255, 240, 0, 255 };
SDL_Surface* solid = TTF_RenderText_Solid(font, "SDL2 Android Example", textColor);
SDL_Texture* solidTexture = SDL_CreateTextureFromSurface(renderer, solid);
SDL_RenderCopy(renderer, solidTexture, NULL, &dstrect);
SDL_FreeSurface(solid);
Here is the result:

You can find the source code at GitHub in sdl2-android-example repository. Further articles about SDL2 and Android are available under the tag SDL2.