Seriously, let’s make fonts not suck!

I was about to try to get some sleep, but honestly wasn’t feeling very tired (as usual) at around 2:30am eastern, and read Federico’s excellent GNOME Font post.

I’ve always thought the desktop wide font configuration in GNOME was way too excessive and unclear. Federico’s thoughts echo my own here, so to grasp the context of the rest of this post, please read his. I also think the actual font selection dialog is a mess. Widgets are poorly arranged, feels a bit outdated, and at the very least I’d like to see the actual names of the fonts in the family list appear in their respective faces – having to select each font I’m looking for to preview it below the list is a tedious process.

Anyway, this post is not about the font selection dialog – it’s about GNOME’s font configuration dialog. I decided I’d create a working mockup of his idea, and I must say, I’m a fan.

Screenshot of working GNOME font chooser mockup

I added the Bold and Family options. In a final version, I think the family selector should just be a combo box that displays the family names in their respective faces. GTK needs this widget. For now, the standard font chooser button is a good placeholder.

If you want to test drive this working mockup, both the source and assembly are available to download. I prototyped the idea in C#. I will not entertain comments along the lines of “if it’s going to be in GNOME, it’ll need to be in C.” While personally I’d enjoy debating that idea, if this concept is accepted, I’ll be the first to offer to rewrite it in C. This is just a prototype – a working mockup. I don’t think I could crank this out in C in 1.5 hours.

Also, it doesn’t actually change your GNOME font settings. This is just a UI prototype.

Without further ado:

To run the assembly:

$ mono font-chooser.exe

If you want to compile the code:

$ gmcs -out:font-chooser.exe -pkg:gtk-sharp-2.0 FontChooser.cs

Along with Federico’s post, I hope this starts to drive discussion. I’d love to see some really quick turn around on this in GNOME.

47 Replies to “Seriously, let’s make fonts not suck!”

  1. C# and Mono are already in GNOME so clearly we condone it.. Also I fail to see any reason to rewrite a font tool in C. Don’t let them push you Aaron..

    Also.. damn sexy tool – I tested it on Fedora Development to great succes. Maybe it needs settings for hinting somewhere (though one could argue that should be handled automatically).

  2. great to see work in this area!
    however, maybe this new dialog should be used not only at first login but also for font choosing in GTK, all the time!
    the gtk_font_selection_dialog could be reworked to look exactly like that. Try to think of any downsides… I couldn’t come up with any…

  3. Just a quick remark : i don’t think the words “zoom in” and “zoom out” are appropriate. Would be better to say “Smaller fonts” and “Bigger fonts”, imo. The word zooming means that you change your own point of view, but you don’t change the actual size.

    Otherwise, i like it

    P.S : why do i have to give my mail to post a comment?

  4. Surely the next thing to do is to post to desktop-devel so that discussion can take place.

    So many ideas die because people are using blogs to attempt to discuss stuff rather than the mailing lists.

  5. Sweet!

    I minor enhencement would be to show the real Font-Size below the currently selected Font.

    Keep it up!

  6. Cool! I like the idea. The user doesn’t needs to know the dpi nor the font size with this. DPI should be taken from X, as federico said. Simplicity. That’s why I like Gnome over Kde. An average user doesn’t need a bloated gui. A power user may want more control over every single possible option, but that’s what GConf is for.
    I wish i had such smart ideas

  7. @David Nielsen: I wrote my C version exactly at the same time. So it’s not a rewrite, its parallel work. Well, and for such small tools C works better IHMO: Problem is small enough, that you do not face limitations of C plus significantly better startup time.

  8. @Mathias Hasselmann: look at his code. He uses widgets with no relief and horizontal separators to separate the widgets inside de VBox. I must say he has very good taste.

  9. @ Mathias Hasselmann

    I’m usually the first to advocate right aligned text to improve readabilitybut in this case where the text is not intended to be read and could be nonsense like ‘lorem ipsum’ then centre alignment really does look better. I also prefer your use of standard button widgets. Since clicking directly on the list is likely to the easy those buttons would only really be to improve keyboard access anyway. Not sure the long description is a good idea since the font widget is generic and used by more than just the control centre which accounts for a lot of the complexity Federico is dissatisfied with.

  10. Inspired by Aaron’s approach I’ve updated my variant of the chooser: (tarball) (screenshot)

    @nacho: Added Aarons’ vbox separators approach into by private tool chest.
    @Alan: Text still is left aligned, but that should easy enough to change. Regarding reuse: Put the font-preview thing into a separate widget (side note: Who ever you are, who you added G_DEFINE_TYPE to gtk-2.10: You are my hero). Guess that’s a starting point for getting a modern font chooser. The current font selected of GTK really looks quite old-fashioned those days…

  11. I agree with Alan. Center the text, remove the long description and then add this up as the default font adjustment dialog in Gnome. Whether it’s in C or C# doesn’t really matter to me, but C sounds like a safer choice if it’s going to be the default dialog and since it’s implemented in C already, it seems like a natural choice. Now just go add it to the proper Gnome branch and get it in. :-)

  12. I like the idea, but I would add the font size at the end of the sentence (i.e. “A quick brown fox. (12 pt font)”). The reasons are manifold. (1) in some fields such as government a specific font size is required for all documents (e.g. since it’s easier to scan), (2) if you’re mixing font styles, fonts of the same size tend to look better so you’ll need to have some way of matching them other than time consuming random selection and visual comparison, (3) many people have a sense of how what size font sizes will print on their printer but it’s not possible to get this information from a simple selection.

    I’d also agree with Géry Debongnie’s comments about “Larger fonts”/”Smaller fonts” instead of “Zoom In”/”Zoom Out”.

    I have a question on internationalization. Not all fonts can handle all languages. If you are Japanese, you’d likely want to limit your font selections to fonts that could handle Japanese (unless otherwise stated). I’ve yet to see a good implementation of internationalized font selection, so the only suggestion I have is that we have some way to limit your fonts to a particular language grouping (with “All languages” selected by default).

  13. @Robert: The purpose of this specific dialog is adjusting font size in GNOME without asking the user stupid questions about screen resolution, preferred DPI and such techie crap (see Federico’s post). The dialog shall tell GNOME how large to render 10pt text: Do you want have much, small text on your 200 dpi LCD or do you want less but clean and readable text. So displaying font sizes would be meaningless for this use case. But indeed, if this design is going to replace GtkFontSelector, then also font sizes have to be displayed.

  14. >Not all fonts can handle all languages. If you are Japanese, you’d likely want >to limit your font selections to fonts that could handle Japanese (unless >otherwise stated).

    yes, it would nice to let the user change the text which is displayed, so that the user can enter characters specific to his language to see if they display nicely or not. (I think they will always display if it’s possible at all to display the glyphs with the fonts installed, but font substitution could make the text an ugly mix of fonts).

    with slovenian, the first thing i would do would be to add čšž at the end of the text.

    so, it would be nice if the text could be edited in-place just by double-clicking on it.

  15. Limiting the choice of style to Bold or Italic is a bug. There are fonts out there with more than just the 4 variants (Regular, Bold, Italics, Bold Italics), some can be Light, Demi-Bold, etc.

  16. The two buttons should be close to each other to minimize cursor movement.

    Otherwise, great! :) always thought that gnome uses quite a lot of space due to dpi/font settings compared to osx.

  17. If I got Federico’s post right, his basic idea is to replace the overall font setting (dpi app font desktop font etc) by a single dialog where the user can visually select his favourite font size.

    This is why I think that font variants should not be presented here. This dialog should simply be there to set the average font everywhere, once and for all. Font variants should only come into play when doing customisations like setting a specific desktop or terminal font.

    Another problem I see is that such a dialog would create the need for relative font sizes. If I decrease the overall font size, I’ll want to keep the proportions my fonts previously had.

  18. I think using this dialog for the first time someone logs in so they can judge how large they want fonts to be, is a good idea.

    However, as far as replacing all font selection dialogs with this, it is a horrible idea.

    If I’m using, say, inkscape and I know I want 96pt font for something, I don’t want to have to click through 5 or 6 iterations of ‘show me bigger fonts’. Optimizing font dialogs is good, but don’t make things only usable for the lowest common denominator.

  19. @emmanuel: Well, if you’ve choosen slovenian as desktop language, the quick brown fox sentence would into something containing the critical glyphs of your language – like “Zwölf Boxkämpfer jagen Viktor quer über den großen Sylter Deich…” for german.
    @federic: I doubt you can rid of the font selection part, as at least the much-but-small-text freak must be able to use his favorite font and see how small it can be go before it becomes unreadable. Regarding proportions: This works by setting the DPI gconf key Federico mentioned.

  20. Apologies to Aaron for this shameless hijacking of his journal (but only because Mathias didn’t post a link to his bug report in addition to the very helpful direct links to the attachments)

    > @Alan: (side note: Who ever you are, who you added G_DEFINE_TYPE to gtk-2.10: You are my hero).

    Different Alan I think, I’m Alan Horkan and usability is my thing mostly. (Probably wasn’t Alan Cox either.)

  21. What about people who want to tweak their desktop and want to use a specific default font, not just a font family?

  22. It would be essential to also have the size displayed on the side (and still be able to set the DPI). Otherwise it will become very painful for “pro” users who know what points and DPIs are. And yes, even the non-US world uses DPIs and 1/72″ points (at least Canadians do).

  23. Nice. I think it would be good if the user would be able to see what the font would look like over the whole screen very quickly; maybe a larger mockup would be good? Obviously this interferes with the direct comparison of font sizes… And since we are looking at font sizes side-by-side, maybe it would be possible to compare families and styles side-by-side?

    Secondly, I know I dislike it intesely when although there is a simple and intuitive way to do something for the most common case, it is the only option presented, and actively hinders me when I need to do something slightly odd…

  24. Nice prototype! — It’d be better to make sure that the mouse wheel can be used too. Having to press a button to display non-common sizes can get annoying fast.

    Just my two cents.

  25. Please, leave the numbers somewhere, for example I know what numbers (in pts) I need and just select them

  26. Language is not the issue, but it really needs to be a widget and not a standalone
    program. Some programs (Gedit, Gnumeric, Gimp) need font and font size

  27. The step between font sizes is too large in the screenshot above. I’d like to select a size in the middle between two sizes.

  28. so, thats what i think about this and my ideas:

    Handle gnome fonts like themes. Make “font sets” with fonts that look good together (or just fonts which have bold, mono etc all available like DeJa Vu for example)
    Also let people choose between rendering.
    And if they want something special –> “Font Details…” and change set to “custom”.

    just my 2c…

  29. I must confess I’m not sure what “Sans” and “Bold” do (I haven’t tried running it). Does clicking Bold make it bold? Does that mean it *is* bold, and I can click that to change it? Is this Sans, or do I click to make it Sans, or click to bring up another dialog? Usually buttons are labelled with verbs; I don’t know what clicking these buttons will do.

    But the list of sample sizes is pretty nice. The only improvement I would suggest is to find some way to offer continuous sizing, like on the Mac. But it might be hard to add that while still showing a bunch of samples, and not be too cluttered.

  30. Please, don’t oversimplify. It is true that dpi and font size are numbers without a precise correspondence with reality, but I know what are the best settings here (84 dpi, 10 “points”) and I’d like to be able to set “my” settings without having to guess font size on a list.
    Also, it should be possible to continue using different fonts; for example, I use “standard” fonts (Luxi Sans) for applications and filenames in normal nautilus windows, but I like to use a larger “fun” fonts for my Desktop icons’ captions.
    I’ll be REALLY pissed off if you’ll try to force me to use a single font everywhere, and I’m pretty much sure that I’m not the only one.

  31. Since the and – buttons are only for increasing and decreasing the font sizes, why not put font sizes, in increasing order, in a list box with *scroll bars*? I think that’s a lot more consistent with the rest of the system.

    The and – buttons look a bit weird imo, but if you use a scrollbar then it should be clear that you’re able to choose from many choices.

  32. Just a usability engineering remark: Plus (positive) is always to the right and to the top, minus (negative) is to the left or to the bottom. At least in most parts of the word, except maybe right-to-left countries.

    Anyways, nice mockup and a good idea Aaron!


  33. I guess “without a precise correspondence with reality” is the new euphamism for “wrong”. :-)

    I am a bit confused by the claim that numbers don’t force you to guess, but showing the actual size does.

  34. @dre: I love your mockup, it looks simpler and more supportive for disabled users. I am just wondering if we should users know the size of the font?

  35. @ken: if those units are inaccurate, lets make them pixels, milimeters or whatever, but leave them in the dialog somewhere

  36. Well, I’m in favor of OO for desktop applications, C is harder to maintain than C#.

    Here are some numbers for my aging system (PII 300, 64Mb ram*):

    This is my low-tech test of the differences between C and C# as it pertains to this prototype. Differences in the program should be minimal, as they are of relative complexity. Of most concern is how long it takes for Mono to start up and how much memory it takes. I simply used ‘time’ (“real time”) and hit Alt-F4 as soon as I saw the window finish displaying.

    Aaron: 3.5-5.0s / 14,120kb rss
    Mathias: 1.5-2.0s / 7,612kb rss

    on a Intel Celeron D 346 (3GHz) with 512mb, i got these results (running over ssh on a home network):

    Aaron: 1,1-1.4s / 16,000kb rss
    Mathias: 1.0-1.2s / 10,244kb rss

    * – Currently running XFCE4, not Gnome.

    So, it’s fair to say that the C# prototype takes twice as long to load and twice the RAM on the older computer but only slightly longer (

  37. This may be just a little OT, but I hope that font size in points always reflects the (standard) size when printed on paper.

    And, as I think somebody else mentioned, many of us have a reasonable feel for the size of a 12 point font on paper.

    To state it another way, I want to choose my font sizes (in documents/applications I might print) to create “standard” type sizes when printed. Then, if I need to, I might magnify (zoom) in or out to get easily readable sizes on the display.

    Like I (almost) said, I’m not sure anybody is advocating anything different. (I guess, among other things, this means I support the poster who suggested that point sizes be shown on the font style/size selector.

Comments are closed.