[HN Gopher] I Created 175 Fonts Using Rust
       ___________________________________________________________________
        
       I Created 175 Fonts Using Rust
        
       Author : azhenley
       Score  : 445 points
       Date   : 2024-08-10 23:52 UTC (23 hours ago)
        
 (HTM) web link (chevyray.dev)
 (TXT) w3m dump (chevyray.dev)
        
       | nitinreddy88 wrote:
       | I actually liked some of the fonts and simple styling used in the
       | site. Luckily it's available as another post:
       | https://chevyray.dev/blog/how-this-site-is-made/#catppuccin-...
        
       | Vecr wrote:
       | Interesting how easy it is to make an operation like this run on
       | multiple cores in Rust. Inserting a single call into a chain of
       | functions can be enough.
        
         | MontagFTB wrote:
         | Rust is built to be memory- and thread-safe by default.
         | Assuming you follow the prescribed rules of the language,
         | multithreading is "free".
         | 
         | Amdahl's Law still gets a vote, but at least your app won't
         | blow up in your face.
        
           | jjtheblunt wrote:
           | > Assuming you follow the prescribed rules of the language,
           | multithreading is "free".
           | 
           | I'm wondering if you're referring to the async await addition
           | from a few years back, to use of Tokio's crate(s), or
           | something else.
        
             | kevincox wrote:
             | I think they are referring to this section:
             | https://chevyray.dev/blog/creating-175-fonts/#automatic-
             | kern...
             | 
             | In this case they are not using async but Rayon which
             | provides some easy primitives for splitting tasks into
             | smaller parts that can run in parallel. In this case the
             | par_iter and par_extend calls.
        
             | hypeatei wrote:
             | IIRC, async/await in most languages doesn't imply multi
             | threading, it just allows other work to be done on the same
             | thread simultaneously.
        
         | vips7L wrote:
         | It's not really unique to Rust. Scala and Java both support
         | this out of the box.
        
           | Filligree wrote:
           | Yeah, but in Rust it's far less likely to explode in your
           | face.
        
             | johnisgood wrote:
             | Or in Ada. Ada 202x[1] brings enhancements like the
             | parallel block, making parallelism easier to express,
             | somewhat similar to Rust's approach but still with Ada's
             | emphasis on clarity and safety.
             | 
             | [1] https://blog.adacore.com/ada-202x-support-in-gnat
             | (2020)
             | 
             | There may be more enhancements that I may not know about or
             | remember, although I did mention Ada's constructs for safe
             | concurrent code before.
        
           | dwattttt wrote:
           | The stronger guarantees/performance fall out of the stronger
           | lifetime/ownership model, combined with errors around
           | ambiguous/invalid lifetimes being a compiler error.
           | 
           | In other languages those violations are things you have to
           | run a race detector and actually evoke the condition to find,
           | or you abandon fine grained/tracked ownership and use garbage
           | collection.
        
             | vips7L wrote:
             | None of that matters with this code. There are no lifetimes
             | here and in fact there is no ownership either. Everything
             | is a primitive char. They're always copied and no mutation
             | occurs. It's pure computation. You could write this code
             | exactly the same way in those languages.
        
               | dwattttt wrote:
               | True. You could write it in C or asm too, and it would be
               | about as simple. But there's still a difference that if
               | they weren't all primitive (and you can't always rely
               | that they will be), you'll know it won't work straight
               | away in Rust, whereas in the others you need to walk
               | every data type involved to make sure ownership is clear
               | (or rely on a garbage collector to save you).
        
               | n_plus_1_acc wrote:
               | Java's HashMap for example is not thread-safe, but if you
               | use it from multiple threads, you may or may not
               | experience all kinds of issues.
        
               | vips7L wrote:
               | Again that only matters if there is mutation. Reads are
               | perfectly safe to happen from any thread. This code is
               | self contained. Rust isn't a silver bullet here.
        
       | waldothedog wrote:
       | This is neat! And cool to hear this made a financial difference
       | for them. Gah, I remember the name Chevy Ray from indie games,
       | but I cannot put my finger on what this person made... would have
       | been like 2010 to 2012?
       | 
       | In the same vein as VVVVVV or nidhogg or canabalt as I recall
        
         | bitvoid wrote:
         | Ikenfell
        
         | TeaDude wrote:
         | Flashpunk?
        
         | chevyray wrote:
         | The game you are probably talking about is Beacon.
        
         | waldothedog wrote:
         | It was flashpunk! Beacon was rad too -- blast from the past, I
         | miss indie games
        
         | wrsh07 wrote:
         | I also found Ikenfell to be really delightful!
        
       | bentinata wrote:
       | Even though the methods is simple, the way the author visualizing
       | it is really neat.
        
       | Daub wrote:
       | Impressive indeed. Making a complete font set can easily take as
       | long as a year. The tasks include to go from 'A' to 'Z', upper
       | and lower case, plus all the glyphs (brackets, ampersand,
       | exclamation marks etc). Optionally the variations (bold, italic
       | etc) without which a font is of limited use. The thing that
       | separates the men from the boys is the kerning (spacing between
       | the characters) which can absorb as much obsessive compulsion as
       | you can throw at it. From TFA:
       | 
       | > My new fonts were going to support 176 characters, meaning I
       | might have to enter as many as 1762 = 37,976 kerning pairs...
       | yeah not going to happen. So this time, since I was (spoiler
       | alert) writing my own tool to generate the fonts, I decided to
       | semi-automate this process to take care of a huge majority of the
       | kerning, and do manual entry when algorithm didn't suffice.
        
         | inferiorhuman wrote:
         | Making a complete font set can easily take as long as a year.
         | 
         | Making a font family can easily be a lifelong project.
        
           | chevyray wrote:
           | It makes me very happy to see people talking about how much
           | work can go into a typeface. Like, these pixel fonts are very
           | quick to make, but fully contoured vector fonts can be
           | tweaked to perfection infinitely, there's always more
           | languages and more diacritics and more weights and styles you
           | could do.
           | 
           | Truly a rabbit hole, but when it's done well it's very
           | worthwhile. I have a lot of respect for font makers.
        
             | galangalalgol wrote:
             | Has anyone tried training a DL model to handwrite things?
             | That seems like a fascinating rabbit hole as well. In
             | addition to all the context sensitive letter differences,
             | you could even label training pieces with the mood of the
             | writer and the flexiness of the nib/quill. If I type an
             | angry emoji after a sentence it gets scribbled harder when
             | drawn.
        
           | amelius wrote:
           | > Making a font family can easily be a lifelong project.
           | 
           | Donald Knuth made https://www.1001fonts.com/cmu-font.html
           | __and__ designed and implemented an entire typesetting system
           | __and__ did a bunch of other not-so-small things that makes
           | designing a font family seem like a side project.
        
             | 0cf8612b2e1e wrote:
             | Tex was the side project. Knuth went on a years long yak
             | shave to write book-making software instead of writing the
             | book because he was unhappy with the fonts in the printer
             | proof.
        
         | p4bl0 wrote:
         | > _Making a complete font set can easily take as long as a
         | year. The tasks include to go from 'A' to 'Z', upper and lower
         | case, plus all the glyphs (brackets, ampersand, exclamation
         | marks etc)._
         | 
         | That's when you're limiting the font to purely English usage.
         | If you want to support any other language you have to add more
         | characters, even for languages that also use the latin alphabet
         | (e.g., French, Spanish, Italian, Portuguese, etc). Then you may
         | want to support Greek and Cyrillic, Japanese, Chinese, ...
         | 
         | For example, " _Noto fonts cover over 77,000 characters, which
         | is around half of the 149,186 characters defined in Unicode
         | 15.0_ " according to the font's Wikipedia entry.
        
         | citizenpaul wrote:
         | >Making a complete font set can easily take as long as a year.
         | 
         | I'm sorry I just don't buy this. Its possible to endlessly
         | obsess over anything. I've noticed things like
         | language/writing/music/calligraphy tend to have high draw to
         | people that are prone to obsessing.
         | 
         | It sounds like gatekeeping to me is my point. Discouraging
         | people from entering a field always makes me a bit triggered.
        
       | worik wrote:
       | Nice work
       | 
       | I would like microns on the vowles, as we type a lot of Maori
       | words....
        
         | Daub wrote:
         | Same here for diacritics in Vietnamese. There are very few font
         | sets which natively support our vast range of diacritics.
        
         | chevyray wrote:
         | Is a micron the name of the straight line over the 'a' in
         | Maori? A single pixel line over a bunch of a's is tremendously
         | simple to do in pixel fonts, I could probably add that to all
         | the fonts in a day... hmmmm
        
           | travisjungroth wrote:
           | The straight bars over vowels are called "macrons" in
           | English. https://en.m.wikipedia.org/wiki/Macron_(diacritic)
           | 
           | In Maori, there are a, e, i, o and u.
        
             | chevyray wrote:
             | Ahh yes there it is, thanks for clarifying. These are quite
             | simple and would be easy to support.
        
               | bspammer wrote:
               | Apologies if this nerd-snipes you, but supporting the
               | caron might also be fairly simple given you could just
               | vertically flip the circumflex
               | https://en.wikipedia.org/wiki/Caron
               | 
               | Together with the macron, pinyin (the main romanization
               | for Chinese) would be mostly supported.
               | https://en.wikipedia.org/wiki/Pinyin
        
               | chevyray wrote:
               | Great suggestion, I would not have discovered this
               | easily. thanks!
        
       | zeta0134 wrote:
       | These look absolutely delightful! A quick question: I'm working
       | on retro consoles, and so I need fonts where each glyph is a
       | multiple of 8px wide for easy display on tile-based backgrounds.
       | Are the sizes (in pixels) of your font packs listed anywhere?
        
         | Vecr wrote:
         | 16. Or an integer multiple of that like 32 or 64. It's in the
         | _Step 5: Exporting_ section
         | 
         | Edit: that's the height, the width is not fixed/I think it
         | varies with the exact font and the kerning. It's probably too
         | big for you anyways.
        
         | bryanlarsen wrote:
         | The example tile sheet in the article appears to be 8 pixels
         | wide by my count. Count the width in pixels on the "m" and if
         | it's 7 the font will likely work for you.
        
           | Vecr wrote:
           | The main issue is you can't have them literally touching or
           | it'll be really hard to read. Maybe it would work, but most
           | of these "pixel art" fonts really benefit from some faking
           | enabled by running on what's actually a high resolution
           | display.
        
             | bryanlarsen wrote:
             | That's why I said the "m" should only be 7 bits wide for an
             | 8 bit wide font.
        
               | damieng wrote:
               | It's a trade-off. Have every single instance of m look
               | squished vs it might touch another m or w somewhere else
               | and look odd.
               | 
               | I've done fonts in both categories.
        
         | kelnos wrote:
         | > _each glyph is a multiple of 8px wide_
         | 
         | These look to be variable-width fonts. I believe the _heights_
         | are multiples of 16, but the width will vary by character.
        
           | bryanlarsen wrote:
           | It appears that the "tile sheet" export puts the fonts on a
           | fixed width grid, so that can be used for a fixed width font.
           | They look left-justified in the grid though, and fixed width
           | fonts usually have the glyphs centered in their grid. That
           | could be fixed with some scripting.
        
           | two_handfuls wrote:
           | They are variable-width yes but there is also a monospace
           | variation, those will be constant width.
        
         | jacksonrya wrote:
         | Check out The Ultimate Oldschool PC Font Pack
         | (https://int10h.org/oldschool-pc-fonts/). Each font description
         | includes glyph dimensions and aspect ratios
        
         | damieng wrote:
         | My own collection of free 8x8 fonts might suit your needs at
         | https://damieng.com/zx-origins
         | 
         | Looking forward to trying this exciting rust tool in my chain
         | as well to see what additional formats I can include.
         | 
         | (Update: Seems the PIFO tool is not open-source :( I guess I'll
         | stick to using scripts + FontLab Studio 5)
        
       | claytonwramsey wrote:
       | This is really excellent work, and a great write-up. I think it
       | would definitely be possible to speed up a lot of the algorithms
       | with some tricks. Replacing hashmaps with bitmaps and byte-index
       | arrays for character painting and ascii-to-variants seems like a
       | lead, based on what I've read. Of course, that doesn't really
       | matter for this code since it's already fast enough.
        
         | chevyray wrote:
         | Glad you brought this up, because it's absolutely true! All the
         | code is not on the site, but I actually allocate and clone a
         | lot of strings and data structures as well. I did optimal code
         | where it was obvious (bitmap copying, easily parallelizable
         | things), and it was SO instant that I didn't even bother trying
         | to optimize the other things. But it could be done!
         | 
         | It's easy to forget how fast on-the-ground languages like Rust
         | and C++ and Go are, not to mention when you use their multi-
         | threading primitives and worker queues/etc.
        
       | peteforde wrote:
       | What an amazing accomplishment! Bravo.
       | 
       | I find typography resists my attempts to wrap my head around it,
       | because even though I can do basic analysis like serif vs sans
       | serif, I get a sort of brain fog when it comes to telling fonts
       | apart or intuiting which fonts to use in different situations.
       | 
       | It's really hard to wrap my head around the idea that one person
       | could make 175 fonts and that they would each be meaningfully
       | different from each other. Like, how does one not accidentally
       | recreate the same font?
        
         | chevyray wrote:
         | Sometimes I would get pretty far into a new font only to
         | realize it was almost a total copy of another. It happened, I
         | just managed to notice before releasing them lol
        
         | omnimus wrote:
         | Actually it is impossible to recreate the same font from
         | memory. Even if you tried the font would be in some ways
         | different. With pixel fonts where the grid is very coarse its
         | much easier to do but normal fonts with curves you wont make
         | it. Even if you are using same image of a font as a reference.
        
       | theahura wrote:
       | Btw anyone who's into fonts should check out
       | https://tomorrow.type.today/ they're a typography studio that
       | does fantastic original and experimental fonts. One of our team
       | is super into typography and has been building a collection of
       | their work at https://play.soot.com/tomorrowtypetoday
        
         | vindex10 wrote:
         | just as a note: the company is registered in Russia
        
           | MissTake wrote:
           | Also in Georgia.
        
           | theahura wrote:
           | Iirc they're originally Russian, but have fled the country
           | out of strong disagreement of the war
        
           | Tohhou wrote:
           | This is an inflammatory comment. Shame on you.
        
       | musha68k wrote:
       | Fantastic!
       | 
       | Da Vinci types like the author here always remind me that there
       | was a time when being an artist and an engineer were one and the
       | same, with no clear distinction between the two.
        
       | jcynix wrote:
       | Impressive and a nice site. Regarding font generation, let's not
       | forget Donald Knuth and his
       | https://en.wikipedia.org/wiki/Metafont software which generates
       | raster fonts.
        
       | patal wrote:
       | Impressive work!
       | 
       | In the "mixed-case kerning pairs" quality testing image, I notice
       | that the letter "j" sometimes reaches under the previous letter,
       | like in "Fdj". Sometimes it creates a lot of space, like in
       | "Fjo". Is there a stylistic reason for this? The Fjo spacing is
       | the only thing that stood out to me.
       | 
       | Kudos
        
         | chevyray wrote:
         | Nice catch. That's a culprit of the `auto_kerning_min` property
         | that you'll see on a lot of the fonts. this tells the auto
         | kerner not to exceed that.
         | 
         | I added this parameter because I fouund that for a lot of
         | fonts, squeezing letters together over a certain distance would
         | just look bad, so I would set -1 or -2 as a cap.
         | 
         | It looks like that's just one that snuck past my notice. The
         | word "Fjord" would look strange because of this. This is a good
         | example of how even with the quality testing, things can get
         | through, because I still have to visually glance over hundreds
         | of kerning tests.
         | 
         | One thing that might be a nice adjustment is to have an
         | algorithm that detects the "area" between two letters, so
         | basically how many pixels can volumetrically fit between them,
         | and flag ones that go over a certain threshold. I could then
         | color those tuples as red in the sample text, basically the
         | system marking them as "potential problems" that required an
         | author's look.
        
           | dotinvoke wrote:
           | Why not just feed that information back into the algorithm
           | itself?
        
             | chevyray wrote:
             | I definitely could, I would have to do a bit of tests to
             | see what kinds of volumes deserved special treatment.
             | 
             | Usually the way I do things is I start by doing work
             | manually. If I find that there's a common pattern in
             | something I'm doing that could be automated, then I am able
             | to transcribe it into the algorithm because I just follow
             | the same steps I've been using in my head.
             | 
             | This wasn't a thing that actually came up a huge amount, as
             | these glaring pairs aren't tremendously common. But they're
             | just common enough that if I sat down and examined them, I
             | could probably say something like "hey if 1.5 vertical
             | lines worth of pixels are between two letters, kern this
             | extra" or something like that.
        
           | patal wrote:
           | Thanks for taking the time to answer. I don't understand why
           | in the dj combination, j is able to reach under d for what
           | looks like a kerning of about -4, when the auto_kerning_min
           | property is set to -1 or -2, keeping Fj apart.
        
             | zerocrates wrote:
             | Maybe they just manually kerned "j" with the lowercase
             | letters? The "j" line on the lowercase sample would jump
             | out pretty strongly in a way the capitals-with-j don't on
             | the mixed-case one.
        
           | beardyw wrote:
           | What I picked up from a lifelong typographer is that kerning
           | should be about the area enclosed by the two letters. The aim
           | is to make that consistent. I think that might help in this
           | kind of case.
        
       | swiftcoder wrote:
       | Fascinating, I didn't previously realise you were converting
       | pixel fonts to vectors when encoding them to TTF. I guess that
       | gives some ability to seamlessly scale them for folks who load
       | them into a competent text renderer as well (i.e. not a game
       | engine that mostly just uses pixel fonts 1:1)
        
         | chevyray wrote:
         | It also just makes them usable in traditional graphics editors
         | like photoshop, indesign, affinity, aseprite, etc. Those tools
         | do not have the concept of a pixel font, so using a TTF with
         | hinting/antialiasing turned off allows you to use them in those
         | apps.
        
       | bravura wrote:
       | Curious: Once the fonts are made, how are they marketed and sold?
       | 
       | Where do the people who use them become of aware of them and how?
        
         | chevyray wrote:
         | A combination of word of mouth and itch.io's search system. I
         | have a decent amount of social media followers, many who have
         | used my fonts in the past, so the initial flood of wishlisters
         | put it on the front page for a bit.
         | 
         | After that wave, they get used in various projects here and
         | there, and those projects eventually release or post
         | screenshots. Because it's indie, lots of people also attribute
         | the fonts directly when they post screenshots of their games,
         | posters, videos, and stream overlays where they use them. I am
         | very supportive of people using them, and repost their work,
         | and so it's very casually symbiotic.
         | 
         | They're not lucrative on the scale that you might expect from a
         | company or a popular vector font, but as supplementary income
         | for a solo developer what they bring in helps put food on my
         | table and also helps indie games get made which I think is
         | great.
        
       | networked wrote:
       | Cool fonts, and an interesting post. I kind of want the top-right
       | fake game in
       | https://chevyray.dev/blog/creating-175-fonts/old_previews.pn...
       | to be real. It has a " _Wonder Boy in Monster World_ on the GBA "
       | vibe I think is nice.
       | 
       | I have noticed that the license doesn't allow you to use the TTFs
       | in open-source software, which is something to keep in mind.
       | 
       | > Licensed Content may not be distributed to third parties as
       | standalone files or in a way that unreasonably permits the
       | recipient to extract the Licensed Content for use separately and
       | apart from the Work for Distribution.
       | 
       | > Licensee may not distribute the Licensed Content in any library
       | or reusable template, including but not limited to game
       | templates, website templates intended to allow reproduction by
       | third parties on electronic or printed products.
       | 
       | > Licensee may not distribute Licensed Content in a manner meant
       | to enable third parties to create derivative works incorporating
       | Licensed Content.
       | 
       | To me, a non-lawyer, the last clause reads like it unambiguously
       | forbids it.
       | 
       | https://github.com/ChevyRay/pixel_font_megapack_license/blob...
        
         | BHSPitMonkey wrote:
         | If you like platformers, give Celeste a try. The scene in that
         | mockup is a reference to an opening scene from that game.
        
           | networked wrote:
           | Oh, I didn't realize. Thanks for telling me.
           | 
           | I have played the original _Celeste_ for PICO-8 (now called
           | _Celeste Classic_ ). I plan on playing the full release
           | eventually. The screenshot actually reminded me a little of
           | an earlier game by Maddy Thorson, _An Untitled Story_. I
           | think it is the way the mountains are drawn in the background
           | and the thick outlines.
           | 
           | A link to play _Celeste Classic_ :
           | https://www.lexaloffle.com/bbs/?tid=2145.
           | 
           | TIG Wiki page for _An Untitled Story_ :
           | https://tig.fandom.com/wiki/An_Untitled_Story.
        
           | Liquix wrote:
           | If you like Celeste, check out Studio Pixel [0]. His most
           | recent game Kero Blaster (mobile) is excellent but Cave Story
           | is the classic. Tight controls, retro aesthetic, imaginative
           | levels, very well executed.
           | 
           | [0] https://studiopixel.jp
        
         | zerocrates wrote:
         | Hmm, it definitely doesn't allow you to distribute them _as_
         | open source (or CC or whatever) but I don 't know that I'd
         | agree that it forbids you from shipping them _with_ something
         | that 's otherwise open source.
         | 
         | Though clearly the intent is that these be used more in the
         | final product stage of the kinds of things that are more rarely
         | open source, games vs. engines or templates.
         | 
         | I found myself thinking about a different copyright corner-case
         | when reading the post and this question: the fact that
         | typefaces aren't copyrightable in the US. _Fonts_ are, as
         | computer programs, but typefaces (and so also fonts that are
         | simple bitmaps) aren 't. So this workflow goes from a non-
         | copyrighted source, (the original tilesheet) to a copyrighted
         | output (the TTFs) and also back to a non-copyrighted output too
         | (the output tilesheet/atlas).
        
           | networked wrote:
           | You have a point! You may be able to legally distribute
           | binary builds of a work that is open-source except for these
           | fonts, as long as the open-source parts aren't copyleft and
           | the fonts aren't part of the source distribution. I should
           | have said the license didn't allow you to distribute the TTFs
           | with your open-source code and assets. Sorry for probably
           | overstating the case.
           | 
           | According to https://en.wikipedia.org/wiki/Intellectual_prope
           | rty_protecti..., typefaces also aren't copyrighted in Japan
           | and South Korea but are in Germany (for no more than 25
           | years) and the United Kingdom (also 25 years). So bitmap
           | fonts from classic 8- and 16-bit video games should be in the
           | public domain in all of these countries.
        
       | czarit wrote:
       | Very nice! One question: I was curious why you chose this subset
       | of Scandinavian special characters.
       | 
       | There are three extended chars in Swedish (aoa) and
       | Norwegian/Danish (aeoa), but your fonts have ae, but not o, which
       | means you could drop the ae and still support Swedish, or add an
       | o to also support Norwegian and Danish. Was this an oversight or
       | is there some locale that has just ae and not o? (and before
       | anyone asks I did not confuse ae with the oe-ligature oe, which
       | is a different glyph used in French, and which the fonts also do
       | support)
        
         | kd5bjo wrote:
         | > Was this an oversight or is there some locale that has just
         | ae and not o?
         | 
         | Well, Icelandic uses o in place of o, but also requires d and y
         | which are not included.
         | 
         | AE is sometimes used in older English texts, though, in words
         | like "encyclopaedia" or in plurals of latin-derived words:
         | https://en.wiktionary.org/wiki/Category:English_plurals_in_-...
        
         | chevyray wrote:
         | This was just an oversight. I actually got very far into the
         | project before I realized that o was missing from my set.
         | 
         | It's something that I could definitely go through and patch
         | into all the fonts, but I was waiting to see if there was
         | enough demand for the effort. I think supporting two more
         | languages would be very cool though.
        
           | kipari wrote:
           | From a Dane that finds multiple of these fonts gorgeous and
           | highly appreciate the elaborate kern pairs: please consider
           | patching the fonts with an o. ;-)
        
             | chevyray wrote:
             | I will absolutely consider it. I am getting some good ideas
             | from other comments as well, so I'll put those in my
             | project notes to do as a possible update to the fonts.
        
       | kmacdough wrote:
       | Awesome work! It's a wonder how much hasn't been done in a world
       | of 8 billion people. A single skilled individual with some free
       | time filling in a gap can be HUGE. Gets me looking for gaps.
       | 
       | 8 Billion people seems like a lot, but it cuts down fast. When
       | 1/10 people have the freedom and, 1/100 the resources and time,
       | 1/100 the training and experience, and 1/100 have the drive, and
       | with hundreds of domains each with hubdreds of major unfilled
       | niches...
       | 
       | That's 800 people split among tens of thousands of gaps _. It
       | pretty quickly gets down to you, the reader, to pick up that
       | keyboard and start tapping away!
       | 
       | _ These are obviously wild-a* numbers. Constraints may be
       | overstated or understated  & they're not fully independent. I'm
       | missing others. The point stands: you need only to cut 8 billion
       | by 100 a few times to get <1.
        
       | euroderf wrote:
       | About kerning. Uppercase Finnish is a nightmare. Odd pairs like
       | LJ and KY and TY . How about an option to let some letter pairs
       | touch ?
       | 
       | It also creates a tendency to use quite light font weights for
       | all-uppercase text, so that whitespace is not so prominent.
        
         | chevyray wrote:
         | Not a bad suggestion at all. Lots of fonts even provide
         | ligatures for certain letter pairs so they can touch, but tweak
         | them so they look a bit better.
         | 
         | That kind of thing is another level of polish that I could
         | definitely do, or even just providing more spaced variations.
        
       | jezzamon wrote:
       | Nice! I'm a user of your last batch of fonts, I'll have to check
       | these new ones out :)
        
       | Tohhou wrote:
       | What's the point in this article if pifo isn't open source?
       | 
       | Here's a tutorial on my software... you can't use it!!!
        
         | chevyray wrote:
         | I wanted to describe how the algorithm works, and show what it
         | looks like to ship a project of that magnitude, and share some
         | of the fun problems complexities that come up. I'd like to see
         | more creatives using code as a way to bolster their projects
         | and reducing tedious work for themselves with automation or
         | deployment scripts, and I think Rust is a really great language
         | for doing this, so I thought it would be inspiring to share how
         | and why I'm doing it.
         | 
         | I agree that it would be overall more valuable to have the
         | whole thing open source online, but sometimes I want to share
         | how I solved problems without open sourcing all my code
         | directly, for various personal reasons. But from the many
         | comments I'm getting across the internet on the article it
         | seems like people are getting a lot of value and motivation out
         | of it, which was the intent, so that makes me happy.
        
       | laserDinosaur wrote:
       | somepx on itch.io also makes some really nice fonts:
       | https://somepx.itch.io/
        
         | chevyray wrote:
         | some is a homie and does excellent work! They also have a
         | Patreon where you can support/guide them in the creation of new
         | pixel art assets and fonts and stuff like that, if you're into
         | that sort of thing. It's a cool approach, different than mine,
         | and I'm rooting for them.
        
       | meindnoch wrote:
       | >The final character set I settled on.
       | 
       | Sigh. No _o_ and _u_.
        
         | chevyray wrote:
         | I did a quick search, this for Hungarian support, yes? If those
         | are the only two characters I would have to do to support the
         | language, I'm collecting suggestions from other comments in
         | this post as well and might do a 1-year anniversary update to
         | add support for more languages, and I can add this.
        
           | meindnoch wrote:
           | Yes, these are the only Hungarian-only accents.
        
       ___________________________________________________________________
       (page generated 2024-08-11 23:00 UTC)