Odd glitch with font rendering?

BlitzMax Forums/BlitzMax Programming/Odd glitch with font rendering?

It seems that fonts are rendered in a very ugly way if you specify their position using a non-whole number:

Graphics 800,600,0


SetBlend ALPHABLEND


Local displayText:TImageFont=LoadImageFont("C:\Windows\Fonts\ariblk.ttf",16,SMOOTHFONT)
SetImageFont displayText



Repeat
	
	DrawText "This Text Looks Wrong (Position with decimal)",50.5,50.5
	
	
	DrawText "This Text Looks Fine (Using integers to set position)",55,95
	
	Flip
	Cls
Until KeyHit(KEY_ESCAPE)


In addition, what exactly does it mean if you specify the position of something with a non-whole number? Since the smallest unit of display is the pixel. Does it colour nearby pixels (ie. if you were to draw a red pixel at 0.5,0.5 how would that be shown)

Like scaling and rotation, subpixel positioning will use bi-linear filtering to determine target pixel color. The result is OK for moving text but yes, stationery text should be positioned on pixel boundaries for best effect.

There is another strage thing. Try it with fontsize of 120 or higher and the program crashes. use a fontsize lower then 120 an it will render the text.

Tried it with another font and there the 'crashing-border' is only 30. Very strange.

Greetings
Mirko

Confirmed.

I get an 'Unhandled Memory Exception Error' in a call to FT_Render_Glyph inside the TFreeTypeFont.Load function. [freetypefont.bmx - Line 163]

Robert, I have a problem with displaying fonts too, but the problem is slightly different. When running a slightly modified version of your original code:
Graphics 800,600,0


SetBlend ALPHABLEND


Local displayText:TImageFont=LoadImageFont("C:\Windows\Fonts\ariblk.ttf",16,SMOOTHFONT)
Local displayText2:TImageFont=LoadImageFont("c:\windows\Fonts\times.ttf", 16, SMOOTHFONT)
Local displayText3:TImageFont=LoadImageFont("c:\windows\Fonts\tahoma.ttf", 16, SMOOTHFONT)

Repeat
	SetImageFont displayText
	DrawText "ARIBLK.TTF - ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 10, 10
	SetImageFont displayText2
	DrawText "TIMES.TTF - ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 10, 50
	SetImageFont displayText3
	DrawText "TAHOMA.TTF - ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 10, 100
	Flip
	Cls
Until KeyHit(KEY_ESCAPE)


When I run this on my main PC (ATI radeon 9600 graphics card) everything is fine. When I run it on my laptop (integrated 64meg VIA/S3G Unichrome IGP) I find that, for all three fonts, the characters I, i and l (lower case L) are displayed corrupted; they are displayed at half the height they should be. All the other characters are displayed correctly.

I also find this behaviour happening when I am running Filax's IGlass gui.

Mark - if you would like a screen dump showing this problem let me know and I will email it to you.

Regards,
Darryl.