I'm not sure if someone else wanna take that future implementation. For me, it's on low priority list.
If you want to implement on your own, I could give some hint as following.
1. Choose a error correction level.
2. Create a temp QrCode with number of input text. (save as image file)
3. Wipe out part of center of QrCode, Let's say 2x2 modules. See if decoder can decode that QrCode.
4. if it can, increase that wipe out region little bit and repeat test until you find a limit that decoder won't be able to analyse.
5. Test for other length of input text, to get roughly idea about input text range and the size it can be wipe out.
6. use QrCode control, graphic control you can just do some extra work at onPaint event, and WPF control you can put a rectangle as child of QrCode control. Once you have properly painted icon or text, Use DrawToBitmap to create image, or use RenderTargetBitmap
to render WPF control. You should get what you want.
For what you said allow text and restrict font size, that still can not guarantee readable by decoder. It depends on QrCode matrix size, Error correction level, area of module got wipe out, new item(text or icon) that place inside area covered how many lost
The last part is most hardest part. The more module you can cover, (which include light colour module and dark colour module) the more likely that code is readable.
I know someone implemented that with PHP or something, but it's very restrict, you can only put icon at centre, Icons are provide by that code, size is very small. Only in guarantee safe area. Personally, I don't think people would satisfy with
that half baked function.