The implementation of my unicode_algorithm library had barely started when I encountered a problem I had not considered at all. Unicode code points have a lot of properties for things like the character type, uppercase/lowercase mappings, bidirectional mirroring, and so on. The data is freely available and it would be easy to simply dump it into an array indexed by code point number (in the following called the naive array). However, code points have a valid range of 0x0 to 0x10FFFF for a tot...