JNCM Files (jnlib character map) store character mapping information for fonts. These provide the mapping information required to map character code points to glyphs in a [JNFR File|JNFR]. 

!! Version 1.2

Version 1.2 is the version of the file format that is used in the DS firmware program. The header takes on the following structure:

||Offset||Type||Meaning
| 0x00  | char[[4]| Signature ({{{"JNCM"}}})
| 0x04  | u16 | Version ({{{0x0102}}} for 1.2)
| 0x06  | u16 | Number of code points

Following the file header is the character mapping info:

||Offset||Type||Meaning
| 0x00  | u32 | Offset to continuous character mapping info (relative to this struct)
| 0x04  | u32 | Offset to direct character mapping info (relative to this struct)

The continuous character mapping info takes the following structure:

||Offset||Type||Meaning
| 0x00  | u16 | Number of continuous mapping blocks

This is followed by an array of continuous mapping blocks:

||Offset||Type||Meaning
| 0x00  | u16 | Starting code point
| 0x02  | u16 | Ending code point (inclusive)

The file format includes a mechanism for specifying individual code points. These are specified in the direct code point block.

||Offset||Type||Meaning
| 0x00  | u16 | Number of entries
| 0x02  | u16[[...] | Array of code points

Code points are mapped to glyph indices sequentially starting in the continuous mapping blocks, then the direct mapping block.