I just released
ShoeBox version 3.2.0download available at:
http://renderhjs.net/shoeboxVersion 3.2.0 has the
kerningall working and implemented. I am actually quite proud of how this now works with its all automated optical kerning with quite nice results.
In the settings panel you can define whether you want to build the kerning pairs. I have about
500+ kerning pairs added as a default which I got from a typography website. If 2 characters don't seem to kern at all in your preview window you can add them in this list seperated by a space character.
The 3rd variable is the
kerning rays value which determines how many rays should be cast for each bitmap character. This screenshot shows the green rays hitting the bitmap silhouette.
By averaging each side's rays lengths into a volume unit I can then determine the optical kerning as in volume that fits between character pairs.
For each of those kerning pairs it will determine a kerning offset on top of the regular kerning distance. It will store this information in the *.fnt format like this:
kernings count=760
kerning first=62 second=62 amount=-1
kerning first=61 second=62 amount=-1
kerning first=247 second=62 amount=-1
kerning first=165 second=247 amount=-2
kerning first=165 second=188 amount=-1
But of course this can be fully customized. I will update the documentation page soon with all the added dynamic variables for the output syntax.
For
very big bitmap font input bitmaps I rewrote the whole bitmap font parsing part so that it supports
multiple rows should you input bitmaps that exceed 8191 in width or height.
This makes sense if your characters have a rather HD resolution or you have a lot of characters like eastern languages.
Another new feature that was added to the sprite packer is the
pixel extruding feature.
It lets you extrude border pixels of sprites so that when you render them in hardware acceleration or with texture filtering bordering pixels are preserved at all costs even when the UV coordinates shift.
Lastly a little trick that I have been sharing with some people lately: If you want to force some pixels to connect as one blob or pixel character e.g. in the Bitmap font tool or sprite extractor tool do this:
Add a outline filter in PS to your sprite that you want to merge with its close surrounded pixel islands, make sure that the thickness connects the islands you want to be connected and then change its opacity to 1%. This will trick your eye as you will not be able to see this very opaque black border but it will not trick ShoeBox as it will assume that all those elements are one blob to parse.