1. 26
  1. 36

    There are good reasons for the complexity of text rendering. Developers don’t just add complexity for no reason. In general, if one says “why not just”, one is probably oversimplifying the problem.

    1. 7

      This article is arguing against “Why not just assume everyone has a high-DPI display since then we can ignore existing solutions and focus on the one that requires everyone to replace the equipment they already have which works fine.”

      1. 14

        It doesn’t require you to replace anything. I use vector fonts on a non-hidpi display just fine and, I figure I’m not the only one who has been doing this for at least a couple decades? I am however looking forward to upgrading to a hidpi display, not because I need to but because it’s simply better.

      2. 3

        Well, cause the problem used to be simpler. Using ‘why not just’ also calls into questioning the presuppositions and the nature of issues. The font rendering for typesetting is much less difficult as it is more predictable. Yes, fonts are weird and there are edge cases, but code is still mostly written in pure ASCII set.

        Also, it is a rant and not a technical text for a reason.

        1. 9

          The problem was never simpler, the solutions were merely incomplete, incorrect, and exclusionary.

          1. 1

            I think you’re being uncharitable. But, @lich also has a lot of unstated assumptions here. I think they are talking about font usage in a text-only programming environment in a terminal emulator, on a low-DPI display. So yeah, that’s a pretty narrow use case compared to, say, a web browser for use with every possible combination of typographic style and language in the Unicode universe, which is what @mwcampbell ‘s link is about. But it’s a valid enough use case, and relevant in this forum, where people are interested in OS development and simpler solutions in general. The modern typographic rendering libraries are not being threatened here, and of course they’re not going away. But they are so massive and complex as to be exclusionary in their own way.

        2. 2

          Developers don’t just add complexity for no reason.


        3. 14

          They are not meant to be resized so they stay at maximum in couple of sizes. That keeps them predictable and efficient.

          Nice that it’s efficient, but what if I want to resize my font?

          1. 3

            Pick one that’s at the size you want?

            1. 5

              I frequently resize text on-demand though; it’s not impossible to do that with bitmap fonts by just selecting a different font (that’s what happens in xterm with the default fixed font), but it all seems hacky and hard to maintain to me.

              1. 3

                It seems hacky because of the reasons I stated. Most of energy goes into dealing with bitmap fonts, while your issue would be fine with the right fallback setup, but then fontconfig makes it really annoying to do so in any reliable way.

                1. 5

                  That’s not really what I meant; if I want to make a fixed font I will essentially need to make a whole bunch of them, and every time I add/change a character I will need to update a bunch of them. Seems much more difficult to maintain to me. And as a user, you’ll be limited to the font sizes that the font author chose, instead of being able to set your own arbitrary size.

                  1. 5

                    Well, arbitrary sizing requires outline font and does not really work well on low PPI displays. Sharpness is in my opinion a worthy trade-off to do so.

                    1. 6

                      It works great for me? I can zoom in and out and it always looks just fine to me at pretty much any size. I don’t get the whole “zomg, it looks terrible!” stuff.

                      Sharpness is in my opinion a worthy trade-off to do so.

                      Well, you’re not the one making the fonts.

                      1. 1

                        Ad hominem.

                        I write opinion pieces and the nature of that is that I will be open with my criticism. I understand your values, but then if I were in your place I would consider buying 4K display for such purpose.

          2. 11

            I understand the rant, but I don’t understand why GNOME should be the focus of this anger. Projects adopt features according to their values, and as far as I know, the values of GNOME aren’t simplicity or preserving human-readable binary formats.

            Bitmap fonts seem more (but not completely) in line with the values of projects like suckless. And I think they mostly work fine with bitmap fonts.

            1. 3

              GNOME is just a symptom in the case of this short text.

            2. 11

              It’s funny how much of stereotypical programming culture is just basically a rollback of the progress the industry has made in past few decades. We all wanted GUIs, IDEs, and especially TrueType fonts in 1991, after all. Now it seems like we actively sacrifice all this on the altar of an empty simplicity that works by ignoring problems that the kind of Unix programmer doesn’t want to solve.

              1. 4

                Because the progress is called into questioning after the fact that it takes absurdly powerful machines to have chat. It is not empty simplicity, just critical thinking.

                1. 9

                  Sure, you could hook up two serial character terminals and have chat with probably just two Z80s, but the actual reality for your chat example is:

                  • People write in non-latin script languages that require complex text rendering, and wish to write in their native tongue with no compromise

                  • People are using multiple devices, some with incredibly complex radio infrastructure, which is almost certainly routed over networking hardware that got more complex to handle the kinds of networking topologies that the designers of IPv4 couldn’t imagine - then synchronizing and pushing state between them

                  • Delivering formatting, rich media, hypertext

                  And for our original example of outline fonts, the concerns are also:

                  • Printing and publication, no one wants bitmap fonts in their newspaper

                  • The diversity of displays and human eyesight

                  Seriously, this obsession with things like bitmapped fonts is basically making me think programmers don’t care about anyone but other programmers, use cases and real-world complexity beyond spherical cows be damned.

                  1. 4

                    programmers don’t care about anyone but other programmers

                    You just now noticed? :-) I’d say it even stronger: most people, no matter their vocation, care only for their own needs and preferences, unless paid to do otherwise. And I believe it’s just fine for us to make things that work for us; that’s empowerment. Modern text rendering is in no way threatened by the revival of bitmap fonts among certain types of programmers. It’s mostly just a fashion statement, but there are legitimate reasons to want simpler tech. Diversity is still acceptable, isn’t it?

                    1. 1

                      The diversity of displays and human eyesight

                      That’s the whole point of this article–throwing away bitmapped fonts is focusing on hidpi displays and ignoring existing technology that’s suitable for the rest. It’s not “vector fonts baaaaaad” it’s “we shouldn’t be prevented from choosing a bitmap option in cases where it makes more sense”.

                2. 8

                  Most of the bitmap fonts are just too small to be comfortable for me to read. Look at Proggy, a good-quality bitmap font, but it’s just too small to be readable by anyone old enough to drink.

                  1. 8

                    I hold a bit of a quarrel with 1 pixel wide bitmap fonts, the Atarist, Spleen and Terminus (at large sizes) fonts all solve the issue of being too small.

                    1. 1

                      That just means your monitor’s resolution is too high.

                      1. 6

                        High DPI screens are here to stay. There’s no reason for bitmap fonts not to come in appropriate sizes for it.

                        There are huge readability advantages to well-designed bitmap fonts and I really wish I could get them on a nice screen.

                        1. 3

                          Terminus at 16x32, its largest available size, will give you 1mm-wide glyphs on a 200 PPI display. That’s about the physical size I use for code, YMMV of course. I don’t expect to switch to a bitmap font for everyday use, because I just don’t see any real advantage on a high-PPI display, and plenty of disadvantages. Seems like an aesthetic preference to me, and those kinds of debates are super boring; de gustibus non est disputandum. But there’s no technical reason not to have larger-sized bitmap fonts, if someone’s willing to do the work.

                          1. 3

                            This post has inspired me to try a few bitmap fonts and I’ve gotta say, if you can find one that fits your normal working size then it’s fantastic!

                            Why? All else being equal, I can read smaller glyphs using a bitmap font, which means I can put more content on-screen at once.

                          2. 2

                            High DPI screens are here to stay.

                            Are they? As of 2020, 1366x768 is still the most common display resolution. If I browse a store selling new laptops, 1080p is by far the most common resolution, and smaller resolutions than that are readily available. After ten years. High-DPI displays have taken over phones, but on laptops/desktops, they remain a niche choice, and niche choices can be taken away once manufacturers lose interest.

                            High-DPI CRTs (although they were anything but ‘crisp’) used to be very common, until everyone switched to LCDs and happily stared at chunky 1280x1024 pixels for a good decade.

                            1. 2

                              Huh. I guess it’s just my sector then - my users are overwhelmingly on high DP screens.

                      2. 6

                        I feel I am missing something, but then again I’m obviously too dense to understand the included glyph code too.

                        Why should I care about readability of a font’s code? I think it’s been more than 2 decades since the last time I needed to change a font and even then I would use other tools.

                        I understand that some people prefer blocky jagged look of bitmap fonts to however their system displays vector fonts. I don’t, but beside my personal preference I would not want to use bitmaps because their discrete sizes create poor accessibility compromises.

                        1. 4

                          No good italics or bolds. I’m surprised nobody else mentioned that. I like 6x13, ProFont, Fixedsys Excelsior, &c, but I prefer good italics.

                          1. 4

                            https://github.com/Francesco149/bdf2x You can scale your bitmap fonts with this and keep using them even on HIDPI displays.

                            1. 3

                              Nice, but the solution is not system based and thus is not sustainable in a long term. Still shows the niceness of bitmap fonts in terms of their hackability.

                            2. 2

                              Because the fact is that in most applications today I can press ctrl-+ and ctrl– repeatedly until the text is just the size that’s appropriate for my need at this moment, and that’s real progress.

                              1. 2

                                Personally, I still use bitmapped fonts. I spend most of my time staring at vim in an xterm window. I find that bitmapped fonts remain clear and easy to read even at small sizes, which means I can fit a lot more text on the screen at once. But hey in some situations, TrueType is probably nice, I’m not going to knock people that like it.

                                However, one thing that consistently annoys me is that the fontconfig shipped with Ubuntu and Debian by default is hard-coded to prevent bitmaps from being used, even if the user has gone out of their way to manually install them. I’m not sure what the justification for this is; others have raised issues about it which are usually closed without a helpful response.