Producing and printing the Data Matrix 2D bar code, have been implemented in MECCA 2000 starting with v5.04 release. The implementation was based on the ISO/IEC 16022:2006 standard document. This implementation, however, does not include all of what the ISO/IEC standard defined. Specifically: 1. Only ECC 200 has been implemented (which is what the standard document recommends); there is no support for ECC 000-140. 2. Structured Append -- using a group of disjoint Data Matrix symbols together to carry long/continuous data message -- is not supported. 3. Use of FNC1, 05 Macro, 06 Macro, and ECI characters per AIM specifications, are not supported. General Information In a Data Matrix symbol, the smallest square represents one "bit" of the encoded information: black means 1 and white means 0 (although inverting their meaning is permitted). The physical size of such a square that represents one bit, is called "module size", or commonly the "X width". Although the ISO/IEC standard does not specify any limits on the X width, it is normal to limit the X width to be at least 10 mils (one mil is one thousandth of an inch); for example, see GS1 documentations related to the Data Matrix code. These "data bits", together with finder pattern (and alignment pattern, when tiled), are are organized into one or more squares, which then are tiled together to form a symbol. When referring to the symbol size, e.g. 10x10, the numbers refer to how many total modules (bits) on each side. There are 24 square, and 6 rectangular, symbols sizes specified by ECC 200. The "Quiet Zone" for a Data Matrix symbol, is at minimum 1 X width on all four sides. In MECCA, the Quiet Zone is part of the symbol's background. The symbol dimensions, as reported under Query, include the quiet zone. Encoding methods: Different encoding methods are provided by the standard, each targeting a particular set of input data (termed "alphabets"): ASCII -- For standard ASCII (0-127) and extended (128-255) characters; "extended" ones are ISO-8859-1 characters. This method also includes codewords for 2-digit pair combinations 00 through 99. C40 -- Similar to above, but favors uppercase A-Z as base set. That is, for this encoding, the resulting symbol is smallest if data is all uppercase characters, than if data is all lowercase or mixed cases. Text -- Same as C40 but favors lowercase a-z as base set. X12 -- ANSI X12, limited to these characters plus space (CR below is the ASCII Carriage-Return character): CR * > 0-9 A-Z EDIFACT -- ASCII characters 32 (space) to 94 (caret), inclusive. No lowercase letters in this set. BIN -- Binary, all byte values as-is. As can be inferred, the same data may be encoded differently by different encoding methods. The User Interface dialog for Data Matrix 1. Selecting "Auto" for Encoding will cause different encoding methods to be used over user data, with an objective to achieve the smallest possible symbol size for the given data. Multiple encoding methods may be used, for example, given input data: 0123ABC The result will be two ASCII codewords for the 01 and 23 combinations, then switch to C40 for ABC, which can be represented by 2 codewords. 2. Selecting "Auto" for symbol size, will choose the smallest possible square size that accommodates the encoded data. 3. Data to be encoded can be typed in directly in the text input window. Use the \NNN^ special character notation for non-ASCII characters, and the \NL^ to denote a new line. No other composition command, nor the "compose keys" ("@" key sequence), are supported. When using \NNN^ for special characters, there will be a check that the corresponding character is an ISO-8859-1 character. For example, The trademark, \110^, does not exist in ISO-8859-1, therefore the software will flag the use of \110^. The \NL^ command can map to a single ASCII new-line (NL), or the 2-character CR NL combination (which adds one more character to encode). The choice depends on the scanning system used to scan the symbol. 4. For binary encoding, data can be input in groups of ASCII hex digits, separated by a space. For example: FF 01 aa cD The "cD" above is to show that letter cases are not important. In binary encoding, \NNN^ and \NL^ mappings are not supported. 5. The "Reader Program" check button, is to indicate whether the encoded data is for programming the code reader. If it is, a special codeword (decimal 234, hex EA) is automatically set as the first codeword, as required by the standard. Interpretation of input data is based on the encoding method user selected in the dialog, as described above. WARNING The 144x144 symbol size is a troublesome one: it's known that, for this specific symbol size, some scanners expect the ECC data to be at positions different from what the standard document specified, without any explanation issued by the scanner makers. Such scanners won't decode any data, or may even pronounce Error, when given a 144x144 symbol produced by this implementation. If you want to avoid creating 144x144 Data Matrix symbol completely, you can edit the config file "barcodes.ini" located in $MECCA_FILES/cfg (normally it is /usr/mecca/cfg) folder. In the section for DataMatrix/Main, set "NO 144"="1" Certain scanners do not to read any Data Matrix symbols in the 6x6 configuration at all (i.e., sizes 120x120, 132x132 and 144x144). When making a new bar code, always verify the code you made. Correctness of contents aside, whether you have given enough clearance (quiet zone) around the bar code, can only be judged by the scanner used to read it.