Hi everybody! I'm about to release my first full-scale project, but I have one final obstacle to contend with: font choice. I have 3 options, and I just wanted to see what you guys thought would be good.
Option 1:
Option 2:
Option 3:
Options 1 and 3 have support for uppercase and lowercase letters (though, conversely, option 2 supports symbols). Option 3 looks the nicest, but I have to use less of the screen for text or else it takes up too much CPU power. Also, the font is bigger, so it has less characters per line. Right now, I'm really stuck between options 1 and 2. I like the addition of upper and lowercase letters, but to be honest, I'm not sure that makes up for it being sort of ugly.
Anyway, let me know what you think :)
I find option 1 too hard to read.
Option 2 is readable for its size, but using the default pico8 font is no fun! :)
Option 3 looks really nice. You could try making a variant with the same vibe but slightly smaller?
FWIW I have been adapting nice pixel fonts to pico8 since we got 0.2.2 with custom fonts. monogram and m5x7 are really nice! (see monogram here: https://itch.io/post/2610777)
@merwok Thanks for the heads up! I was looking for pico-8 custom fonts, but I had trouble finding them. Monogram does look nice; I might just use it. Can you point me in the direction of m5x7? TBH, the perfect font for this probably doesn't exist since it would have to be pretty AND small, but hopefully I can find something close enough.
EDIT: I tried the font you linked me to. It looks like this:
I like the look of it, and it doesn't pose the CPU constraints of option 3. However, again, I wish it could be a little smaller. I can only get 18 characters across per line (for context, option 1 is 27 wpl).
It could be made narrower!
That other font: https://managore.itch.io/m5x7
The other font you linked seems to be a bit smaller, which would be nice. However, I saw that the same creator of the m5x7 font has a m3x6 font. I think that would actually be perfect. It looks nicer than the default font and would be small enough to get a good cpl.
I saw that you were in the process of creating a tool which, I think, converts .ttf files to pico-8 compatible fonts. If you are, please let me know when it's finished or how I can manually convert the fonts if not. I was able to download the m5x7 and m3x6 fonts, but it seems like a whole lot of work to convert a .ttf file to a pico-8 compatible .png by hand, but I'd be willing to do it if I had to.
Ah, my tool reads the spritesheet and prints out code! I look at the TTF or PNG font and draw the sprites.
Tool is not published yet because I need changes to accomodate margins (between characters) that are not 1px. But I guess I could publish then update later!
For m3x6, I made a few characters manually (drawing the glyphs mirrored in bitfields, see below) before I had my tool, then I stopped and decided m5x7 was better (especially for the m character). You can see the font in the same screenshot as monogram that I posted the link to earlier. But this thread shows that there’s a need for both!
function glyph(char,rows) poke(0x5600+ord(char)*8,unpack(split(rows,"\n"))) end poke(0x5600,4,8,7) glyph("l",[[ 0b001 0b001 0b001 0b001 0b001 0b111 ]]) |
I'm sorry, I don't think I understand. Is there a difference between m3x6/m5x7 and monogram or is m3x6/m5x7 an offshoot of monogram. Also, I tried to implement the code you put up, but I'm not sure I did it right.
Here's the code at the beginning of my program:
function glyph(char,rows) poke(0x5600+ord(char)*8,unpack(split(rows,"\n"))) end function _init() poke(0x5f2d, 1) --allows keyboard access poke(0x5600,4,8,7) glyph("l",[[ 0b001 0b001 0b001 0b001 0b001 0b111 ]]) poke4(0x5708,unpack(split"0x0404.0404,0x0004.0004,0x000a.0a0a,0x0000.0000,0x0a1f.0a00,0x000a.1f0a,0x0e05.1e04,0x0004.0f14,0x0408.1111,0x0011.1102,0x1e09.0906,0x0016.0909,0x0004.0404,0x0000.0000,0x0404.0408,0x0008.0404,0x0808.0804,0x0004.0808,0x0e15.0400,0x0000.0415,0x1f04.0400,0x0000.0404,0x0000.0000,0x0002.0404,0x1f00.0000,0x0000.0000,0x0000.0000,0x0000.0404,0x0408.1010,0x0001.0102,0x1519.110e,0x000e.1113,0x0404.0604,0x001f.0404,0x0810.110e,0x001f.0204,0x0c10.110e,0x000e.1110,0x1f11.1212,0x0010.1010,0x0f01.011f,0x000e.1110,0x0f01.010e,0x000e.1111,0x0810.101f,0x0004.0404,0x0e11.110e,0x000e.1111,0x1e11.110e,0x000e.1110,0x0004.0400,0x0000.0404,0x0004.0400,0x0002.0404,0x0106.1800,0x0000.1806,0x001f.0000,0x0000.001f,0x100c.0300,0x0000.030c,0x0810.110e,0x0004.0004,0x1515.190e,0x000e.0119,0x111e.0000,0x001e.1111,0x110f.0101,0x000f.1111,0x110e.0000,0x000e.1101,0x111e.1010,0x001e.1111,0x110e.0000,0x000e.011f,0x0f02.120c,0x0002.0202,0x1111.1e00,0x000e.101e,0x110f.0101,0x0011.1111,0x0406.0004,0x001f.0404,0x1018.0010,0x000e.1110,0x0911.0101,0x0011.0907,0x0202.0203,0x001c.0202,0x150f.0000,0x0015.1515,0x110f.0000,0x0011.1111,0x110e.0000,0x000e.1111,0x1111.0f00,0x0001.010f,0x1111.1e00,0x0010.101e,0x130d.0000,0x0001.0101,0x011e.0000,0x000f.100e,0x020f.0202,0x001c.0202,0x1111.0000,0x001e.1111,0x1111.0000,0x0004.0a11,0x1111.0000,0x000a.1515,0x0a11.0000,0x0011.0a04,0x1111.1100,0x000e.101e,0x081f.0000,0x001f.0204,0x0404.040c,0x000c.0404,0x0402.0101,0x0010.1008,0x0808.080c,0x000c.0808,0x0011.0a04,0x0000.0000,0x0000.0000,0x001f.0000,0x0000.0402,0x0000.0000,0x1111.110e,0x0011.111f,0x0f11.110f,0x000f.1111,0x0101.110e,0x000e.1101,0x1111.110f,0x000f.1111,0x0f01.011f,0x001f.0101,0x0f01.011f,0x0001.0101,0x1d01.110e,0x000e.1111,0x1f11.1111,0x0011.1111,0x0404.041f,0x001f.0404,0x1010.1010,0x000e.1111,0x0305.0911,0x0011.0905,0x0101.0101,0x001f.0101,0x1115.1b11,0x0011.1111,0x1513.1111,0x0011.1119,0x1111.110e,0x000e.1111,0x0f11.110f,0x0001.0101,0x1111.110e,0x0018.0e11,0x0f11.110f,0x0011.1111,0x0e01.110e,0x000e.1110,0x0404.041f,0x0004.0404,0x1111.1111,0x000e.1111,0x1111.1111,0x0004.0a0a,0x1111.1111,0x0011.1b15,0x040a.1111,0x0011.110a,0x040a.1111,0x0004.0404,0x0408.101f,0x001f.0102,0x0204.0408,0x0008.0404,0x0404.0404,0x0004.0404,0x1008.0804,0x0004.0808,0x0d12.0000,0x0000.0000,0x0a04.0000,0x0000.0004,0x1f1f.1f1f,0x001f.1f1f,0x0a15.0a15,0x0015.0a15,0x0e15.1f11,0x001e.1606,0x0404.0404,0x0004.0e15,0x0411.0411,0x0011.0411,0x0f19.0000,0x0013.1e0a,0x1f17.0e00,0x000e.1f1f,0x1f1f.0a00,0x0004.0e1f,0x1f05.0c0c,0x000a.0e04,0x151f.0e04,0x0017.151f,0x0000.0000,0x0000.0000")) |
m3x6 and m5x7 are fonts made by one person, monogram is another one.
The glyph function was used before I made my tool. It’s the manual way to define a font: draw each glyph in code in your cart. It is not the same thing as using a tool (zep’s one or mine) that reads sprites and generates 2 lines of code that you can copy into another cart.
Sorry, I read your comment in the morning and didn't understand. I get it now, I think. Anyway, now that I understand that the code you showed me was just a prototype of that code you worked on, I guess my question is whether you're going to release a Pico-8 version of m5x7/m3x6. I think it would go great with my project.
Btw, thanks for all of your help so far. I really appreciate it :)
I would say one of the determining factors in choosing the font is, "How will the font be used?"
If it's just to show a few lines of a character talking (for example), you could get away with #1. It's pixelly and cute; plus you can fit more text without requiring the user to page through a lot of dialog boxes.
If you need the user to read screen after screen of paragraphs of text (as your hyphenation and line/char counter kind of suggest) then perhaps #3 would be better.
I have drawn m3x6 and run my tool.
--M3X6 by daniel linssen poke(0x5600,4,4,7) poke4(0x5700,unpack(split"0x0000.0000,0x0000.0000,0x0202.0202,0x0000.0200,0x0000.0505,0x0000.0000,0x0505.0705,0x0000.0507,0x0407.0106,0x0000.0203,0x0204.0100,0x0000.0401,0x0102.0502,0x0000.0305,0x0000.0102,0x0000.0000,0x0101.0102,0x0000.0201,0x0202.0201,0x0000.0102,0x0205.0000,0x0000.0005,0x0702.0000,0x0000.0002,0x0000.0000,0x0000.0102,0x0700.0000,0x0000.0000,0x0000.0000,0x0000.0200,0x0202.0404,0x0000.0101,0x0505.0506,0x0000.0305,0x0202.0302,0x0000.0702,0x0204.0403,0x0000.0701,0x0403.0403,0x0000.0304,0x0406.0505,0x0000.0404,0x0403.0107,0x0000.0304,0x0503.0106,0x0000.0605,0x0204.0407,0x0000.0202,0x0502.0506,0x0000.0305,0x0605.0503,0x0000.0304,0x0002.0000,0x0000.0002,0x0002.0000,0x0000.0102,0x0102.0400,0x0000.0402,0x0007.0000,0x0000.0007,0x0402.0100,0x0000.0102,0x0204.0403,0x0000.0200,0x0505.0506,0x0000.0601,0x0604.0300,0x0000.0705,0x0505.0301,0x0000.0705,0x0101.0600,0x0000.0701,0x0505.0604,0x0000.0705,0x0705.0600,0x0000.0601,0x0702.0204,0x0000.0202,0x0705.0600,0x0000.0304,0x0505.0301,0x0000.0505,0x0202.0002,0x0000.0202,0x0202.0002,0x0000.0102,0x0305.0101,0x0000.0505,0x0202.0202,0x0000.0402,0x0707.0300,0x0000.0507,0x0505.0300,0x0000.0505,0x0505.0600,0x0000.0305,0x0305.0700,0x0000.0101,0x0705.0600,0x0000.0404,0x0101.0600,0x0000.0101,0x0701.0600,0x0000.0304,0x0207.0202,0x0000.0202,0x0505.0500,0x0000.0705,0x0505.0500,0x0000.0205,0x0705.0500,0x0000.0507,0x0205.0500,0x0000.0505,0x0605.0500,0x0000.0304,0x0204.0700,0x0000.0701,0x0101.0103,0x0000.0301,0x0202.0101,0x0000.0404,0x0202.0203,0x0000.0302,0x0000.0502,0x0000.0000,0x0000.0000,0x0000.0403,0x0000.0201,0x0000.0000,0x0507.0506,0x0000.0505,0x0507.0503,0x0000.0705,0x0101.0106,0x0000.0701,0x0505.0503,0x0000.0305,0x0103.0107,0x0000.0701,0x0301.0106,0x0000.0101,0x0501.0106,0x0000.0705,0x0507.0505,0x0000.0505,0x0202.0207,0x0000.0702,0x0404.0407,0x0000.0304,0x0503.0505,0x0000.0505,0x0101.0101,0x0000.0701,0x0507.0705,0x0000.0505,0x0505.0503,0x0000.0505,0x0505.0506,0x0000.0305,0x0103.0507,0x0000.0101,0x0505.0506,0x0000.0403,0x0503.0507,0x0000.0505,0x0407.0106,0x0000.0304,0x0202.0207,0x0000.0202,0x0505.0505,0x0000.0705,0x0505.0505,0x0000.0205,0x0705.0505,0x0000.0507,0x0202.0505,0x0000.0505,0x0205.0505,0x0000.0202,0x0202.0407,0x0000.0701,0x0302.0204,0x0000.0402,0x0202.0202,0x0000.0202,0x0602.0201,0x0000.0102,0x0704.0000,0x0000.0001,0x0205.0200,0x0000.0000")) function _draw() cls(8) color(7) rect(3,3,124,124) poke(0x5f58,0x81) print( [[ cHAPTER oNE iT IS A TRUTH UNIVERSALLY ACKNOWLEDGED, THAT A SINGLE MAN IN POSSESSION OF A GOOD FORTUNE, MUST BE IN WANT OF A WIFE. hOWEVER LITTLE KNOWN THE FEELINGS OR VIEWS OF SUCH A MAN MAY BE ON HIS FIRST ENTERING A NEIGHBOURHOOD, THIS TRUTH IS SO WELL FIXED IN THE MINDS OF THE SURROUN -DING FAMILIES, THAT HE IS CONSIDERED THE... ]],8,8) end |
I couldn’t ask the author on the itch page because comments are disabled, but I will contact him to make sure it’s ok to port the font. Of course, we should give proper credits with a link and if possible a donation!
@merwok Amazing work! It's exactly what I needed. Just in case you need it, here's the author's twitter (https://twitter.com/Managore). I think you should make a separate post with all your new fonts to make them easier to find as well as to make them easier to credit. One suggestion, though: Could you maybe make the comma easier to discern from the period in m3x6. Right now, they're almost identical.
@ChristopherD thanks for the insight. This program is going to be for looking at a lot of text (in theory). I'm going to use a custom font for that.
EDIT: Here is how the new custom font looks.
I think it looks great, but I still think the comma looks weird.
I changed the comma, semicolon and apostrophe to have two pixels in a diagonal rather than a straight line (code in my previous message is edited). I already had to change m/w/&/# to make them fit in 3px width.
And just like that, my big dilemma was solved. Thank you so much merwok! I was sure I was going to have to compromise once I first posed this question. I'll be sure to acknowledge all the help you've given me when I finally publish the cart.
EDIT: Here is the finalized font in action:
Glad to help! Let me know if you need some characters after ~° (like arrows, cat face, etc). I’ll contact Daniel eventually, but even without that the license is «free to use with attribution» so you should be ok.
@Krystman It is included above, but I'll post it here to.
poke(0x5600,4,4,7) poke4(0x5700,unpack(split"0x0000.0000,0x0000.0000,0x0202.0202,0x0000.0200,0x0000.0505,0x0000.0000,0x0505.0705,0x0000.0507,0x0407.0106,0x0000.0203,0x0204.0100,0x0000.0401,0x0102.0502,0x0000.0305,0x0000.0102,0x0000.0000,0x0101.0102,0x0000.0201,0x0202.0201,0x0000.0102,0x0205.0000,0x0000.0005,0x0702.0000,0x0000.0002,0x0000.0000,0x0000.0102,0x0700.0000,0x0000.0000,0x0000.0000,0x0000.0200,0x0202.0404,0x0000.0101,0x0505.0506,0x0000.0305,0x0202.0302,0x0000.0702,0x0204.0403,0x0000.0701,0x0403.0403,0x0000.0304,0x0406.0505,0x0000.0404,0x0403.0107,0x0000.0304,0x0503.0106,0x0000.0605,0x0204.0407,0x0000.0202,0x0502.0506,0x0000.0305,0x0605.0503,0x0000.0304,0x0002.0000,0x0000.0002,0x0002.0000,0x0000.0102,0x0102.0400,0x0000.0402,0x0007.0000,0x0000.0007,0x0402.0100,0x0000.0102,0x0204.0403,0x0000.0200,0x0505.0506,0x0000.0601,0x0604.0300,0x0000.0705,0x0505.0301,0x0000.0705,0x0101.0600,0x0000.0701,0x0505.0604,0x0000.0705,0x0705.0600,0x0000.0601,0x0702.0204,0x0000.0202,0x0705.0600,0x0000.0304,0x0505.0301,0x0000.0505,0x0202.0002,0x0000.0202,0x0202.0002,0x0000.0102,0x0305.0101,0x0000.0505,0x0202.0202,0x0000.0402,0x0707.0300,0x0000.0507,0x0505.0300,0x0000.0505,0x0505.0600,0x0000.0305,0x0305.0700,0x0000.0101,0x0705.0600,0x0000.0404,0x0101.0600,0x0000.0101,0x0701.0600,0x0000.0304,0x0207.0202,0x0000.0202,0x0505.0500,0x0000.0705,0x0505.0500,0x0000.0205,0x0705.0500,0x0000.0507,0x0205.0500,0x0000.0505,0x0605.0500,0x0000.0304,0x0204.0700,0x0000.0701,0x0101.0103,0x0000.0301,0x0202.0101,0x0000.0404,0x0202.0203,0x0000.0302,0x0000.0502,0x0000.0000,0x0000.0000,0x0000.0403,0x0000.0201,0x0000.0000,0x0507.0506,0x0000.0505,0x0507.0503,0x0000.0705,0x0101.0106,0x0000.0701,0x0505.0503,0x0000.0305,0x0103.0107,0x0000.0701,0x0301.0106,0x0000.0101,0x0501.0106,0x0000.0705,0x0507.0505,0x0000.0505,0x0202.0207,0x0000.0702,0x0404.0407,0x0000.0304,0x0503.0505,0x0000.0505,0x0101.0101,0x0000.0701,0x0507.0705,0x0000.0505,0x0505.0503,0x0000.0505,0x0505.0506,0x0000.0305,0x0103.0507,0x0000.0101,0x0505.0506,0x0000.0403,0x0503.0507,0x0000.0505,0x0407.0106,0x0000.0304,0x0202.0207,0x0000.0202,0x0505.0505,0x0000.0705,0x0505.0505,0x0000.0205,0x0705.0505,0x0000.0507,0x0202.0505,0x0000.0505,0x0205.0505,0x0000.0202,0x0202.0407,0x0000.0701,0x0302.0204,0x0000.0402,0x0202.0202,0x0000.0202,0x0602.0201,0x0000.0102,0x0704.0000,0x0000.0001,0x0205.0200,0x0000.0000")) |
@merwok Those characters won't be needed for my purposes, but for other people, they might want it. I'd encourage you to add it, but don't worry about doing it for my sake.
[Please log in to post a comment]