|
1 |
| -# heaps-msdf-text |
2 |
| -Simple extension of the Heaps' Text class to support outlines using multi-channel SDF. |
| 1 | +# Introduction |
| 2 | +Simple extension of the Heaps' Text class that supports outlines using multi-channel SDF. Should work as a drop-in replacement for any Text instance you're using. Tested in HashLink, Flash, and HTML5. |
| 3 | + |
| 4 | +# Usage |
| 5 | +##### 1. Creating an SDF texture |
| 6 | +Rendering a font with SDF for Heaps can be a little tricky since not only you need it to be compatible with the shading logic I'm using, you also need to export it in a proper format. Of all the tools I've tried [msdf-gdx-gen](https://github.com/maltaisn/msdf-gdx-gen) gave the best results, however it requires Java to run. |
| 7 | +Here's an example of a command you can use to create a compatible font: |
| 8 | +`java -jar msdfgen.jar -t msdf -a sdf -s 64 -r 22 -c latin-9 yourfont.ttf -p 2 -d 2048 2048` |
| 9 | + |
| 10 | +##### 2. Instantiating the MSDF font in your application |
| 11 | +Once you have your *.fnt* and *.png* files exported, put them somewhere in your project's folder, and then instantiate the related Font object using the `toSdfFont` method. |
| 12 | +`var fnt:Font = Res.yourfont.toSdfFont(48, SDFChannel.MultiChannel);` |
| 13 | +Note: Non-multichannel fonts are also supported, but you need to export them using a different set of *msdfgen.jar* export options. |
| 14 | + |
| 15 | +##### 3. Create an OutlinedText object and configure it to display the outlines |
| 16 | +Download all the classes located in the *src* folder and place them in your project's source folder. |
| 17 | +Finally you can create the `OutlinedText` object and pass into it the previously instantiated Font: |
| 18 | +`var txt:OutlinedText = new OutlinedText( fnt );` |
| 19 | +By default `OutlinedText` does not display any outlines, so you need to enable them by setting the `outline` property to `true`. Now only thing left to do is to mess around with `OutlinedText`'s properties to create the desired look. |
| 20 | + |
| 21 | +*Thickness* controls the cut off point for the font rendering. It's the same value as `alphaCutoff` passed to the `toSdfFont` method. |
| 22 | + |
| 23 | + |
| 24 | +*Smoothness* controls the blur on the edges of the rendered font. It's the same value as `smoothing` passed to the `toSdfFont` method. |
| 25 | + |
| 26 | + |
| 27 | +*Outline thickness* controls the cut off point for the outlines. The outlines will be rendered in between this value and the *thickness* value. |
| 28 | + |
| 29 | + |
| 30 | +*Outline smoothness* controls the blur on the edges of the rendered outlines. |
| 31 | + |
| 32 | + |
| 33 | +##### 4. Miscellaneous stuff |
| 34 | +Setting the `font` property will instantly reset all outline properties on the `OutlinedText` object. This allows `OutlinedText` to directly replace any `Text` without (hopefully) any changes. |
| 35 | +If you want to see some examples on how to use `OutlinedText` check out the *src-example* folder. |
0 commit comments