I understand how the hard-decision Viterbi algorithm works, it uses the Hamming distance to calculate branch metrics. But what about soft-decision? Assuming an AWGN channel, QPSK modulation and 8-bit binary-offset format for soft symbols, how do you actually calculate the branch metrics? How does the Viterbi use the extra information it gets with the binary-offset format, e.g. 11110000 means it's a "1" but we're not a 100% sure, so how is the "1110000" part used in calculating the branch metric?
EDIT: I have read the question and answer from QPSK soft decoding, but that was about "how to go from a QPSK symbol to a soft-bit pair" which is a step before entering the Viterbi decoder. I'm asking how to use the soft symbol in binary-offset format to calculate the branch metric.