Working with UTF-8 in the Kernel
Normalization and case folding require the kernel to gain detailed knowledge of the entire Unicode code point space. There is still a lot of data that has to go into kernel space, though, and it’s naturally different for each version of Unicode. The first step for code wanting to use the lower-level API is to get a pointer to this database for the Unicode version in use.
Source: lwn.net