Pick yourself up an RGB LED do some playing.
Red, no green, no blue = Red
no red, Green, no blue = Green
no red, no green, Blue = Blue
all three = White
Red, no green, Blue = Purple
Red, Green, no blue = Amber (sort of yellow)
Orange - Idon't know.
If you had PWM on each color, then you change the intensity of the mixed colors as well.
Say 75% red, 25% green, no blue = Orange(ish)?
So if you had an arduino, an RGB LED, 3 current limit resistors sized to not exceed the current capabiliy of the 3 LEDs (since Red, Green, Blue typically have different forward voltages, different current limit resistors would be needed),
then connecting each to a PWM pin and using
analogWrite (RedLedPin, 196); // 0 min, 255 max
analogWrite (GreenLedPin, 64);
analogWrite (BlueLedPin, 0);
mighe yield orange for example.
Have to experiment some and see.
From there, you expand on the hardware for the size table you need, maybe with tons of chips (all LEDs capable of being driven all the time), maybe with multiplxing (one, or maybe a row or a column, are on at one time, but you switch between them all quickly to trick the eye into seeing them all as on, but maybe not quite as bright - but high brightness LEDs (blindingly bright even) can overcome that too).