Fnt file for pixel font adding weird artifacts to a few characters

Godot Version

Godot 4.4.1, Windows 11

Question

Our monospaced bitmap pixel font comes in cleanly from the imported .png file (

). However, when I use the .fnt file, there are artifacts introduced for characters 0, 1, 3, 4, 5, 6, 8 and the round brackets (). Everything else is fine. I’ve poured over the .fnt file and can’t figure out why.

I’d love any ideas how to fix this!

Here’s a screenshot of the .png with pixel lines and a colored background to see more easily:

And here’s the .fnt file:

info face=“mistletoe_clean” size=9 bold=0 italic=0 charset=“” unicode=1 stretchH=100 smooth=0 aa=1 padding=0,0,0,0 spacing=1,1 outline=0
common lineHeight=12 base=12 scaleW=112 scaleH=54 pages=1 packed=0 alphaChnl=2 redChnl=0 greenChnl=0 blueChnl=0
page id=0 file=“Assets/Fonts/clean_font.png”
chars count=100
char id=32 x=0 y=0 width=7 height=9 xoffset=0 yoffset=0 xadvance=2 page=0 chnl=15 letter=" "
char id=33 x=7 y=0 width=7 height=9 xoffset=0 yoffset=0 xadvance=2 page=0 chnl=15 letter=“!”
char id=34 x=14 y=0 width=7 height=9 xoffset=0 yoffset=0 xadvance=4 page=0 chnl=15 letter=“”"
char id=35 x=21 y=0 width=7 height=9 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=15 letter=“#”
char id=36 x=28 y=0 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“$”
char id=37 x=35 y=0 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“%”
char id=38 x=42 y=0 width=7 height=9 xoffset=0 yoffset=0 xadvance=5 page=0 chnl=15 letter=“&”
char id=39 x=49 y=0 width=7 height=9 xoffset=0 yoffset=0 xadvance=2 page=0 chnl=15 letter=“'”
char id=40 x=56 y=0 width=7 height=9 xoffset=0 yoffset=0 xadvance=3 page=0 chnl=15 letter=“(”
char id=41 x=63 y=0 width=7 height=9 xoffset=0 yoffset=0 xadvance=3 page=0 chnl=15 letter=“)”
char id=42 x=70 y=0 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“*”
char id=43 x=77 y=0 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“+”
char id=44 x=84 y=0 width=7 height=9 xoffset=0 yoffset=0 xadvance=3 page=0 chnl=15 letter=“,”
char id=45 x=91 y=0 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“-”
char id=46 x=98 y=0 width=7 height=9 xoffset=0 yoffset=0 xadvance=3 page=0 chnl=15 letter=“.”
char id=47 x=105 y=0 width=7 height=9 xoffset=0 yoffset=0 xadvance=4 page=0 chnl=15 letter=“/”
char id=48 x=0 y=9 width=7 height=9 xoffset=0 yoffset=0 xadvance=5 page=0 chnl=15 letter=“0”
char id=49 x=7 y=9 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“1”
char id=50 x=14 y=9 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“2”
char id=51 x=21 y=9 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“3”
char id=52 x=28 y=9 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“4”
char id=53 x=35 y=9 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“5”
char id=54 x=42 y=9 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“6”
char id=55 x=49 y=9 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“7”
char id=56 x=56 y=9 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“8”
char id=57 x=63 y=9 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“9”
char id=58 x=70 y=9 width=7 height=9 xoffset=0 yoffset=0 xadvance=2 page=0 chnl=15 letter=“:”
char id=59 x=77 y=9 width=7 height=9 xoffset=0 yoffset=0 xadvance=2 page=0 chnl=15 letter=“;”
char id=60 x=84 y=9 width=7 height=9 xoffset=0 yoffset=0 xadvance=4 page=0 chnl=15 letter=“<”
char id=61 x=91 y=9 width=7 height=9 xoffset=0 yoffset=0 xadvance=5 page=0 chnl=15 letter=“=”
char id=62 x=98 y=9 width=7 height=9 xoffset=0 yoffset=0 xadvance=4 page=0 chnl=15 letter=“>”
char id=63 x=105 y=9 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“?”
char id=64 x=0 y=18 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“@”
char id=65 x=7 y=18 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“A”
char id=66 x=14 y=18 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“B”
char id=67 x=21 y=18 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“C”
char id=68 x=28 y=18 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“D”
char id=69 x=35 y=18 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“E”
char id=70 x=42 y=18 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“F”
char id=71 x=49 y=18 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“G”
char id=72 x=56 y=18 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“H”
char id=73 x=63 y=18 width=7 height=9 xoffset=0 yoffset=0 xadvance=4 page=0 chnl=15 letter=“I”
char id=74 x=70 y=18 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“J”
char id=75 x=77 y=18 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“K”
char id=76 x=84 y=18 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“L”
char id=77 x=91 y=18 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“M”
char id=78 x=98 y=18 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“N”
char id=79 x=105 y=18 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“O”
char id=80 x=0 y=27 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“P”
char id=81 x=7 y=27 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“Q”
char id=82 x=14 y=27 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“R”
char id=83 x=21 y=27 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“S”
char id=84 x=28 y=27 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“T”
char id=85 x=35 y=27 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“U”
char id=86 x=42 y=27 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“V”
char id=87 x=49 y=27 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“W”
char id=88 x=56 y=27 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“X”
char id=89 x=63 y=27 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“Y”
char id=90 x=70 y=27 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“Z”
char id=91 x=77 y=27 width=7 height=9 xoffset=0 yoffset=0 xadvance=3 page=0 chnl=15 letter=“[”
char id=92 x=84 y=27 width=7 height=9 xoffset=0 yoffset=0 xadvance=4 page=0 chnl=15 letter=“"
char id=93 x=91 y=27 width=7 height=9 xoffset=0 yoffset=0 xadvance=3 page=0 chnl=15 letter=”]"
char id=94 x=98 y=27 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“^”
char id=95 x=105 y=27 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“_”
char id=96 x=0 y=36 width=7 height=9 xoffset=0 yoffset=0 xadvance=2 page=0 chnl=15 letter=“`”
char id=97 x=7 y=36 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“a”
char id=98 x=14 y=36 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“b”
char id=99 x=21 y=36 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“c”
char id=100 x=28 y=36 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“d”
char id=101 x=35 y=36 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“e”
char id=102 x=42 y=36 width=7 height=9 xoffset=0 yoffset=0 xadvance=5 page=0 chnl=15 letter=“f”
char id=103 x=49 y=36 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“g”
char id=104 x=56 y=36 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“h”
char id=105 x=63 y=36 width=7 height=9 xoffset=0 yoffset=0 xadvance=4 page=0 chnl=15 letter=“i”
char id=106 x=70 y=36 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“j”
char id=107 x=77 y=36 width=7 height=9 xoffset=0 yoffset=0 xadvance=5 page=0 chnl=15 letter=“k”
char id=108 x=84 y=36 width=7 height=9 xoffset=0 yoffset=0 xadvance=4 page=0 chnl=15 letter=“l”
char id=109 x=91 y=36 width=7 height=9 xoffset=0 yoffset=0 xadvance=8 page=0 chnl=15 letter=“m”
char id=110 x=98 y=36 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“n”
char id=111 x=105 y=36 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“o”
char id=112 x=0 y=45 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“p”
char id=113 x=7 y=45 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“q”
char id=114 x=14 y=45 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“r”
char id=115 x=21 y=45 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“s”
char id=116 x=28 y=45 width=7 height=9 xoffset=0 yoffset=0 xadvance=5 page=0 chnl=15 letter=“t”
char id=117 x=35 y=45 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“u”
char id=118 x=42 y=45 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“v”
char id=119 x=49 y=45 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“w”
char id=120 x=56 y=45 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“x”
char id=121 x=63 y=45 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“y”
char id=122 x=70 y=45 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“z”
char id=123 x=77 y=45 width=7 height=9 xoffset=0 yoffset=0 xadvance=4 page=0 chnl=15 letter=“{”
char id=124 x=84 y=45 width=7 height=9 xoffset=0 yoffset=0 xadvance=2 page=0 chnl=15 letter=“|”
char id=125 x=91 y=45 width=7 height=9 xoffset=0 yoffset=0 xadvance=4 page=0 chnl=15 letter=“}”
char id=126 x=98 y=45 width=7 height=9 xoffset=0 yoffset=0 xadvance=6 page=0 chnl=15 letter=“~”

In case someone comes across this in the future, I ended up using PixelForge to easily create a TTF version of the font, which works great when I bring it into my Godot project. You can find it here: PixelForge by Sergi Lazaro

Hi, Lojza here. The guy from the future :wink:

I recreated the font texture atlas, imported the .fnt file you posted into FNTbyMemeorites (disclosure: I’m the author of the tool), tweaked the glyph regions slightly, and exported a new .fnt file. It seems to work fine in Godot now. I’m not sure whether the original texture, the .fnt definition, or an older version of Godot was the culprit, but feel free to use FNTbyMemeorites any time you need to work with bitmap fonts :slight_smile:

The updated texture and .fnt file are here (Google Drive link): artifact_pixel_font_new.zip. Hope it helps!

And here’s a screenshot from Godot: