You can also use some kind of I/O expansion.
- generic I/O expansion: use a serial-to-parallel shift register (74x595) to add arbitrary bits.
- light one segment at a time using something like a 74x154 4to16 line decoder.
- Use an character-generator sort of ROM, perhaps even a serial-driven one (which almost makes it a display controller.)
- Use an actual display controller chip. The MX7219 seems to be popular for up to 8 segments, but Maxim also has 14 and 16 segment drivers.