There seems to be a problem with code-128 where if you put multiple numbers in it doesn't work (e.g. 123456)
Code39 is pretty common to convert into a font, since the checksum is optional.
IIRC ligatures break this constraint - that's how coding fonts get fancy glyphs for "==", "===", "=>" and so on.
I don't have the knowledge to respond to your second point.