Fix the incompatible type of UChar and char16_t UChar is not always char16_t in some platforms. In some cases, it's wchar_t or uint16_t. Use std::basic_string<UChar> to avoid std::u16string.
This project is not developed any further. Only Bug fixes will be merged, but new features won't.
An actively maintained fork with new features is available at https://github.com/rillig/sfntly