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.
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.