The VFAT file system uses UTF-16 to encode long filenames.
The code in FreeBSD lacks support for characters that cannot be represented by a single UTF-16 symbol (e.g. emojis, U+1F600 and above).
Support of code points >= U+10000 uses 2 UTF-16 symbols in the range U+D800 to U+DBFF (low surrogate) and 0xDC00 to 0xDFFF (high surrogate), both providing 10 bits to be combined into a 20 bit value that covers the range U+10000 to U+FFFFF.
Such files can be created on Windows, Linux, and MacOS by adding, e.g., an emoji to the file name.
This patch adds surrogate pair support to all file system operations in MSDOSFS.