I need to shiftout a nibble

I've been thinking of an LED project (only) I'd think was cool. I want to take a tri-colour LED and control each color's brightness with a DAC. I have fount a three channel DAC on Digikey with the part number BH2220FVM. Looking at the datasheet, it appears to be controlled via 12-bit commands: 8-bits for data and 4-bits for control (wording?).

Is is possible, with the Uno, to shift out a single nibble, short of bit-banging?

I bet if you output 16 bits, the first 4 will just get dropped, and just the 4 + 8 bits of data get used.

Is is possible, with the Uno, to shift out a single nibble, short of bit-banging?

No.
There are no other ways that are not bit banging.

However as CrossRoads says most chips will just ignore any extra bits, providing they are sent first. This is because basically these chips just contain a shift register and any extra bits “fall” out of the end.

Well that's going to make things complex. The chip has data shifted in MSB first, starting with the data byte. But how hard can it be, really? Just split the data byte into two nibbles. The first of which then gets four 0's tacked to the front (if I store it in a byte-long variable, this should be automatic) and the second gets tacked to the front of the control nibble.

The chip has data shifted in MSB first, starting with the data byte.

No. Look at Fig 5, the time goes from left to right - so D0 is the last thing out.

The MSB goes out first, so with 2 bytes you will have:
0 0 0 0 0 0 A1 A0 D7 6 5 4 3 2 1 0
^ ^
| this is the first bit out | and this last

Chip supports 10 MHz speed, so you can use SPI transfer - default speed is 4 MHz:

digitalWrite (ldPin, LOW);
SPI.transfer (highByte (dataArray[0]);
SPI.transfer (lowByte (dataArray[0]);
digitalWrite (ldPin, HIGH);

digitalWrite (ldPin, LOW);
SPI.transfer (highByte (dataArray[1]);
SPI.transfer (lowByte (dataArray[1]);
digitalWrite (ldPin, HIGH);

digitalWrite (ldPin, LOW);
SPI.transfer (highByte (dataArray[2]);
SPI.transfer (lowByte (dataArray[2]);
digitalWrite (ldPin, HIGH);

with
int dataArray[3]; // holds the 3 output values