I did that once, but it was with 74LS on the breadboard. So, no big deal for output current; the I_OH is roughly a 100 ohm resistor to begin with.
(The ribbon leaving on the right side, wraps under and goes to the 8 digit matrix. It's just wired between a pair of 74LS374s. Or maybe they were
273s, I forget.)
A digit was pretty "hot" (over 20mA DC, I think) if the matrix scanning routine froze, and intensity varied somewhat with the number of segments-per-digit lit. Don't think I would recommend it for production.
I'd recommend it even less with CMOS. For an MCU, you may quite easily exceed the current-per-pin, or per-IO-bank, or per-supply-pin rating (usually something like 50 or 100mA, so not even a half dozen LEDs at rated current). It's really quite desirable, and easy, to plop in a proper driver (like a ULNx thingy, but also, you need a high-side one), or an LED driver proper, which can be SPI or I2C and offload a lot of activity (like doing the matrix scan automatically).
TL431 is kind of slow, so don't expect it to respond within a microsecond. You may see some "drool" or shadows between characters, unless you reserve enough dead time for things to settle first. Keep that in mind, if you want to use it like this. Even with the speed issue, it's probably better than a
2.5V zener (which won't be "2.5V" at most currents!).