I just submitted a working experiment to my custom Blinklib. You can now, per-project, decide what do you want the size of face values to be. The official Blinklid supports values 0-64 (6 bits). My custom Blinklib without the recent changes, supports values form 0 to 255 (8 bits).
Now with the experiment, you can use any unsigned integer types. Just moving from byte to uint16_t moves you from 256 possible values (8 bits) to 65535 possible values (16 bits). And you do not need to stop there.
The idea is to allow the same tried and trusted face value algorithms but now with the possibility of exchanging a lot more data.
This change has no impact on storage in Blinklib and uses extra bytes proportional to the new size used (going from byte to uint16_t will use 12 extra bytes).
If anyone is interested in trying this out, let me know and I will explain how.