I don't see anything wrong with your steps.
Maybe storing the buffer in an std::string can be skipped if fromUtf8 supports a begin and end pointer (I'm not sure if it does), but it will work equally well when first stored in an std::string.
The type is Uint32 because it stores the string as UTF32. Two bytes wouldn't be enough to store ALL possible unicode characters.
If squares are displayed then it would mean that the chosen font (arial.ttf in this case) does not contain these japanese characters.
Maybe storing the buffer in an std::string can be skipped if fromUtf8 supports a begin and end pointer (I'm not sure if it does), but it will work equally well when first stored in an std::string.
The type is Uint32 because it stores the string as UTF32. Two bytes wouldn't be enough to store ALL possible unicode characters.
If squares are displayed then it would mean that the chosen font (arial.ttf in this case) does not contain these japanese characters.
