Good Neighbors pixel font
A happy little pixel bitmap font.
This font is designed to handle crisp pixel art scaling (nearest neighbor, aka no interpolation) and still be legible.
Where would this matter? I'm making pixel art games with approximately NES resolutions (240p). I have those games scale up to the browser/display size, keeping solid pixels (no blurring).
How this ends up working -- imagine you want to scale some pixel art up by 120%. That means every 5th row and column will become 2px thick. Usually that isn't noticeable, But it can be when tiny details matter, such as fonts.
I've included a comparison with two other fonts I've made here on OGA. The top font is a pixel sans font where all the strokes are 1px thick. The middle font is Boxy Bold. The bottom font is Good Neighbors. Each font is scaled at 100%, 133%, 166%, 200%, and 266%. All the fonts look great at 100% and 200% size. But the top font is hard to read at other sizes, while the bottom font is legible and keeps a good style.
Made for my game Recycle Sorter.
Good for educational games around NES/SNES pixel art size. Fits well at 16px line height. This version only includes ASCII 33-127.
![image/png good_neighbors.png](/modules/file/icons/image-x-generic.png)
Comments
Seriously smart font design there. Thanks for the generous license!
This is awesome!
Font itself is great! Nice and thick with a very cute kind of pillowy softness to it!
And the idea of a pixel font that scales well along uneven multiples is a fantastic one! Definitely an issue I've bumped into before, kudos to you for coming up with such an elegent (and good looking ;) solution!
Finally, you sir are a very good neighbor indeed for sharing with such a generous license!
Nice font.
Here's an XNA version.
This is great - thanks!
I split and repacked the font into the AngelCode format for use in Starling. I'm not sure how to directly link to it from here, but you can find it on my profile.
hey, the game (Recycle Sorter) is pretty rad too!
Plus, I totally spent five (or maybe ten ;) minutes just resizing my browser over and over to see how the font scaled and it looked super hot every time!
Requesting a TTF version. :)
I'm sure someone will create a TTF version (please do!).
Note though that the clever part of the font is kinda lost if you're doing vector font scaling. Fonts designed as vector first will turn out better.
And now, Good Neighbors can speak Russian, Ukrainian and Belarusian as well.
Tried to maintain the font's look, which meant using italicized versions of some letters. Hopefully, all the new letters work with nearest-neighbor scaling, too.
(The attached image is also licensed as CC0, so you're as free to use it just as well as the original one. The little Ukrainian/Belarusian flags at the bottom indicate where Russian letters end and UA/BY ones begin.)
Revision 2: fixed the outline/shadow on Д, З and ц.
usr_share that is amazing! Thanks for doing it!
If anyone wants to help expand the coverage to more languages, I'd recommend using the characters described here. https://en.wikipedia.org/wiki/ISO/IEC_8859-15
Those characters would cover the languages: Afrikaans, Albanian, Breton, Catalan, Danish, Dutch, English, Estonian, Faroese, Finnish, French, Galician, German, Icelandic, Irish, Italian, Kurdish, Latin, Luxembourgish, Malay, Norwegian, Occitan, Portuguese, Rhaeto-Romanic, Scottish Gaelic, Scots, Spanish, Swahili, Swedish, Tagalog, Walloon.
---
Some basic recommendations when making characters: the vertical lines are 2px wide. The bottom horizontal line is 2px wide, and higher horizontal lines are 1px. There is a black outline, and also a 1px drop shadow straight down. Feel free to increase the total font height to make accent marks and diacritics look correct.
When used, kerning should be "-1px", as in, neighboring letters should have overlapping black outlines.
P.S. With regards to scaling in general, have you tried doing the following: find the largest integer scaling factor that fits in the screen, scale nearest-neighbor to that, then scale to fit the entire screen with an antialiasing method?
This seems to work well for some emulators (like the Ex Plus Alpha ones or mednafen).
usr_share: I haven't tried that, but it sounds interesting! I'll keep that in mind if I ever polish up an app version of one of my games.
I wanted to use this font as a Bitmap Font in my libGdx project. Sadly the xml PROWNE provided for it doesn't work in libGdx, so I translated it to a .fnt file with allot of tedious editing. It's probably not perfect, but it's as good as I got it. Use it together with the arranged picture in Prowne's version.
Download:
http://www.mediafire.com/download/l8xa337gybz6ofe/good_neighbors.fnt
This is how it looks when used:
![](http://abload.de/img/test74qpf.png)
It looks like for a few letters the outline doesn't overlap as it was intended to. Maybe someone could take a look at it. A ttf version would great too!
And as I said earlier, use the fnt file together with the arranged png file inside PROWNE's version. I hope this helps someone. This a great Font :)
_____________________________________________________________
Extra for anybody wondering how to use a custom bitmap font inside libGdx:
BitmapFont bFont;
bFont = new BitmapFont(Gdx.files.internal("location of fnt file"),
Gdx.files.internal("location of picture"), true/false);
To write with the font:
bFont.draw(spriteBatcher, "text", x, y);
Just to round out some languages, I created some new characters with diacritics, inverted question and exclamation marks, AE and OE ligatures, and eszett. However, I couldn't get Ø to look quite right - if any true pixel artists want to fix it, please do.
Anyway, this expands the font to be able to display text in English, French, Spanish, German, Italian, Portuguese, Turkish, Danish, Norwegian, Swedish, and Dutch, as well as usr_share's contribution of Russian, Ukrainian, and Belarusian.
Should anyone need it, here's a string of all the characters (in order):
!"#$%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюяЄІЇЎҐєіїўґ
ÄäÀàÂâÁáÃãÅåÆæÈèÊêÉéÇçĞğÎîÍíİıÑñÖöÒòÔôÓóÕõŒœØøŞşÜüÙùÛûÚúŸÿ¿¡ß
PROWNE, these are awesome! The language coverage for the font is pretty impressive already.
Thanks! I noticed, however, that usr_share's lowercase Russian characters don't match the lowercase characters in the string in my post. I'm not sure if that's by design or not as I have absolutely no familiarity with Russian.
Actually, some Russian characters have several forms. I used the italicized ones for a few characters, so that they wouldn't look so cramped. The open-source "Terminus" font does the same thing for its Cyrillic characters:![A huge wall of Russian text, set in Terminus.](http://storage6.static.itmages.ru/i/13/0224/h_1361655284_1271438_b0fa1f585c.png)
Ah, okay, thanks for clarifying.
Thank you
Thank you indeed, great font!
Hi, I extended PROWNE's version with two missing chars for Hungarian: Őő and Űű
Hi! Still love this font! In fact, I used it all over my entry into OGA's Summer 2019 Game Jam!
I did some tweaking, enlarged the numbers to 8x16 and also shrunk them to 8x8 and enlarged the characters to 9x15. Packed the results into my submission for Miracle Math Land art but posting them here also so interested parties can get them without having to dig around.
I can't seem to find that first font in your profile. Am I just missing it?
Vector Font - OTF
I am so much in love with this font that with the help of AI, Illustrator, FontForge and Python, I painstakingly converted it from bmp to a vector font. This now can be used everywhere, including Unreal Engine.
If you want to use backgrounds other than white you will need to also use the Fill font and layer both.
15/07- Fixed space width issue.
Good Neighbors - Outline
https://www.mediafire.com/file/kgo9x77ux2vjkr7/Good_Neighbors_Outline.ot...
Good Neighbors - Fill
https://www.mediafire.com/file/tsedssdwofo8z5r/Good_Neighbors_Fill.otf/file
Supported characters:
!"#$%&'()*+,-./0123456789:;<=>@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюяЄІЇЎҐєіїўґ
ÄäÀàÂâÁáÃãÅåÆæÈèÊêÉéÇçÎîÍíÑñÖöÒòÔôÓóÕõŒœØøÜüÙùÛûÚúŸÿ¿¡ß