[C++] Problem with TrueTypeFont size?

Started by
4 comments, last by Acharis 11 years, 11 months ago
I wanted to render simple text (arial font, 16 pixels height). But when I create font via TTF_OpenFont(file, 16); the TTF_RenderText_Solid(font, string, color); renders text that look like around 12 pixels and rather distorted (actually, it does not look like any font size in graphics programs, it looks "broken" as if it was poorly resized). I have double checked the font and downloaded it from various sources, it is the proper "arial.ttf" (358 KB) so it can't be a problem here.

Any ideas where I should look? Something wrong in my code? Broken TTF library? Known bug in SDL?

Stellar Monarch (4X, turn based, released): GDN forum topic - Twitter - Facebook - YouTube

Advertisement
Some things that come to mind:

1. Are you calling TTF_Init() prior to using it?
2. Are you actually assigning the font variable with the line TTF_OpenFont(file, 16); ?
3. When rendering, is "string" a c string as oppsed to a std::string? (I guess this would give you a compiler error though)
4. Have you tried any other font to see if it works?
Unless SDL made up their own definition of point size (and has a very misleading documentation), then 16pt does NOT mean a letter will be 16 pixels. Assuming that you are at 72DPI, then 16pt means the distance between two baselines are 16 pixels. For explanatory pictures: http://www.oberonplace.com/dtp/fonts/fontsize.htm

About the broken look, I'd first try different sizes to see if any of them look "right" and then make sure there is nothing going on that would cause any scaling.
f@dzhttp://festini.device-zero.de
1,2,3 and 4 - yes, it renders as arial, it changes the size when I change the parameter, other fonts render as well, no errors at all.

In short everything is allright except that the final text looks ugly. Example:
http://i46.tinypic.com/1f8w7a.png (TTF_Init(); TTF_OpenFont(file, 16); TTF_RenderText_Solid(font, string, color); )
It should look, more or less, like this: http://i46.tinypic.com/5xqxb5.png
[ignore the black outline in the first image, it was done by rendering the same font 8 times with 1 pixel moved to make a simple outline, it is not related to TTF]

All I need is some normal font (like arial) that is not too big and does not look as if it was badly resized when rendered. Any clue how to achieve this?

Stellar Monarch (4X, turn based, released): GDN forum topic - Twitter - Facebook - YouTube

HI, ok.

Can I please see all code related to the surface being used as the screen, where you init it with SetVideoMode as well as when you render your text.

Thanks.
OK, got it. It was a bug in older version of SDL_ttf.dll (2.0.7). Changing DLLs to 2.0.11 fixed the problem (the older compiled version works fine with it, just using the newest dlls without any recompiling is enough).

BTW, do you know where I can dowload SDL_ttf dlls for versions 2.0.10, 2.0.9 or 2.0.8? I would like to check if some versions before 2.0.11 works (also I've read some rumours that 2.0.11 has some problems, so I would like to have a stack of other versions so I can check these in case of further unexpected problems).

Thanks to everyone who tried to help :)

Stellar Monarch (4X, turn based, released): GDN forum topic - Twitter - Facebook - YouTube

This topic is closed to new replies.

Advertisement