Sign in to follow this  

[C++] Problem with TrueTypeFont size?

This topic is 2052 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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?

Share this post


Link to post
Share on other sites
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? Edited by AlanSmithee

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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:
[url="http://i46.tinypic.com/1f8w7a.png"]http://i46.tinypic.com/1f8w7a.png[/url] (TTF_Init(); TTF_OpenFont(file, 16); TTF_RenderText_Solid(font, string, color); )
It should look, more or less, like this: [url="http://i46.tinypic.com/5xqxb5.png"]http://i46.tinypic.com/5xqxb5.png[/url]
[i][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][/i]

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? Edited by Acharis

Share this post


Link to post
Share on other sites
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 :)

Share this post


Link to post
Share on other sites

This topic is 2052 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this