question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

VF: Base master not found

See original GitHub issue

I’ve run into this error, but I’m not sure where it originates from. A VF won’t build because of Base master not found, traceback below.

The build in question is here: https://github.com/yanone/Arima-Font/blob/master/sources/builder.yaml using gftools builder sources/builder.yaml

The Glyphs 3 source has a VF Origin set to Thin, and a Thin instance exists, and it reflects in the auto-generated .designspace file as the wght axis’ default value:

  <axes>
    <axis tag="wght" name="Weight" minimum="100" maximum="700" default="100">
      <map input="100" output="30"/>
      <map input="200" output="45"/>
      <map input="300" output="65"/>
      <map input="400" output="90"/>
      <map input="500" output="103"/>
      <map input="600" output="135"/>
      <map input="700" output="160"/>
    </axis>
  </axes>

So as far as I’m concerned, the data is complete (but I’m not the biggest VF expert).

I’ve had the locations printed after this line, which yields once [{}, {'wght': 1.0}] and once [{'wght': 1.0}] which then triggers the error because of a missing {}. This is as far as I could analyze it, but now I need to ask for help. What is going on here?

Thank you.

The full traceback:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/fontmake/font_project.py", line 980, in run_from_designspace
    self._run_from_designspace_interpolatable(
  File "/usr/local/lib/python3.9/site-packages/fontmake/font_project.py", line 1063, in _run_from_designspace_interpolatable
    self.build_variable_font(
  File "/usr/local/lib/python3.9/site-packages/fontmake/font_project.py", line 338, in build_variable_font
    font = ufo2ft.compileVariableTTF(
  File "/usr/local/lib/python3.9/site-packages/ufo2ft/__init__.py", line 554, in compileVariableTTF
    varfont = varLib.build(
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/__init__.py", line 926, in build
    _merge_OTL(vf, model, master_fonts, axisTags)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/__init__.py", line 619, in _merge_OTL
    merger.mergeTables(font, master_fonts, ['GSUB', 'GDEF', 'GPOS'])
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 139, in mergeTables
    self.mergeThings(font[tag], [m[tag] if tag in m else None
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 1044, in mergeThings
    super(VariationMerger, self).mergeThings(out, lst)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 127, in mergeThings
    self.mergeObjects(out, lst)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 102, in mergeObjects
    mergerFunc(self, value, values)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 1044, in mergeThings
    super(VariationMerger, self).mergeThings(out, lst)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 127, in mergeThings
    self.mergeObjects(out, lst)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 102, in mergeObjects
    mergerFunc(self, value, values)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 1044, in mergeThings
    super(VariationMerger, self).mergeThings(out, lst)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 127, in mergeThings
    self.mergeObjects(out, lst)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 102, in mergeObjects
    mergerFunc(self, value, values)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 1044, in mergeThings
    super(VariationMerger, self).mergeThings(out, lst)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 129, in mergeThings
    self.mergeLists(out, lst)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 112, in mergeLists
    self.mergeThings(value, values)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 1044, in mergeThings
    super(VariationMerger, self).mergeThings(out, lst)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 125, in mergeThings
    mergerFunc(self, out, lst)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 833, in merge
    merger.mergeLists(self.SubTable, subtables)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 112, in mergeLists
    self.mergeThings(value, values)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 1044, in mergeThings
    super(VariationMerger, self).mergeThings(out, lst)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 125, in mergeThings
    mergerFunc(self, out, lst)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 653, in merge
    _MarkBasePosFormat1_merge(self, lst, merger)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 635, in _MarkBasePosFormat1_merge
    merger.mergeThings(anchor, allAnchors)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/merger.py", line 1041, in mergeThings
    model, lst = masterModel.getSubModel(lst)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/models.py", line 239, in getSubModel
    subModel = VariationModel(subList(key, self.origLocations), self.axisOrder)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/models.py", line 223, in __init__
    keyFunc = self.getMasterLocationsSortKeyFunc(locations, axisOrder=self.axisOrder)
  File "/usr/local/lib/python3.9/site-packages/fontTools/varLib/models.py", line 246, in getMasterLocationsSortKeyFunc
    raise VariationModelError("Base master not found.")
fontTools.varLib.errors.VariationModelError: Base master not found.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/yanone/Code/py/git/gftools/bin/gftools-builder.py", line 83, in <module>
    builder.build()
  File "/Users/yanone/Code/py/git/gftools/Lib/gftools/builder/__init__.py", line 183, in build
    self.build_variable()
  File "/Users/yanone/Code/py/git/gftools/Lib/gftools/builder/__init__.py", line 283, in build_variable
    output_files = self.run_fontmake(source, args)
  File "/Users/yanone/Code/py/git/gftools/Lib/gftools/builder/__init__.py", line 320, in run_fontmake
    FontProject().run_from_glyphs(source, **args)
  File "/usr/local/lib/python3.9/site-packages/fontmake/font_project.py", line 718, in run_from_glyphs
    self.run_from_designspace(designspace_path, **kwargs)
  File "/usr/local/lib/python3.9/site-packages/fontmake/font_project.py", line 994, in run_from_designspace
    raise FontmakeError(
fontmake.errors.FontmakeError: In 'Arima.glyphs' -> 'master_ufo/Arima.designspace': Generating fonts from Designspace failed: Base master not found.

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Comments:25 (9 by maintainers)

github_iconTop GitHub Comments

2reactions
simoncozenscommented, Jan 21, 2022

It’s ufo2ft being “clever”.

There’s a part of ufo2ft’s MarkFeatureWriter which guesses whether an anchor belongs to an abvm or a blwm feature. But it doesn’t think about variable fonts when it does this guessing. It does it on a master-by-master basis. What’s happening here is that although the anchors are source compatible, there’s an anchor which, by means of this guessing process, is ending up in the abvm feature of one master and the blwm of another.

The partial solution is to improve the guessing algorithm. The correct solution, as I will rant at length to anyone who will listen, is to give up on the whole build-multiple-fonts-and-merge-them approach and build fonts variable-first.

0reactions
yanonecommented, Jan 21, 2022

Simon merged his fix, so I’m closing this issue. Thanks everyone

Read more comments on GitHub >

github_iconTop Results From Across the Web

error compiling NotoSerifMyanmar: "Base master not found ...
This is a limitation of varLib, which expects that such a base master exists already in the sources (i.e. one whose location along...
Read more >
VF Error "unknown property" : base and extended ...
I created a custom object ContactHistory__c with two lookup relationships to Contact . I did this because it is not possible to have...
Read more >
vF Tuner Purchase, Install, Licensing, Maps, & ECU Flashing ...
Note: The various crackle tune files you see on my laptop did not come with the ... You can find my maps posted...
Read more >
PAN-OS 10.1.3 Known Issues - Palo Alto Networks
This list includes issues specific to Panorama™, GlobalProtect™, VM-Series plugins, and WildFire®, as well as known issues that apply more generally or that ......
Read more >
SRIOV VF->PF scenario is failing on Mellanox ConnectX-5
Description of problem: Mellanox PF conversion from SRIOV fails. Version-Release number of selected component (if applicable): ***Mellanox ...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found