There is currently no ".overflow" property or value you can read from the barcode to detect whether or not the barcode is going to overflow. The only real way to ensure that your barcode will not gray-out is to test the form with multiple data types and sets.
In the case of international characters, these take up more space in the barcode especially in the case of double-byte character sets. They literally take twice as much space as the ASCII character set.
Compressed barcodes are compressed using FLATE compression. If you are not using the LiveCycle decoder you will need to decompress the compressed data yourself (drop the first two bytes and decode the rest of the data stream).