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!).