Difference between revisions of "Xtf"
From xboxdevwiki
(→XBox Book.xtf) |
(File format info and link to a parser / converter tool) |
||
Line 1: | Line 1: | ||
[[File:Xbox-dashboard-font-specimen.png|thumb|200px|Xbox Font Specimen]] | [[File:Xbox-dashboard-font-specimen.png|thumb|200px|Xbox Font Specimen]] | ||
− | + | XTF is a font file format used in the [[Dashboard]]. | |
It became famous for being [[Exploits#Font hacks|exploited]]. | It became famous for being [[Exploits#Font hacks|exploited]]. | ||
Line 21: | Line 21: | ||
== File format == | == File format == | ||
− | {{FIXME}} | + | * 4 byte (magic) |
+ | * 4 byte (length prefix for following string) | ||
+ | * zero-terminated string with given buffer length (font-name) | ||
+ | * [https://msdn.microsoft.com/en-us/library/dd144956%28v=vs.85%29.aspx GLYPHSET] (List of supported glyphs) | ||
+ | * For each cGlyphsSupported: | ||
+ | ** [https://msdn.microsoft.com/en-us/library/windows/desktop/dd374209(v=vs.85).aspx GLYPHMETRICSFLOAT] (Metrics for each glyph) | ||
+ | ** 4 byte (Offset of glyph in file) | ||
+ | * For each GLYPHSET range | ||
+ | ** For each glyph in this range | ||
+ | *** 2 byte (Index count) | ||
+ | *** 2 byte (Vertex count) | ||
+ | *** For each index: | ||
+ | **** 2 byte (Vertex index) | ||
+ | *** For each vertex: | ||
+ | **** 4 byte float (X-coordinate) | ||
+ | **** 4 byte float (Y-coordinate) | ||
+ | |||
+ | {{FIXME|reason=Confirm these findings and format them better}} | ||
+ | |||
+ | == Links == | ||
+ | |||
+ | * [https://github.com/JayFoxRox/xbox-tools/tree/master/xtf-converter A tool to convert XTF fonts to SVG fonts] |
Revision as of 07:43, 10 September 2017
XTF is a font file format used in the Dashboard. It became famous for being exploited.
Dashboard fonts
The dashboard fonts were designed by Steve Matteson. They contain 7365 glyphs each.
Xbox.xtf
A monospace font.
XBox Book.xtf
File format
- 4 byte (magic)
- 4 byte (length prefix for following string)
- zero-terminated string with given buffer length (font-name)
- GLYPHSET (List of supported glyphs)
- For each cGlyphsSupported:
- GLYPHMETRICSFLOAT (Metrics for each glyph)
- 4 byte (Offset of glyph in file)
- For each GLYPHSET range
- For each glyph in this range
- 2 byte (Index count)
- 2 byte (Vertex count)
- For each index:
- 2 byte (Vertex index)
- For each vertex:
- 4 byte float (X-coordinate)
- 4 byte float (Y-coordinate)
- For each glyph in this range
[FIXME]