7

I'm using SFML in Visual Studio 2015 to make a game that requires me to print text. I try to load fonts and keep getting an error that says "failed to create the font face". I've tried loading several different fonts and none of them work, and they are in the correct directory, which is the folder where my project is located.

This is literally all it is, and it doesn't work:

 sf::Font font;
    if (!font.loadFromFile("arial.ttf"))
        return EXIT_FAILURE;

The ttf file for arial is in the same folder as the project itself, which is what seems to solve the problem for everyone else I find online who has the same issue. Any idea why the font still won't load?

SBE
  • 71
  • 1
  • 2
  • 3
  • Are you absolutely certain the current working directory when running the problem is the one where those font files are (i.e. did you verify it by for example printing the cwd before trying to load the file)? Did you try using an absolute rather than a relative path to the file? – Dan Mašek Apr 18 '16 at 22:23
  • @DanMašek Yeah I did both of those things and I still get the same issue. – SBE Apr 18 '16 at 23:30
  • Hmm. Are you trying this in Debug mode? If so, are you linking with the debug version of SFML? – Dan Mašek Apr 18 '16 at 23:37
  • @DanMašek yes, and the same error both with debugging and running it normally. – SBE Apr 18 '16 at 23:38

4 Answers4

5

The simple answer is, the file is not in your current working directory when you run your executable.

Try to put in a fully qualified filename. It will work.

Using Visual Studio, most likely this is the directory where your .vcxproj file resides.

If this does not work, you can find out what your current working directory is by checking this post for a generic way how to find out your current directory.

As a quick hack, you could just create a file when your program starts. Start once and check where the file gets created. This is the current directory.

Community
  • 1
  • 1
nvoigt
  • 75,013
  • 26
  • 93
  • 142
1

I fixed with this:

sf::Font font;
if (!font.loadFromFile("../arial.ttf")){
   return EXIT_FAILURE;
}

I'm using CLion on Ubuntu using SMFL also.

Jhon Paul
  • 143
  • 2
  • 7
1

To add to this, I was experiencing this same error when I thought I'd had everything typed properly. What ultimately ended up being the issue was that I had written .tff for the font file rather than .ttf, which, once corrected, fixed the problem.

1

My TTF file had no permissions once extracted from its archive. Executing chmod 644 font.ttf fixed the problem.

Chnossos
  • 9,971
  • 4
  • 28
  • 40