Programming is fun and I also wrote a small windows tool to deal with all things, so everything needed to write an app is java, the extracted SDK and a text editor.
Anyhow there's an annoying point - the enclosed simulator uses font files (.monkeyface) which don't match exactly with the original watch fonts sometimes...
...so I want to explore what's inside the font files. I think, I know quite a lot of things for now, but I can't get the complete picture - so maybe some of you are experts in solving logical puzzles
What I (believe to) know:
The font file header seems to contain 4 byte values, starting with an ID (00240306), followed by the filesize and three pointers (*Table1, *Table2, *Bitmap) and three more values. After that another magic number is seen (12345678) before table 1, table2 and the bitmap data starts.
I have no idea about table 1, table 2 seems to contain pointers to the character data (relative to the bitmap pointer). But the most mysterious thing is the bitmap data itself:
Taking the 364th entry of the table 2 in a font called 'Noto Sans 40' says 76F7801B, taking the first part (76F7) together with the bitmap pointer 0001AA34 the location of this character should be 0x2212B. I believe, 1B could be the character width, but that's another story.
Here's the hex dump of this file part:
When two bits are seen as a single pixel, the following result appears (the first four pixels are the byte at the file offset 0x2211E, so the last four pixels in the second row ar at 0x2212B):
Remark: I cutted the image so two pixel columns are seen, the real data order within the font file is symbol (10), (11), (12), (13) and so on...
As you can see, the characters don't look perfect because the line width seems to change within the symbols
Any idea what's missing?
