maple-font icon indicating copy to clipboard operation
maple-font copied to clipboard

Add Google Fonts support

Open subframe7536 opened this issue 8 months ago • 4 comments

Fix #272

subframe7536 avatar Mar 22 '25 01:03 subframe7536

Now the glyphs font can be successfully generated by

fontmake -g .\source\MapleMono[wght].glyphs --keep-overlap -o variable

Part of log:

INFO:ufo2ft:Building variable TTF fonts: MapleMono-VF
INFO:fontTools.varLib:Axes:
[{'axisLabels': [],
  'axisOrdering': None,
  'default': 400,
  'hidden': False,
  'labelNames': {'en': 'Weight'},
  'map': [(100, 100),
          (200, 210),
          (300, 320),
          (400, 400),
          (500, 490),
          (600, 570),
          (700, 680),
          (800, 800)],
  'maximum': 800,
  'minimum': 100,
  'name': 'Weight',
  'tag': 'wght'}]
INFO:fontTools.varLib:Internal master locations:
[{'Weight': 100}, {'Weight': 400}, {'Weight': 800}]
INFO:fontTools.varLib:Internal axis supports:
{'Weight': [100, 400, 800]}
INFO:fontTools.varLib:Normalized master locations:
[{'Weight': -1.0}, {'Weight': 0.0}, {'Weight': 1.0}]
INFO:fontTools.varLib:Index of base master: 1
INFO:fontTools.varLib:Building variable font
INFO:fontTools.varLib:Loading master fonts
INFO:fontTools.varLib:Generating fvar
INFO:fontTools.varLib:Building variations tables
INFO:fontTools.varLib:Generating avar
INFO:fontTools.varLib:Generating MVAR
INFO:fontTools.varLib:Generating HVAR
INFO:fontTools.varLib:Merging OpenType Layout tables
INFO:fontTools.varLib:Generating gvar
INFO:fontTools.varLib:Merging TT hinting
INFO:ufo2ft.postProcessor:Renaming glyphs to final production names
INFO:fontmake.font_project:Saving variable_ttf\MapleMono-VF.ttf

subframe7536 avatar Mar 22 '25 01:03 subframe7536

But run with gftools builder .\source\config.yaml fails, part of logs:

E:\_env\python_3.11.7\python.exe -m gftools.builder.jobrunner cmd /c fontmake --output-path C:\Users\0x723b\AppData\Local\Temp\tmpbpnfimam -o ttf -u instance_ufos\MapleMono-Regular.ufo.json --filter ...  --filter FlattenComponentsFilter --filter DecomposeTransformedComponentsFilter

Command failed:
cmd /c fontmake --output-path C:\Users\subf\AppData\Local\Temp\tmpbpnfimam -o ttf -u instance_ufos\MapleMono-Regular.ufo.json --filter ... --filter FlattenComponentsFilter --filter DecomposeTransformedComponentsFilter

fontmake: Error: In 'instance_ufos\\MapleMono-Regular.ufo.json': Reading UFO source failed: While structuring Font (1 sub-exception)

subframe7536 avatar Mar 22 '25 01:03 subframe7536

Current state: fail to save .glyphs file using glyphsLib

  File "D:\font\maple-font\test.py", line 24, in update_glyph_names
    font.save(output_file_path)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\classes.py", line 4544, in save
    w.write(self)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 52, in write
    self.writeDict(rootObject)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 58, in writeDict
    dictValue._serialize_to_plist(self)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\classes.py", line 4411, in _serialize_to_plist
    writer.writeObjectKeyValue(self, "glyphs")
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 120, in writeObjectKeyValue
    self.writeValue(value, key)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 144, in writeValue
    self.writeArray(value)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 86, in writeArray
    self.writeValue(value)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 146, in writeValue
    self.writeDict(value)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 58, in writeDict
    dictValue._serialize_to_plist(self)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\classes.py", line 4117, in _serialize_to_plist
    writer.writeObjectKeyValue(self, "layers", "if_true")
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 120, in writeObjectKeyValue
    self.writeValue(value, key)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 144, in writeValue
    self.writeArray(value)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 86, in writeArray
    self.writeValue(value)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 146, in writeValue
    self.writeDict(value)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 58, in writeDict
    dictValue._serialize_to_plist(self)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\classes.py", line 3641, in _serialize_to_plist
    writer.writeKeyValue("shapes", self._shapes)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 106, in writeKeyValue
    self.writeValue(value, key)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 144, in writeValue
    self.writeArray(value)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 86, in writeArray
    self.writeValue(value)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 146, in writeValue
    self.writeDict(value)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 58, in writeDict
    dictValue._serialize_to_plist(self)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\classes.py", line 2570, in _serialize_to_plist
    writer.writeObjectKeyValue(self, "rotation", keyName="angle", default=0)
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\writer.py", line 110, in writeObjectKeyValue
    value = getattr(d, key)
            ^^^^^^^^^^^^^^^
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\classes.py", line 2661, in rotation
    self._sX, self._sY, self._R = transformStructToScaleAndRotation(
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "E:\_env\python_3.11.7\Lib\site-packages\glyphsLib\classes.py", line 288, in transformStructToScaleAndRotation
    _R = _R * _sX / _sY
         ~~~~~~~~~^~~~~
ZeroDivisionError: float division by zero

subframe7536 avatar Mar 30 '25 01:03 subframe7536

But run with gftools builder .\source\config.yaml fails, part of logs:

E:\_env\python_3.11.7\python.exe -m gftools.builder.jobrunner cmd /c fontmake --output-path C:\Users\0x723b\AppData\Local\Temp\tmpbpnfimam -o ttf -u instance_ufos\MapleMono-Regular.ufo.json --filter ...  --filter FlattenComponentsFilter --filter DecomposeTransformedComponentsFilter

Command failed:
cmd /c fontmake --output-path C:\Users\subf\AppData\Local\Temp\tmpbpnfimam -o ttf -u instance_ufos\MapleMono-Regular.ufo.json --filter ... --filter FlattenComponentsFilter --filter DecomposeTransformedComponentsFilter

fontmake: Error: In 'instance_ufos\\MapleMono-Regular.ufo.json': Reading UFO source failed: While structuring Font (1 sub-exception)

Still same error...

subframe7536 avatar Mar 30 '25 01:03 subframe7536

I plan to resolve these errors in another PR

subframe7536 avatar Apr 03 '25 09:04 subframe7536