The arduino doesn't supply a maximum of 40mA, that is the maximum amount of current you can draw before damaging it.
Sorry, that's what I meant when I wrote "supplies a maximum of 40mA", probably should have added "before damaging it", but it was late.
Keeping it down to 20mA is sensible. So yes 7 segments at 20mA = 140mA. This is close to the limit of directly sourcing current through an arduino (200mA total through all the pins).
As I figured earlier 7 segments at 20mA is fine, as it doesn't exceed each pin limit (of 40mA). I just didn't know that the Arduino has a limit of 200mA total
You MUST put current limiting resistors on each of the cathodes:-http://www.thebox.myzen.co.uk/Tutorial/LEDs.html
If you want more digits you have to source the current from either the 5V rail or an external supply and control it with an arduino.
I do have resistors on the cathodes otherwise I'd have probably exceeded that total already and blown something up
By more digits, I'm guessing you mean more digits lit simulaneously? Surely I could connect as many digits as I wanted (pins permitting) and continue to turn one on at a time? Obviously if I want more segments, then I'd be close to pushing the 200mA total.