Oooh, that's too bad.
Okay, you can still pull this off - you'll need a ULN2003 (or 2803 if you want the DP allso).
For each segment: +12V to current limit resistor to LED segment pin.
From LED segment pin connect to ULN2003 output pin.
Drive the ULN2003 input high will bring the ULN2003 output low, turning off the segment.
Drive the input low to let the segment turn on.
Create a lookup array of data to send to the shift register:
display[0] = B01000000; // turn on segments a,b,c,d,e,f
display[1] = B01111001; turn on segments b,c
etc.
shiftout(datapin, clockpin, MSBFIRST, display
where x is the number, letter, character, etc. you want displayed.
0,1,2,3,4,5,6,7,8,9,A,b,C,c,d,E,F,H,J,L,P,U,u should all be recognizable