googlefonts / googlefonts/glyphsLib

Can't handle empty glyph name

Open
#638 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
201
Forks
56
Avg merge
17m
Merged PRs (30d)
1

Description

I.e. a `glyphname = "";` in the .glyphs file.

```
Traceback (most recent call last):
File "c:\program files\python38\lib\runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "c:\program files\python38\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "C:\Program Files\Python38\Scripts\glyphs2ufo.exe\__main__.py", line 7, in
File "c:\program files\python38\lib\site-packages\glyphsLib\cli.py", line 228, in _glyphs2ufo_entry_point
return main(args)
File "c:\program files\python38\lib\site-packages\glyphsLib\cli.py", line 189, in main
return options.func(options)
File "c:\program files\python38\lib\site-packages\glyphsLib\cli.py", line 208, in glyphs2ufo
glyphsLib.build_masters(
File "c:\program files\python38\lib\site-packages\glyphsLib\__init__.py", line 139, in build_masters
source.font.save(ufo_path)
File "c:\program files\python38\lib\site-packages\ufoLib2\objects\font.py", line 546, in save
self.write(writer, saveAs=saveAs)
File "c:\program files\python38\lib\site-packages\ufoLib2\objects\font.py", line 481, in write
self.layers.write(writer, saveAs=saveAs)
File "c:\program files\python38\lib\site-packages\ufoLib2\objects\layerSet.py", line 311, in write
layer.write(glyphSet, saveAs=saveAs)
File "c:\program files\python38\lib\site-packages\ufoLib2\objects\layer.py", line 328, in write
glyphSet.writeGlyph(
File "c:\program files\python38\lib\site-packages\fontTools\ufoLib\glifLib.py", line 455, in writeGlyph
fileName = self.glyphNameToFileName(glyphName, self._existingFileNames.values())
File "c:\program files\python38\lib\site-packages\fontTools\ufoLib\glifLib.py", line 573, in glyphNameToFileName
return userNameToFileName(glyphName, existing=existingFileNames, suffix=".glif")
File "c:\program files\python38\lib\site-packages\fontTools\ufoLib\filenames.py", line 76, in userNameToFileName
if not prefix and userName[0] == ".":
IndexError: string index out of range
```

Contributor guide

Open the contributing guide

Research direction

Reproduce the failure with a .glyphs file containing glyphname = "" and trace the conversion from glyphsLib/cli.py through glyphsLib/__init__.py to the UFO save operation shown in the traceback. Done means the conversion handles the empty glyph name without the reported IndexError.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
tooling
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.