googlefonts / googlefonts/fontmake

Can't solved: Error: Compiling UFO failed: Illegal line segment point count: 3

Open
#1,167 7 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
888
Forks
97
Avg merge
4d 52m
Merged PRs (30d)
1

Description

Hello!

I can't figure out where this problem is coming from. I tried merging the outlines (see the merged version in the “test” folder (zip)), but the error persists. (and there is no open corners in the font)
It seems this isn’t an issue for the “upright” version. It’s probably a problem related to the outlines that I can’t seem to pinpoint, but could you provide more details so we know where to look?

# FILES

[test-example.zip](https://github.com/user-attachments/files/25972567/test-example.zip)

# ERROR

```
Last login: Fri Mar 13 14:52:58 on ttys001
source ~/Google/env/bin/activate

The default interactive shell is now zsh.
To update your account to use zsh, please run `chsh -s /bin/zsh`.
For more details, please visit https://support.apple.com/kb/HT208050.
MacBook-Pro-de-Marichal-2:test-example marichalemma$ source ~/Google/env/bin/activate
(env) MacBook-Pro-de-Marichal-2:test-example marichalemma$ gftools builder config.yaml
INFO:glyphsLib.parser:Parsing .glyphs file
INFO:glyphsLib.parser:Parsing .glyphs file
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.p found in kerning rules.
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.p found in kerning rules.
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.p found in kerning rules.
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.h found in kerning rules.
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.p found in kerning rules.
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.p found in kerning rules.
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.h found in kerning rules.
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.h found in kerning rules.
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.h found in kerning rules.
INFO:glyphsLib.parser:Parsing .glyphs file
INFO:glyphsLib.parser:Parsing .glyphs file
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.p found in kerning rules.
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.p found in kerning rules.
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.p found in kerning rules.
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.h found in kerning rules.
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.p found in kerning rules.
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.p found in kerning rules.
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.h found in kerning rules.
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.h found in kerning rules.
WARNING:glyphsLib.builder.builders.UFOBuilder:Non-existent glyph class public.kern2.h found in kerning rules.
[1/133] instantiateUfo
fontmake -i Grenze ExtraLight -o ufo -g Grenze.glyphs --ufo-structure=json --instance-dir instance_ufos
[2/133] instantiateUfo
fontmake -i Grenze Bold -o ufo -g Grenze.glyphs --ufo-structure=json --instance-dir instance_ufos
[3/133] instantiateUfo
fontmake -i Grenze ExtraBold -o ufo -g Grenze.glyphs --ufo-structure=json --instance-dir instance_ufos
[4/133] instantiateUfo
fontmake -i Grenze Medium -o ufo -g Grenze.glyphs --ufo-structure=json --instance-dir instance_ufos
[5/133] instantiateUfo
fontmake -i Grenze Light -o ufo -g Grenze.glyphs --ufo-structure=json --instance-dir instance_ufos
[6/133] instantiateUfo
fontmake -i Grenze Regular -o ufo -g Grenze.glyphs --ufo-structure=json --instance-dir instance_ufos
[7/133] instantiateUfo
fontmake -i Grenze Thin -o ufo -g Grenze.glyphs --ufo-structure=json --instance-dir instance_ufos
[8/133] instantiateUfo
fontmake -i Grenze SemiBold -o ufo -g Grenze.glyphs --ufo-structure=json --instance-dir instance_ufos
[9/133] instantiateUfo
fontmake -i Grenze Black -o ufo -g Grenze.glyphs --ufo-structure=json --instance-dir instance_ufos
[10/133] instantiateUfo
fontmake -i Grenze Thin Italic -o ufo -g Grenze-Italic.glyphs --ufo-structure=json --instance-dir instance_ufos
[11/133] buildTTF
fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmpotf9p7bs -o ttf -u instance_ufos/Grenze-Thin.ufo.json --filter ... --filter FlattenComponentsFilter
[12/133] buildTTF
fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmp8gpsfgf6 -o ttf -u instance_ufos/Grenze-ExtraLight.ufo.json --filter ... --filter FlattenComponentsFilter
[13/133] instantiateUfo
fontmake -i Grenze Italic -o ufo -g Grenze-Italic.glyphs --ufo-structure=json --instance-dir instance_ufos
[14/133] instantiateUfo
fontmake -i Grenze Medium Italic -o ufo -g Grenze-Italic.glyphs --ufo-structure=json --instance-dir instance_ufos
[15/133] instantiateUfo
fontmake -i Grenze Light Italic -o ufo -g Grenze-Italic.glyphs --ufo-structure=json --instance-dir instance_ufos
[16/133] instantiateUfo
fontmake -i Grenze ExtraLight Italic -o ufo -g Grenze-Italic.glyphs --ufo-structure=json --instance-dir instance_ufos
[17/133] instantiateUfo
fontmake -i Grenze Bold Italic -o ufo -g Grenze-Italic.glyphs --ufo-structure=json --instance-dir instance_ufos
[18/133] instantiateUfo
fontmake -i Grenze ExtraBold Italic -o ufo -g Grenze-Italic.glyphs --ufo-structure=json --instance-dir instance_ufos
[19/133] instantiateUfo
fontmake -i Grenze SemiBold Italic -o ufo -g Grenze-Italic.glyphs --ufo-structure=json --instance-dir instance_ufos
[20/133] instantiateUfo
fontmake -i Grenze Black Italic -o ufo -g Grenze-Italic.glyphs --ufo-structure=json --instance-dir instance_ufos
[21/133] buildTTF
fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmpiq_ysxra -o ttf -u instance_ufos/Grenze-Regular.ufo.json --filter ... --filter FlattenComponentsFilter
[22/133] buildTTF
fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmpyobwp_wn -o ttf -u instance_ufos/Grenze-Light.ufo.json --filter ... --filter FlattenComponentsFilter
[23/133] buildTTF
FAILED: [code=1] /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmp5ulzmwd7
/Users/marichalemma/Google/env/bin/python3.11 -m gftools.builder.jobrunner fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmp5ulzmwd7 -o ttf -u instance_ufos/Grenze-ThinItalic.ufo.json --filter ... --filter FlattenComponentsFilter

Command failed:
fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmp5ulzmwd7 -o ttf -u instance_ufos/Grenze-ThinItalic.ufo.json --filter ... --filter FlattenComponentsFilter

INFO:fontmake.font_project:Building TTF for Grenze-ThinItalic
INFO:ufo2ft:Pre-processing glyphs
INFO:ufo2ft.filters:Running EraseOpenCornersFilter on Grenze-ThinItalic
fontmake: Error: Compiling UFO failed: Illegal line segment point count: 3

[24/133] buildTTF
FAILED: [code=1] /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmpb0_qc8bu
/Users/marichalemma/Google/env/bin/python3.11 -m gftools.builder.jobrunner fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmpb0_qc8bu -o ttf -u instance_ufos/Grenze-ExtraLightItalic.ufo.json --filter ... --filter FlattenComponentsFilter

Command failed:
fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmpb0_qc8bu -o ttf -u instance_ufos/Grenze-ExtraLightItalic.ufo.json --filter ... --filter FlattenComponentsFilter

INFO:fontmake.font_project:Building TTF for Grenze-ExtraLightItalic
INFO:ufo2ft:Pre-processing glyphs
INFO:ufo2ft.filters:Running EraseOpenCornersFilter on Grenze-ExtraLightItalic
fontmake: Error: Compiling UFO failed: Illegal line segment point count: 3

[25/133] buildTTF
FAILED: [code=1] /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmp5lyvi78a
/Users/marichalemma/Google/env/bin/python3.11 -m gftools.builder.jobrunner fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmp5lyvi78a -o ttf -u instance_ufos/Grenze-LightItalic.ufo.json --filter ... --filter FlattenComponentsFilter

Command failed:
fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmp5lyvi78a -o ttf -u instance_ufos/Grenze-LightItalic.ufo.json --filter ... --filter FlattenComponentsFilter

INFO:fontmake.font_project:Building TTF for Grenze-LightItalic
INFO:ufo2ft:Pre-processing glyphs
INFO:ufo2ft.filters:Running EraseOpenCornersFilter on Grenze-LightItalic
fontmake: Error: Compiling UFO failed: Illegal line segment point count: 3

[26/133] buildTTF
fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmp6xvbwo8z -o ttf -u instance_ufos/Grenze-SemiBold.ufo.json --filter ... --filter FlattenComponentsFilter
[27/133] buildTTF
fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmp_5p70cip -o ttf -u instance_ufos/Grenze-Medium.ufo.json --filter ... --filter FlattenComponentsFilter
[28/133] buildTTF
fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmpii9hrlvb -o ttf -u instance_ufos/Grenze-ExtraBold.ufo.json --filter ... --filter FlattenComponentsFilter
[29/133] buildTTF
fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmp2hxhofmn -o ttf -u instance_ufos/Grenze-Black.ufo.json --filter ... --filter FlattenComponentsFilter
[30/133] buildTTF
fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmpg14jpfas -o ttf -u instance_ufos/Grenze-Bold.ufo.json --filter ... --filter FlattenComponentsFilter
[31/133] buildTTF
FAILED: [code=1] /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmpyly7flq_
/Users/marichalemma/Google/env/bin/python3.11 -m gftools.builder.jobrunner fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmpyly7flq_ -o ttf -u instance_ufos/Grenze-Italic.ufo.json --filter ... --filter FlattenComponentsFilter

Command failed:
fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmpyly7flq_ -o ttf -u instance_ufos/Grenze-Italic.ufo.json --filter ... --filter FlattenComponentsFilter

INFO:fontmake.font_project:Building TTF for Grenze-Italic
INFO:ufo2ft:Pre-processing glyphs
INFO:ufo2ft.filters:Running EraseOpenCornersFilter on Grenze-Italic
fontmake: Error: Compiling UFO failed: Illegal line segment point count: 3

[32/133] buildTTF
FAILED: [code=1] /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmpy9rg746j
/Users/marichalemma/Google/env/bin/python3.11 -m gftools.builder.jobrunner fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmpy9rg746j -o ttf -u instance_ufos/Grenze-MediumItalic.ufo.json --filter ... --filter FlattenComponentsFilter

Command failed:
fontmake --output-path /var/folders/rg/9txh3wk556g9mx7wpz0z2dlc0000gn/T/tmpy9rg746j -o ttf -u instance_ufos/Grenze-MediumItalic.ufo.json --filter ... --filter FlattenComponentsFilter

INFO:fontmake.font_project:Building TTF for Grenze-MediumItalic
INFO:ufo2ft:Pre-processing glyphs
INFO:ufo2ft.filters:Running EraseOpenCornersFilter on Grenze-MediumItalic
fontmake: Error: Compiling UFO failed: Illegal line segment point count: 3

ninja: build stopped: subcommand failed.
Cleaning up temporary files...
Done cleaning up temporary files
(env) MacBook-Pro-de-Marichal-2:test-example marichalemma$

```

Contributor guide

Open the contributing guide

Research direction

Start by unpacking test-example.zip and reproducing the failure with config.yaml using gftools builder. Trace the italic instance builds through EraseOpenCornersFilter and determine which outline produces the illegal three-point line segment; done means the offending input and a clear diagnostic or correction path are identified.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
build-system, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.