PS3 [RESEARCH] Special characters in imagefont.bin - Emojis icons symbols

I finally found time to read, and understand fully that thread. It was nice to read thru all progress that was made within few days. Good work guys!
 
I imagined another couple of tests (additionally to the other test i mentioned before to verify how the timers works) that could have a good chance of success and could be custom handy features
Both are based on the same concept, short explain... all the icons inside imagefont.bin and glyphs/characters inside the TTF files uses the same unicode id's
So technically it could be posible to have a specific unicode id icon inside imagefont.bin and a glyph/character for the same unicode id inside the TTF files
In the official imagefont.bin doesnt happens what im saying (as far i could see there is not a "low quality" of the icons from imagefont.bin inside the TTF files)

But the question, is what could happen in this scenario ?... or in other words "who" has preference, the TTF files, or imagefont.bin ?
Im guessing imagefont.bin has preference... so in the scenario im describing the firmware should load the icon inside imagefont.bin (instead the glyph/character for the same unicode id inside the TTF files)

If im right this is handy, because it means we can modify imagefont.bin by adding new custom icons that should "override" the low quality icons existant inside the TTF files
The idea is not to replace normal glyps/characters that appears very frenquentlly (we dont want to remap the whole character map) but only a few that could be interesting
Best candidate is the "star" used at the beginning in the text string "install package files" (unicode hex: u2605 and UTF-8 hex: 0xE29885)

By now we cant add custom icons inside imagefont.bin but from the icons availables maybe is posible to reuse them, good candidate is the "present" icon (is like a box, pretty close to a package)
Also 0xEF99B2 for rebug :P @Joonie (they was polite to add a bug in there)
My favourite is 0xEF91B3 though (the skull)
See the codes in this message ---> http://www.psx-place.com/threads/sp...characters-on-the-xmb.13985/page-3#post-81521

So instead of adding new custom icons lets try to reuse that ones for the first test

Test 1
------
Add a new entry in the index with the unicode id of the "star" used in "install package files" containing the offset of the "target" icon we want to use for it
For this there is no need to rebuild imagefont.bin there is only needed to make 2 changes:
-increase +1 the index_entries (absolute offset 0x02, lenght 0x02) at the imagefont.bin header
-add a new entry in the index at bottom of imagefont.bin with unicode id 2605 and using the offsets of the "target" zlib from the existant ones (the present icon, the bug, the skull, i suggested or any other)

I have doubts in which position it should be added the entry in the index, maybe works at any position, maybe is better to add it at the end... im not sure but i think it could work in any position (preferabilly at the end to avoid modifying the index too much)

Test 2
------
This test is just an intermediary step before being able to add fully custom new icons, the point is for this is going to be needed to add new files (compressed in zlib) to the structure, but by now we dont have an script to rebuild it properly, and doing it by hand is insane
So a dirty solution could be to add the zlibs at the end, also because we cant create custom icons we can take one of the existan ones and duplicate it by adding it the end
Any candidate is fine for this test, because we need to add a new entry in the index for it, so it can be mapped to any glyph/character (because is for a test you can map it to the character "a" and will be displayed everywhere)

Im calling this a "dirty" experiment because im suggesting to add all the custom zlibs at the end (just before the index), this doesnt follows the standard structure, but i think it could work
If it works... this a an affordable method to add new icons manually (without the need of an script and without rebuilding the structure) the changes needed to do this are minimal, so it doesnt takes too much time
 
Last edited:
There has been quite the discussion going on about this behind the scenes, @littlebalup and @sandungas have basically completely reversed the imagefont.bin and we now know almost everything about this file. A bonus to this is that the imagefont.bin on the Vita is almost exactly the same. Sandungas has detailed a lot of what we now know here http://www.psdevwiki.com/ps3/XMB_Fonts#imagefont.bin , while littlebalup has been working on extracting and rebuilding the file.

Here are a few screenshots of some progress.


Extraction script output:
fO3X8HStTQeefmhwUJQGvg.png


PS2 icon from the Vita imagefont.bin added to the PS3 in an unused "slot":
qgZHNs5.png


Completely custom icon added in an unused "slot":
gxnmbTa.png


So..looking good. :) Check it out @Berion
 
These are like font characters, so they can only be used where text is displayed.

And yes there are animated ones. like GIFs. I posted this video already.


We have discovered more since then too, see post #56
 
It's possible to add glyphs larger in unused space?
There is no limitation in icon dimensions, this limitation is made by the enviroment where is going to be displayed

Initially, most of the icons has the same size (dont remember right now) that should be related with the standard font height.... because most of this icons are intended to be displayed in between text lines (system messages, chat or other places like that in between text)
There is a group of icons (with logos) that has different sizes... as far i know... we have no idea where are displayed in ofw lol, but doesnt matters much, what matters is even the logos (with variable sizes) can be used in between text lines

About the animations, think in them as a .gif.... the icon is composed by several frames, and every frame is a different image
The file format stores this images separatedly, and uses a common "palette" where are indicated the times lenght for each frame, also a colormap (for 256 indexed colors in RGBA format) and not much
More info in the wiki page, this is the basic

About the littlebalup tools all i can say by now is are working very solid, can be labeled as "perfect" at this point, the reason why the release is been delayed a bit is because we are looking for some small details (max and min values, conversion scales, and things like that)
But are the kind of details other people could find by themself by making experiments with the tools

There are only 3 values of the structure unknown... but this is another story and by now is a road end (there could be some easter egg feature in them though)
 
Thanks for clarification. So, are we be able to add also "sequenced images" by this app?

Yes. Just made the first custom animated icon from this gif:
small.gif

Caracteristics: 80 miliseconds per frames, 24 frames.

To give you some taste of the procedure:
- Used my python script to extrac/decompress each frames and palette data from the imagefont.bin file. It gives decrypted binary files for each icons (see http://www.psdevwiki.com/ps3/XMB_Fonts#imagefont.bin for details) those files must be re-used later to rebuild the new
imagefont.bin file. It also generates a CSV spredsheet file that reflect the organization and parameters of the icons inside the imagefont.bin file (index).
- Using GIMP, I converted each frames of the GIF to TARGA image format (type 1, 32 bits).
Note: This file format is very close to the format used by our icons binary files. Unfortunatly this tga format is not well supported by the various image editor softwares... (gimp is able to create them properly but not to read them...).
- Using hex editor (not yet made a script for that part), I manually converted those TGA files to new icon binary files (one palette file, that include color codes and times, and 24 frames).
- Edited the CSV spredsheet to add the new entry for this animated icon to the index (choosing an unused unicode code point and giving the icon size and frame numbers.
- Then used my script to repack/compress all together to a new imagefont.bin file.

So, as you can read, the "app" is in fact a suite of pyton scripts to unpack/repack imagefont.bin file. Then used some tricks to make custom icons using GIMP and hex editor for the moment. I already made a script to convert unpacked binary files to readable TGA image files. I still have to made one to easily convert TGA images to binary files.
It should be possible to convert directly to/from GIF but I'll have to make much more searchs (maybe using PIL).
 
This Link animation is epic. :}

Everyone talking about app so I assumed it's an app. But it's ok, I'm fine with python. Also I'm fine with Targa (I'm not sure what mean type 1, as I saw in apps only option to render it from top to down, and reverse, with or without RLE compression). And never I using GIF's (in Photoshop I have timeline to setup layers appearing and time stamps).
 
Are there some people here able to help us to test icons on the Vita? I have no idea how we could do that easily.
The list of the available icons from the imagefont.bin file of the vita:
Unicode CPUTF-8
U-2120E284A0
U-F880EFA280
U-F881EFA281
U-F882EFA282
U-F883EFA283
U-F884EFA284
U-F885EFA285
U-F886EFA286
U-F887EFA287
U-F888EFA288
U-F889EFA289
U-F88AEFA28A
U-F88BEFA28B
U-F88CEFA28C
U-F88DEFA28D
U-F88EEFA28E
U-F88FEFA28F
U-F892EFA292
U-F898EFA298
U-F899EFA299
U-F89AEFA29A
U-F8ACEFA2AC
U-F8ADEFA2AD
U-F8AEEFA2AE
U-F8AFEFA2AF
U-F8B6EFA2B6
U-F8B9EFA2B9
U-F8BAEFA2BA
U-F8BBEFA2BB
U-F8BCEFA2BC
U-F8BDEFA2BD
U-F8C8EFA388
U-F8C9EFA389
U-F8E0EFA3A0
U-F8E1EFA3A1
U-F8E2EFA3A2
U-F8E3EFA3A3
U-F8E4EFA3A4
U-F8E5EFA3A5
U-F8E6EFA3A6
U-F8E7EFA3A7
U-F8EAEFA3AA
U-F8EBEFA3AB
U-F8ECEFA3AC
U-F8EDEFA3AD

overview:
2AeX9kUoTs_KpLib6-c0FA.png
 
Last edited:
This Link animation is epic. :}

Everyone talking about app so I assumed it's an app. But it's ok, I'm fine with python. Also I'm fine with Targa (I'm not sure what mean type 1, as I saw in apps only option to render it from top to down, and reverse, with or without RLE compression). And never I using GIF's (in Photoshop I have timeline to setup layers appearing and time stamps).

There are various types of TGA format. Basicaly:
- TYPE 1: Color-mapped images
- TYPE 2: Unmapped RGB
- TYPE 9: Run Length Encoded (RLE compression), color-mapped images
- TYPE 10: Run Length Encoded (RLE compression), RGB images

And of couse there are variants for each type. (see : http://www.paulbourke.net/dataformats/tga/ )
The TGA that is the more close from our bin format is the type 1 (color mapped, without compression) with colors encoded on 32 bits (4 bytes BGRA) and origin from the upper-left.
 
Last edited:
I had an idea for a real world use for this new knowledge, could add a green "success" text, and red "failed" text, could be used in pop up notifications for things like certain xai and webman mod operations.

For testing on the Vita I am not sure. I suppose replacing a current button icon would be easy enough, then checking the menu where that icon shows. Maybe we could test icons in app titles on the Vita, that would be an easy way to test. (but doesn't seem to work on PS3).

I wonder can we edit Vita RCOs yet or do we know where any of the systems text strings are located? @atreyu187 do you know much about that?
 
it's amazing how much this has progressed. I was using the up and down triangles and the star to spite sony, but now there r so many more options. u can, of course, use the clock to create an animated icon. that's as far as I've gotten with it. great job!
 
Very nice work :)

Now we know custom icons can be used on the Vita, and that they can be used in app titles, and that animated icons work too.
 

Similar threads

Back
Top