Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use a local font in Phaser 3?

I have a font in a fonts/ directory. How do I load this into the game, then use it on a text object in my game? I haven't been able to find anything on using fonts in Phaser 3.

like image 343
Gage Hendy Ya Boy Avatar asked Jul 06 '18 20:07

Gage Hendy Ya Boy


2 Answers

Pure JS Solution:

Here's a small function I made, which only requires the font name and url:

function loadFont(name, url) {
    var newFont = new FontFace(name, `url(${url})`);
    newFont.load().then(function (loaded) {
        document.fonts.add(loaded);
    }).catch(function (error) {
        return error;
    });
}

And use it like:

loadFont("mixolydian", "assets/fonts/mixolydian.ttf");

That's it! You can now use your custom font in Phaser. All you have to do is change the fontFamily value to your new font name (i.e. mixolydian).

like image 136
Nanoo Avatar answered Oct 12 '22 06:10

Nanoo


First use css to load your font(@fontface):

<style media='screen' type='text/css'>
      @font-face {
        font-family: font1;
        src: url('media/yourfont.ttf');
        font-weight:400;
        font-weight:normal;
      }
</style>

And then use a div to load your font:

<div style="font-family:font1; position:absolute; left:-1000px; visibility:hidden;">.</div>

Now you can put it in add it in your game:

this.add.text(190, 136, 'text', {
    fontFamily: 'font1',
});
like image 28
NoobTW Avatar answered Oct 12 '22 04:10

NoobTW