And by the way, if I take away the 913-shift-to-octet patch, which is essentially the version in the BarcodeTest.zip posted on Nov. 16, the barcode generated can be readily accepted by http://online-barcode-reader.inliteresearch.com/. In its UTF version, exact same string is displayed. We can do without the 913-shift thing to be safe. All type of data will be properly encoded, only the encoding might not be optimum.
Turns out 913 can only be used within Text Mode to shift to byte compaction for the next codeword, and then the original Text submode is restored. I don't see a reason why 913-shift is not allowed in Numeric context, but according the the standard, barcode for this text ( ABCDEFâABCDEFGHIJKL) is correct even though most online decoders don't recognize it. And barcode associated with this text (0123456789012A0123456789012) is indeed invalid.
I have added Truncated pdf417 and some other functionalities. In order not to waste too much resources, I'll just keep it. Maybe until I at least make some progress on QR code.