Thursday, August 4, 2011

Re: [android-developers] Strange effects on Android's truetype decoder

That's perfectly normal, text is hinted in the vertical direction by default on Android to make it more legible (and reduce glyph cache memory pressure).

On Wed, Aug 3, 2011 at 9:06 PM, guich <guihazan@gmail.com> wrote:
Hi,

If you call Paint.setTextSize and set it to a wide range, like 7 to
40, you will note that the transition is not smooth. Sometimes it
repeats the same height.

The code below illustrates what i mean (testing on an emulator for
android 2.2):

     Paint paint = new Paint();
     paint.setAntiAlias(antialiased);
     paint.setTypeface(Typeface.SERIF);
     paint.setColor(Color.BLACK);
     Rect r = new Rect();

     for (int i = 7; i < 40; i++)
     {
        paint.setTextSize(i);
        paint.getTextBounds("Ãg_",0,3,r);
        maxH = (int)(Math.abs(paint.descent()) +
Math.abs(paint.ascent()));
        int realH = Math.abs(r.top - r.bottom);
        println("size: "+i+", height: "+maxH+", realH: "+realH);
     }

And the output is:

size: 7, height: 8, realH: 9
size: 8, height: 9, realH: 10
size: 9, height: 10, realH: 10
size: 10, height: 11, realH: 13
size: 11, height: 12, realH: 13
size: 12, height: 13, realH: 15
size: 13, height: 15, realH: 15
size: 14, height: 16, realH: 17
size: 15, height: 17, realH: 17
size: 16, height: 18, realH: 19
size: 17, height: 19, realH: 19
size: 18, height: 20, realH: 20
size: 19, height: 22, realH: 23
size: 20, height: 23, realH: 23
size: 21, height: 24, realH: 26
size: 22, height: 25, realH: 26
size: 23, height: 26, realH: 28
size: 24, height: 27, realH: 28
size: 25, height: 29, realH: 29
size: 26, height: 30, realH: 29
size: 27, height: 31, realH: 32
size: 28, height: 32, realH: 32
size: 29, height: 33, realH: 33
size: 30, height: 34, realH: 35
size: 31, height: 36, realH: 35
size: 32, height: 37, realH: 38
size: 33, height: 38, realH: 38
size: 34, height: 39, realH: 40
size: 35, height: 40, realH: 40
size: 36, height: 41, realH: 42
size: 37, height: 43, realH: 42
size: 38, height: 44, realH: 44
size: 39, height: 45, realH: 44

Am I missing something? Why the gaps between the font sizes and the
heights? For example, size=30->31 has size 34->36. How can i achieve
height 35?

Even if i use a smaller increment for i, like 0.1 or 0.01, i don't
actually get a smooth scale for the font.

thanks

    guich

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

No comments:

Post a Comment