Okay, I took a quick and dirty approach to reading in and using a special_characters.xml file.
This is just for proof of concept and so that you can see and work with the xml format. It needs to be greatly cleaned up.
To help speed things up, I have included a cvrt.py python program that will read in local characters.txt and create a local special_characters.xml file.
I just threw the cvrt.py together so no nasty comments about crap python code!
I have improved the FlowLayout code to not need the extra macOS + 15 offset.
It should use qmake and make / nmake.
I have attached the new special_char.zip file with all changes.
Please play around with the new xml code format and let me know what you think. Right now if it is not well formed, QXmlStreamReader will fail and a debug message is written out as qDebug.
So you can turn on debug log files and capture any xml error. We can make this easier to do in the future. Any failure in load results in the old grid layout being used instead.
Just like any other xml it is very picky.
Check out cvrt.py to see how it was auto generated.