Fontbakery feedback

I am curious if anyone has used fontbakery and has any feedback that they would like to share, here, in the GitHub issue tracker, or to me privately. 

I've come to learn in the last week that some folks have not communicated their feedback on how the project could be better in their eyes, since they didn't believe the feedback would be acted on. Since that's not the case, I'm hoping to reach anyone here who may have additional feedback :)
Tagged:
«1

Comments

  • Ray Larabie
    Ray Larabie Posts: 1,431
    edited June 2023
    Hi Dave,
    It was very difficult for me to install it in Windows. I have very little experience with Python and most of the steps in the installation instructions didn't work. I got some outside help from someone with some expertise, and they had a tough time getting it going. The biggest battle was getting the paths sorted out. We tried all kinds of combinations until we got the specific path scheme it was looking for. I think I reset my machine a dozen times that day. But once it's up and running it's no problem. I recommend watching someone who doesn't know what they're doing try to install it in Windows.
  • c.g.
    c.g. Posts: 54
    I have no problems installing in Python 3.10 on Windows 10 64 bit, but there’s no way to make the progress bar work. So I always have to use -s to deactivate it.

    It’s a great tool, every type designer should use it. There are some errors that should be warnings in my opinion, but it’s not a great problem.
  • So far I understand there is also a more user-friendly web version on https://github.com/googlefonts/fontbakery-dashboard however the page with a Live Demo http://fontbakery.graphicore.de/ isn't available (404 Not Found).
  • Dave Crossland
    Dave Crossland Posts: 1,429
    @Ray Larabie good stuff! I have posted https://github.com/googlefonts/fontbakery/issues/4181 to improve that. How regularly have you been updating the package? 


    @c.g. also an excellent bug report :) I posted https://github.com/googlefonts/fontbakery/issues/4182

    @Michael Rafailyk. Oh! The dashboard project was sadly halted in December 2019. I've archived the project. A desktop UI app, or even better, integration into popular font editors as a plugin, has been discussed recently (https://github.com/googlefonts/fontbakery/issues/4128) and the GlyphsApp account said they are looking into it :) Since @Fredrick Brennan posted a UI source code, it may be a small effort to package that as part of the regular release process.

    That might also solve the other 2 issues with Windows installation and progress indication :)



  • John Hudson
    John Hudson Posts: 3,186
    So far, I have only used FB in the context of projects for Google Fonts, but was coincidentally thinking about using it today for something else. Something I wonder about is whether there is a way to set preferences to label or isolate GF-specific QA criteria such as character coverage?
  • Simon Cozens
    Simon Cozens Posts: 740
    Fontbakery has "profiles" according to which you check the font; the character coverage requirements for GF should be in the "googlefonts" profile, while checks which are "best practices shared among the type design community" live in the "universal" profile. So if you run "fontbakery check-universal" instead of "fontbakery check-googlefonts" you should not get the character coverage checks.
  • As a casual/occasional user of Fontbakery, I find it to be a bit of a pain looking up and writing all the command line flags just to perform some basic actions. I think there should be some sane default actions that are performed if only the check profile is specified.

    For example, if I run:
    fontbakery check-universal
    it responds with `No applicable files found`, which is confusing since I have plenty of .ttf files in the current folder. If no flags/parameters are entered after `check-xxxx`, it would be sensible to me if it simply runs on all font files (ttf/otf/woff/woff2/etc) in the current folder, with the default log level, and outputs to some default formats like gh-markdown and html.

    Further to this idea, it would be useful if those default actions could be overriden with a config file in the current folder, and perhaps a default config file somewhere else on the user's system.

    I also just posted the above as issue #4183 on Github.
  • Dave Crossland
    Dave Crossland Posts: 1,429
    Excellent points Justin! I agree those are excellent ergonomic improvements.

    John, Simon has it all right. If you check my typecon workshop linked in the readme, you'll see how easy it is to make a new profile.
  • Ray Larabie
    Ray Larabie Posts: 1,431
    @Dave Crossland I haven't updated it since earlier this year because I can't remember how but I should get around to figuring that out.
  • Dave Crossland
    Dave Crossland Posts: 1,429
    I suspected this. The project moves quickly so this perturbs me, and I'll prioritize an easy install gui this summer 
  • You could also encourage users to update to the latest Fontbakery version by checking for updates whenever Fontbakery is run from the command line, i.e. "There's a new version of Fontbakery available. To update, run `pip install --upgrade fontbakery`". Or you could go a step further with a prompt like "Install update? Y/n", and then run the pip command for the user.
  • +1 for a Glyphs plugin
  • Jens Kutilek
    Jens Kutilek Posts: 361
    edited June 2023
    Don't know if that feedback helps, but as a seasoned Python programmer I have no problems installing, running, and updating fontbakery. I built my own profile by mixing and matching checks from the various profiles and categories, and have added like two dozen custom checks that are specific to our production standards.

    Fontbakery is run automatically in our Makefile-/fontmake-based variable font workflow, and I run it manually on our usual static font exports (OTF and TTF generated from FL5, then patched and modernized with Python FontTools). Might automate Fontbakery in that process as well.
  • Dave Crossland
    Dave Crossland Posts: 1,429
    @Justin Penner Yeah, I think that would make sense given that many fontbakery users are not experienced sysad/developer types.

    @Jens Kutilek very helpful! Have you ever tried to modify any fb internals, or only worked on end-user usage and profile development?

    @PabloImpallari on it



  • It seems relevant to mention OpenBakery, a recent fork of FontBakery by Miguel Sousa, that wants to address some of the issues mentioned above.
  • bramstein
    bramstein Posts: 4
    I'd like it if the profiles were a bit more like plugins, so that you can configure FontBakery dynamically. For example, at the Type Founders we have our own private profile with checks that are very specific to how our repositories are structured and automated. They don't make a lot of sense to contribute to the main repository as they wouldn't be useful to anyone but us (I've already contributed some of the more generic ones).

    Right now, we add our own profile in the FontBakery build we use internally, but the whole setup is a bit awkward. Extending that to the wider community, I could see profiles owned and maintained separate from the main project: Adobe, Google, and others could maintain their own checks and profiles, which would be (automatically?) installed. The main project could then serve as a repository for the "universal" checks and a registry of external profiles. I understand something similar is being worked on using extras, but I hope some consideration is given to supporting profiles that don't live in the main repository.
  • Simon Cozens
    Simon Cozens Posts: 740
    You can do this already! Use "check-profile <filename>" where filename is the name of your profile.
  • bramstein
    bramstein Posts: 4
    Huh, I must have missed that in the documentation. Great, that solves my issue! Thanks!
  • c.g.
    c.g. Posts: 54
    edited June 2023
    Another good improvement would be implementing the code to fix the detected issues.

    For example, fontbakery can calculate italic angle, caret slope rise and caret slope run. When detected values are different than the expected ones, there's not much code to write to fix the detected errors. Or decomposing glyphs with scaled/transformed components, removing duplicate components, setting a bit in panose etc.

    The code could be implemented in external tools, like gftools, and fontbakery could suggest the user how to fix the detected errors, where possible.

    For example, a message like “To fix this error, run gftools fix italic-angle”


  • Jens Kutilek
    Jens Kutilek Posts: 361
    edited June 2023
    Something that often confuses me is the wording of the check titles and descriptions. It's often unclear what the desired result is. An example:
    >> Check:   com.google.fonts/check/soft_hyphen
        Desc:    Does the font contain a soft hyphen?
        Files: foo.ttf
    
        WARN This font has a 'Soft Hyphen' character. [code: softhyphen]
        Result: WARN
    "Does the font contain a soft hyphen?" implies (for me at least) the the font indeed should contain a soft hyphen character. So as the result is that it does contain one, why is it a warning?

    There are numerous instances of this. "Whitespace glyphs have ink?" (they shouldn't), etc.

    Maybe someone in the capacity of an editor should go over all user-facing text, define a style guide for writing check messages and titles, and unify the style.
  • Hi all, here's my feedback, as we've integrated Fontbakery into our workflow at Schriftlabor over the past couple of years. But it doesn't work as smoothly as we would like it to.

    1. The output filters simply list the checks in the order that they are executed. We modified the html filter to always sort the results so that the ERRORs and FAILs are at the top, followed by WARN, SKIP, PASS, etc.; such an option should really be built-in.

    2. We also created our own Schriftlabor profile. But the next update to fontbakery broke both our profile and our modified html output filter, so we now remain several versions behind until we have time to update the code. I know it's not easy, but it would be great if the methods used for interfacing between the profiles/output filters and the rest of the the fontbakery code could remain more stable (e.g. by deprecating old methods instead of removing them entirely). Or perhaps we should have structured our methods differently?

  • John Hudson
    John Hudson Posts: 3,186
    "Does the font contain a soft hyphen?" implies (for me at least) the the font indeed should contain a soft hyphen character. So as the result is that it does contain one, why is it a warning?
    It’s a warning because many fonts get the soft hyphen character wrong, so a font containing a mapping for that character needs to be checked. I agree that the message could be clearer and more useful. The check should be followed by others that determine whether the soft hyphen is correctly implemented (zero-width, no outline) or incorrectly implemented (advance width, outline or component, or double-mapped to /hyphen glyph).
  • I'm not the most experienced with Python and I had a lot of trouble getting it to work, and ultimately found it really frustrating. I think it needs a UI.
  • one request I have is some kind of status report on the 500+ open issues (some 10+ years old). without knowing how issues get triaged, it’s hard to know if fontbakery will miss anything important out-of-the-box or what its general status is
  • With a large list of files it didn't work properly yet since I wasn't able to scroll down, but it is a fantastic improvement! I love it!
  • @Simon Cozens Do you know who runs fontbakery.com ? Or anyone else? I'm getting some errors with some profiles, only two seem to work. 
  • I'm responsible for the web-based version. Please file an issue at https://github.com/fonttools/fontbakery and mention @simoncozens and I'll fix it.
  • Thanks, will solve it.
  • Thanks, will solve it.
    Perfect, thank you very much :)