The framework bundles the utfcpp library for simple Unicode support. You can check out its readme for documentation.

String types

For convenience, Core/Types.hpp defines a family of allocator-aware string type wrappers around the standard library:

  1. FString - Equivalent to std::string (the default, UTF-8 encoded)
  2. FString8 - Equivalent to std::u8string
  3. FString16 - Equivalent to std::u16string
  4. FString32 - Equivalent to std::u32string
  5. FWString - Equivalent to std::wstring

All of these use the framework's custom allocator under the hood. The default FString is used everywhere in the framework's public APIs (window titles, file paths, log messages, translations) and is assumed to be UTF-8.

When you need to interoperate with APIs that take other encodings (e.g. Win32 wide-string APIs that take wchar_t*), use utfcpp directly to convert between encodings.