Font Engineering resources needed

Hi there, I would like go deep into font engineering,  font mastering, and quality assurance, because I'd love to have solid, compatible and bullet proof files of the fonts I design.  Actually, I'm just curious :). I wonder if you can advise me if there is a website/manual/book or any other resources which can help me to better understand what it is inside a font and how it works (tables spec, vertical metrics settings, naming settings, hinting etc etc) I know that it is a HUGE subject. I just need a starting point.


  • Paul Miller
    Paul Miller Posts: 273
    Try the Microsoft Typography Docs, in particular the Open Type spec but be warned it's dry reading.
  • Florian Pircher
    @Simon Cozens’s work-in-progress Fonts and Layout for Global Scripts is a great introduction to fundamental topics such as Unicode and OpenType features. From there you could explore resources such as the Microsoft docs as recommended by Paul.
  • Claudio Piccinini
    Naming settings is a thing that interests me a lot as well, since I haven’t decided yet a naming scheme that is fully convincing me. Bookmarking. :)
  • Igor Petrovic
    A few resources that might be helpful: 
    Legendary essay about problems of presenting fonts on screen; the focus on hinting particularly.

    "Adobe Type 1 font format specification"
    Old, but still important introduction the basic concepts of font format, tables etc. Recommended to me here on TD, but I never found time to go in detail through it. There is a PDF available.

    You might want to check this recent thread, were font engineering and how to get into it was dicussed

  • c.g.
    c.g. Posts: 53
    edited April 2021
    Hi all,

    I just released a small command line font editor on GitHub:

    Among the other things, it helps to correctly compile the name table and align the v-metrics of the family to the same baseline.


    The concept is the following: create a JSON configuration file containing usWidth/usWeight Class and pair it with the desired style names (long and short word). There's no need to create it manually, a JSON with default values can be created via command line:
    ftcli wizard init-cfg .
    It creates a file named 'config.json' in the current directory, that can be edited manually or with the command line editor:
    ftcli wizard edit-cfg .\config.json
    Here I'm changing the usWeighClass value for the Book style from 350 to 450:

    Once compiled the configuration file according to your needs, the next step is to parse all fonts present in the work folder:
    ftcli wizard init-csv .
    This will create a file named data.csv in the current folder, that can be edited manually or using the command line editor:

    In the image can be seen that IBM used 200 as usWeightClass for the ExtraLight style. It is not recognised because our default configuration file uses 275. At this point we can choose to change the configuration file or the usWeightClass value. It's up to the user.

    The 'r' choice recalculates the values parsing a string, that can be the file name, the PostscriptName, a namerecord or a combination of namerecords:

    Once the csv file is correctly filled, the name table can be recalculated (all values in the csv file will be written into the fonts):
    ftcli wizard recalc-names . -sita 6 -swgt 1 - swdt 1 -swdt 6 -ex 4 -ls 400 700 -o fixed
    -sita 6: the short literal for the italics ('It') will be written in nameID 6
    -swdt 1: the short literal for weights ('Bd') will be written in nameID 1
    -swgt 1 -swgt 6: the short width literal ('Cn') will be written in nameIDs 1 and 6
    - ex 4: nameID 4 won't be recalculated
    -o fixed: new files will be written in the 'fixed' folder (it will be created if doesn't exist).

    There's a lot to say about this, but I stop here for now.


    I did nothing else than replicate (or so I hope!) what explained by Karsten Luecke here:
    ftcli metrics align .

    Will align all the fonts in the folder to the same baseline.

    ftcli metrics align . -sil

    Same as above, but will use the SIL method:

    ftcli metrics copy --source-file D:\Fonts\Font-Bold.otf --destination D:\Fonts\Test\

    This will copy vertical metrics from a source font to one or more destination fonts.


    There are other commands, but they are mostly self-explaining:

    ftcli ftedit --help

    Changes some font's values, as usWeight/WidthClass, Bold/Italic/Oblique bits, adds a dummy DSIG (I've read in FontTools code comments that it's needed by certain software to use features in TTF fonts), changes embed level etc.

    ftcli names --help

    Adds and deletes namerecords, replaces a string in the name table, copies names from Windows table to Macintosh table (I had some fonts where the Mac table wasn't filled at all and I don't know if this is correct).


    ftcli names setname --name-id 1 -platform win -string "MyFamily Name"

    Use --lang to write in a language different than 'en' (--lang 'it').

    ftcli print --help

    Prints various font's informations, for example the name table:

    ftcli print names IBMPlexSerif-Bold.otf

    ftcli print info IMBPlexSerif-Bold.otf

    ftcli renamer --help

    Renames font files according to the chooses string in the name or CFF table.

    ftcli rm-ovlps --help

    Removes overlaps in TTF files:

    ftcli wf --help

    Compress/decompress webfonts and creates a CSS kit.

    Not an engineering tool, but I hope this helps at least with the name table, that, for what I see, is a hard beast to handle.

  • Jens Kutilek
    This looks quite useful; I think it deserves its own topic instead of being buried in this thread. Or add some examples in the wiki or readme on GitHub :)
  • c.g.
    c.g. Posts: 53
    This looks quite useful; I think it deserves its own topic instead of being buried in this thread. Or add some examples in the wiki or readme on GitHub :)

    It's in my intentions to write a decent documentation for this tool.

    Not sure that it deserves its own topic, so I started with an example in the wiki: I edited IBM Plex Sans linking the Text and Bold styles instead of Regular and Bold ones.
  • Igor Petrovic
    Igor Petrovic Posts: 264
    @Cesare G. +1 for dedicated topic for your command line tool :) I am not an advanced type tech expert, but looks like it has a nice potential and I belive there is a broader target group here on TD that should see this on a separate topic.
  • c.g.
    c.g. Posts: 53
    Ok, I will write a more detailed documentation and add some more examples in the GitHub wiki before opening a topic. Meanwhile feel free to test and write me for help.
  • Andrea T.
    Andrea T. Posts: 40
    @Simon Cozens @Florian Pircher Fonts and Layout for Global Scripts  is an amazing resource to get into open type spec! I'm reading it combined with Microsoft open type spec and I'm starting to understand something about what is happening in the background life of my "just draw the outline" daily work, I want more of such resources!  @Cesare G. Your tool is interesting but maybe too much for me right now since I don't have enough knowledgment of command line tools such as the one you designed. I'm planning to study a bit of coding cause I suppose I cannot do type design anymore  without knowing something about python or similar...

  • Roel Nieskens
    Roel Nieskens Posts: 187
    @Cesare G. This looks like a great "Swiss army knife" tool. I can't get it to run currently (opened an issue for that) but curious to see what else it all offers, especially the CSS generation!
  • c.g.
    c.g. Posts: 53
    @Roel Nieskens I added a CSS kit creation tutorial in the wiki.

    I also opened a discussion so to answer directly there instead of messing this thread.
  • Igor Petrovic
    Igor Petrovic Posts: 264
    edited May 2021
    FontDrop! offers an interesting sum of table data, with the link next to each which explains what the table is about.