Make Semi Bold and Bold fonts

currently I made regular fonts on fontlab8. How do I make the same fonts available in semi Bold and bold options?

Comments

  • You can design more wheights as seperate fonts or design the Bold version to be variable (new master, matching outlines with your Regular), then interpolate the SemiBold. It seems you need at least two masters to inter- or extrapolate (see Tural's post). 

  • Yves Michel
    Yves Michel Posts: 183
    For a simple demonstration, I'll start from a lonely Regular master (weight: 400) and add an Extra Bold one (weight:800).

    I have only have one master, so
    • I create a new master:
    1. I go into the "File > Font info" dialog
    2. I create a new master by using the + sign (on the left, under my Regular master) > "Duplicate Master, copy glyph layers"
    3. I change the name of my new master to "Extra Bold"
    4. I Change the "Weight class" of the new master from the original "Regular/400" to "Extra Bold/800)
    5. I click on "Build Names"
    6. I change the "Master name" to "Extra Bold"
    7. I click "OK" to close the "Font info" dialog
    • I change the weight of my new master:
    1. I open my uppercase "I" (stem: ±100) for trial
    2. I use "Actions > Adjust > Change weight > Simple" with a value of 25
    3. I click "OK"
    4. The result is an "I" with a stem of ± 200 (acceptable result for me)
    5. I undo this Action on "I" and then apply it on all my glyphs.
    6. Rem.: This doesn't exempt me to verify all my new glyphs.
    When I'm satisfied with my 2 masters, I can use them to create other masters or instances through interpolation.
  • Yves Michel
    Yves Michel Posts: 183
    Of course, this is an example. You have to play with the Change Weight value to reach the good one!
  • Yves Michel
    Yves Michel Posts: 183
    Additionally, I would suggest to consult the Fontlab 8 forum and maybe some tutorials on the Fontlab software!
  • Thomas Phinney
    Thomas Phinney Posts: 2,899
    I would strongly recommend doing considerable manual work after doing some sort of automated adjustment to the stroke weight. The automatic adjustment will not produce great results; it is more of a starting point.
    1. Rem.: This doesn't exempt me to verify all my new glyphs.
    When I'm satisfied with my 2 masters, ...
    Thank you Thomas! You completed my remark.

    But I would be interested to learn a more efficient method.
  • John Hudson
    John Hudson Posts: 3,230
    Of the various methods I have used over the years, my favourite was using Karsten Lücke’s Glyph Tweak tool in FLS5 to rough in weights and proportions, and then to use FLS5’s Interpolate Nodes tool to fit my initial master outlines to those weights and proportions, making adjustments to things like serif weight/length and join tapers as I went.

    FL8 now has a very good Delta Filter tool that functions quite like the Interpolate Nodes tool, but I am not sure there is yet anything that works quite like Karsten’s sledgehammer.
  • Thanks John!
    I still have Studio 5 on my PC but I didn't find the Glyph Tweak tool you mention.
    It seems to be obsolete. I only found https://kltf.de/kltf_otproduction.shtml 
  • Kent Lew
    Kent Lew Posts: 944
    I lamented the loss of Interpolate Nodes when I had to [reluctantly] leave FLS5 behind. News of this Delta filter might just get me to move back to FontLab. (But just as I was getting comfortable in a different environment … 🫤.)
  • John Hudson
    John Hudson Posts: 3,230
    edited November 11
    The Delta filter is great. I use it daily when in the outline editing stage.

    It works quite like Interpolate Nodes, but now you can constrain x,y interpolation direction so each node can have one of five states: moved, locked, locked x, locked y, or fully interpolated.


  • rsdk
    rsdk Posts: 7
    Thanks for your response, but I'm still stuck. Is it possible for anyone to give me step by step process of how to start making the SemiBold version. I already have Regular and Bold version. 

    also, in this link (https://help.fontlab.com/fontlab/8/tutorials/calfonts/7. Families, Variations, Interpolations/7b-2c Making Instances/), when I download the sample vfc file listed there, it only lets you change on letter H, not on any other letter
  • That link does not work for me
  • George Thomas
    George Thomas Posts: 649
    edited December 22
    Stray paren on the end of the link. This is the correct one. https://tinyurl.com/yc4heftn

  • Drawcard
    Drawcard Posts: 57
    Also worth mentioning, RMX Tools (specifically Tuner and Scaler) is anither option for creating the interpolations between your original extreme masters. 

  • Igor Freiberger
    Igor Freiberger Posts: 280
    edited December 23
    rsdk said:
    Thanks for your response, but I'm still stuck. Is it possible for anyone to give me step by step process of how to start making the SemiBold version. I already have Regular and Bold version.
    If you have Regular and Bold as masters, simply go to Font > Generate Instance.

    Note that you aren't limited to SemiBold. Actually, you can even extrapolate and try lighter and heavier instances.
  • John Hudson
    John Hudson Posts: 3,230
    edited December 23
    Are your Regular and Bold masters already in the same VFC project? If not, the first step is to import the Bold into the Regular project as a master, via the Font Info panel.

    You then need to set up the locations in the variable design space for each masters. To do this, you first define a weight axis in the Font Info axis panel. You can assign any location values in the Design Coordinates space (e.g. based on stem weights), but the Regular and Bold masters should be assigned to the values 400 and 700 respectively in the public facing User Coordinates.



    Then in the Instances panel, you define the Design Coordinsates locations for your Semibold weight (which should be mapped to 600 units in the User Coordinates). I recommend defining a Medium instance also, even if you are not planning on exporting it; it should be mapped to 500 units in the User Coordinates.

    Note that the interpolation path between Regular and Bold is not necessarily linear, and a more pleasing weight progression usually involves slightly bending the path as shown in that illustration.

    Your Semibold instance interpolation is only going to work, of course, if your outlines for each glyph in the Regular and Bold masters are compatible. You may need to spend some time checking this and fixing possible incompatible start point locations, path directions, or element ordering.

  • John Hudson
    John Hudson Posts: 3,230
    Also worth mentioning, RMX Tools (specifically Tuner and Scaler) is another option for creating the interpolations between your original extreme masters. 
    Unfortunately, RMX Tools for FontLab were not updated beyond FontLab Studio 5, so if you want to use the latest versions of RMX you also need to be running Glyphs. I go back and forth between FontLab and Glyphs sometimes to access RMX Tools and Kern On.

  • rsdk
    rsdk Posts: 7
    Are your Regular and Bold masters already in the same VFC project? If not, the first step is to import the Bold into the Regular project as a master, via the Font Info panel.

    You then need to set up the locations in the variable design space for each masters. To do this, you first define a weight axis in the Font Info axis panel. You can assign any location values in the Design Coordinates space (e.g. based on stem weights), but the Regular and Bold masters should be assigned to the values 400 and 700 respectively in the public facing User Coordinates.



    Then in the Instances panel, you define the Design Coordinsates locations for your Semibold weight (which should be mapped to 600 units in the User Coordinates). I recommend defining a Medium instance also, even if you are not planning on exporting it; it should be mapped to 500 units in the User Coordinates.

    Note that the interpolation path between Regular and Bold is not necessarily linear, and a more pleasing weight progression usually involves slightly bending the path as shown in that illustration.

    Your Semibold instance interpolation is only going to work, of course, if your outlines for each glyph in the Regular and Bold masters are compatible. You may need to spend some time checking this and fixing possible incompatible start point locations, path directions, or element ordering.

    Can you explain a bit more on the design and user coordinates and how do I set them and what should be the values for Regular, Bold, and Semibold. Also, when I get to the graph, my graph looks like this, so how do I add the new values in the graph?

  • John Hudson
    John Hudson Posts: 3,230
    The weight axis in OpenType variable fonts is defined relative to the scale from 0–1000 that is shared by the OS/2 font table weight class and the Cascading Style Sheets (CSS) specification used to define text weight in Web browsers. This scale allows for any number on that scale to be used to affect a sepcific weight in the variable design space, but there is also a set of standard instance weights defined along the scale:


    These values correspond to the ‘User Coordinates’ in the FontLab axis graph, i.e. these are the coordinates that the user will use, e.g. in CSS, to interact with your font weight axis.

    The ‘Design Coordinates’ are whatever scale you use internally to define the weight interpolation minimum and maximum, defined in font units (i.e. the same units used to define glyph outlines, spacing, kerning, etc.). The axis graph is mapping between your design units and the User Coordinates. The design units can be arbitrary: they just have to make sense to you. I sometimes use a multiplier of the common stem weight of a letter like lowercase l, such that at each extreme of the weight axis and at each instance the value of the Design Coordinates relates directly to the weight of the glyphs in some way.

    You can add points to the glyph graph and drag them into position manually, but just clicking anywhere on the graph line. But the easiest way to plot a weight axis is to first go to the Instances panel in Font Info, and define the set of named instances there (named instances are locations in the design space that you want to predefine and gival a label; often they correspond to static fonts you might want to generate such as Regular, Semibold, Bold, etc.) For each instance, you define both the location in design space font units (design coordinates), and also the mapping to the OS/2 weight class (user coordinates):



    When you have done this, you can go to the Axes panel and automatically fill in the named instances in the sub-panel for each axis:



    Now, when you open the axis graph, you can click the + button at the top to add points to the graph that correspond to your instances (select the From Instances option; the From Axis Instances does weird stuff).



    For the weight axis, I think it is a good idea to plot an entire weight progression across the User Coordinates, at least from 100 to 900, even if your actual design does not extend to cover that full range. The graph shown above, is for a font that actually only covers from Regular (400) to Black (900), but I have defined in the graph where there lighter weights from 400 down to 100 would land, because I may opt to extend the design in future, and want to know what the full curvature of the weight progression would look like. If you start with a Regular minimum weight, and then later extend the design to lighter weights, the Regular sometimes ends up being a break point on an othwerise smooth progression—as is the case here—, so plotting the full weight range ahead of time helps confirm whether this is going to be a minor or major distortion of the curve.

    Because the OS/2 weight class and CSS named instances have pre-defined values, it is a really good idea to plot all of these on the graph, even if you are not intending to output them all as named instances in a variable font or as individual fonts in a static family. You may be thinkin of your design as consisting of Regular, Semibold and Bold, with the Semibold sitting somewhere in the middle space between Regular and Bold, but the way the OT variable weight axis is defined really presumes the existence of a Medium instance (the 500 location on the User Coordinates scale). If you only define locations on the axis graph for Regular (400), Semibold (600), and Bold (700), then the interpolation of the undefined Medium location will be halfway along on a linear progression between Regular and Semibold, which may be acceptable but means a user engaging with the design space via CSS weight definitions won’t have the benefit of a smooth non-linear progression across the weight axis.