Allegro 5 api
#include <allegro5/allegro.h> ALLEGRO_USTR *al_ustr_dup_substr(const ALLEGRO_USTR *us, int start_pos, int end_pos)
Return a new copy of a string, containing its contents in the byte interval [start_pos, end_pos). The new string will be NUL terminated and will need to be freed with al_ustr_free(3alleg5).
If necessary, use al_ustr_offset(3alleg5) to find the byte offsets for a given code point that you are interested in.
al_ustr_dup(3alleg5), al_ustr_free(3alleg5)