Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

anti-alias fonts on android properly?

is there any way to render text with custom fonts (though i suppose the system font probably won't be much different) in a visually pleasing manner?

i render my text in a canvas, using a paint i've assigned a custom typeface to.

the only command i've found that remotely relates to anti-aliasing is the "setAntiAlias" of the paint. but the text still looks horrible. almost as bad as no anti-aliasing at all in photoshop.

so... is there any way to do that?

and... since this is for a game, bitmap fonts are a commonly offered alternative but as i want to have proper letter spacing, i'd have to program quite a complex bitmap font class to achieve that. because i haven't found an already existing one. only libgdx seems to contain one. but that one is tightly integrated with the library and a lot would have to be modified. so if anybody here knows of one that doesn't require that - that would also be of great help.

snippets from my code as reference although it's so basic and works perfectly fine that i don't imagine it's of relevance:

    textPaint = new Paint();
    textPaint.setTextSize(size);
    textPaint.setAntiAlias(true);
    textPaint.setARGB(0xff, 0xff, 0xff, 0xff);
    textPaint.setTypeface(Typeface.createFromAsset(pView.getContext().getAssets(),
            "fonts/cordia.ttf"));
...
    canvas.drawText(text, (int)(dimension / 2 - textwidth / 2), 
              (int)(dimension / 2 - size / 2), textPaint);
like image 864
edwardh Avatar asked Nov 14 '22 21:11

edwardh


1 Answers

You could build freetype (http://freetype.org/) for Android. It has only dependency against zlib and resulting fonts are very nice. Most patent issues were solved recently (patents expired).

like image 76
plasmatron Avatar answered Dec 16 '22 15:12

plasmatron