18,700
edits
mNo edit summary |
m (wording; linking to OBD:Text encoding) |
||
Line 2: | Line 2: | ||
Every TSGA file contains 256 elements of 20 bytes each, thus | Every TSGA file contains 256 elements of 20 bytes each, thus taking up 5,120 bytes without the header. Together with the 8-byte header and 32-byte padding, each TSGA takes up 5,152 bytes in a .dat (another 20 bytes are taken up in the instance descriptor array). | ||
For Western languages, a TSFT has only one TSGA which corresponds to | For Western languages, a TSFT has only one TSGA which corresponds to an ASCII-style encoding table: | ||
*the first 32 symbols (0 to 31) are non-printable control characters, so these elements are always | *the first 32 symbols (0 to 31) are non-printable control characters, so these elements are always all-zero | ||
*the next 96 symbols (32 to 127) correspond to standard | *the next 96 symbols (32 to 127) correspond to standard ASCII | ||
*the upper half of the table (128 to 255) is filled with non-standard punctuation and | *the upper half of the table (128 to 255) is filled with non-standard punctuation and non-Latin characters | ||
"Non-Latin" refers to European characters which use diacritics or to Cyrillic characters; the exact character set varies by language version of the game. Asian localizations of Oni use their own extended encoding system and glyph data in place of Oni's. See [[OBD:Text encoding]] for details on the encoding systems and the available characters in each language version. | |||
---- | |||
[[image:tsga_a.gif]] | [[image:tsga_a.gif]] | ||
Line 31: | Line 32: | ||
A glyph is basically a | A glyph is basically a grayscale bitmap which is (width * height) pixels in size. Each pixel is stored in one byte in the [[OBD:TSFT|TSFT]] file (fonts are antialiased so shades of gray are needed rather than storing each pixel in one bit; although for the smallest font size there is no antialiasing in use and the 8-bit pixels are either fully black or fully white). | ||
The pixels stored in TSFT (packed 4 by 4 as little-Endian unsigned int32s) are treated as a scanline, row major, top to bottom and left to right. The width of a glyph is not always a multiple of 4 pixels, so the scanline can wrap around, i.e. | The pixels stored in TSFT (packed 4-by-4 as little-Endian unsigned int32s) are treated as a scanline, row major, top to bottom and left to right. The width of a glyph is not always a multiple of 4 pixels, so the scanline can wrap around, i.e. a new row of pixels can start in the middle of a 4-byte element. The start of a glyph, however, is always aligned on a 4-byte element of the TSFT array. The end of a glyph is padded with 0xDEAD. | ||