Yesterday I found the character bitmaps and all the necessary infos to use the camera's fonts.
There is a nice mark for us (thank you Canon!)
ROM:FF617540: 48 43 61 6e 6f 6e 47 6f 74 68 69 63 00 2f 2f 2f HCanonGothic.///The character codes (UTF-8) listed in 32 bit format from 0xFF617550
ROM:FF617550: 20 00 00 00 21 00 00 00 22 00 00 00 23 00 00 00 ...!..."...#...
ROM:FF617560: 24 00 00 00 25 00 00 00 26 00 00 00 27 00 00 00 $...%...&...'...
...The bitmap positions (32 bit) start after the character codes at 0xFF619CFC .
ROM:FF619CF0: ef bc 9a 00 ef bc 9f 00 ef bd 9e 00 00 00 00 00 ................
ROM:FF619D00: 0e 00 00 00 38 00 00 00 52 00 00 00 bc 00 00 00 ....8...R.......
...The character data start after the positions at 0xFF61C4A8 .
ROM:FF61C4A0: c6 bb 06 00 98 bc 06 00 01 00 01 00 0c 00 00 00 ................
...The structure of the character data: lW, hW, lH, hH, lCW, hCW, lXO, hXO, lYO, hYO, DT[], PD[]
lW,hW: width of the bitmap (low, high)
lH,hH: height of the bitmap
lCW,hCW: the actual character width
lXO,hXO: X offset of the character bitmap data
lYO,hYO: Y offset of the character bitmap data
DT[]: data bytes of the character bitmap, size: H*round up(W / 8 )
PD[]: padding bytes: 0-4(?) zero byte;
There are 2539 available characters (in 7D). You can see all here:
HCanonGothic 7D,
HCanonGothic 50D,
HCanonGothic 550DYou can find lots of different alphabets and also special icons in it.
Camera | 'HCanonGothic' | Char codes | Offsets | Bitmaps | chars |
5D2 | 0xFF05E9B0 | 0xFF05E9C0 | 0xFF061108 | 0xFF063850 | 2514 |
7D | 0xFF617540 | 0xFF617550 | 0xFF619CFC | 0xFF61C4A8 | 2539 |
60D | 0xFF7B1FA8 | 0xFF7B1FB8 | 0xFF7B4644 | 0xFF7B6CD0 | 2467 |
50D | 0xFF05E1C8 | 0xFF05E1D8 | 0xFF0608EC | 0xFF063000 | 2501 |
600D | 0xFF89476C | 0xFF89477C | 0xFF8971B0 | 0xFF899BE4 | 2701 |
550D | 0xFF661A94 | 0xFF661AA4 | 0xFF663F84 | 0xFF666464 | 2360 |
There is another font in similar structure but it's fixed width:
ROM:FF688228: 43 61 6e 6f 6e 4d 6f 6e 6f 73 70 61 63 65 00 00 CanonMonospace..The character codes from 0xFF688238
ROM:FF688238: 20 00 00 00 21 00 00 00 22 00 00 00 23 00 00 00 ...!..."...#...
ROM:FF688248: 24 00 00 00 25 00 00 00 26 00 00 00 27 00 00 00 $...%...&...'...
...The bitmap positions start after the character codes at 0xFF6883B8 .
ROM:FF6883B8: 00 00 00 00 82 00 00 00 04 01 00 00 86 01 00 00 ................
...The character data start after the positions at 0xFF688538 .
ROM:FF688538: 14 00 28 00 14 00 00 00 00 00 00 00 00 00 00 00 ..(.............
...You can calculate the offset (char index fom the code table multiply by 0x82) and not necessary look up for the code index.
The following 96 characters are available:
We can find the existing routines in the Canon firmware or we can write our own.