dy / wavefont

Typeface for rendering waveform/data
https://dy.github.io/wavefont/scripts/
SIL Open Font License 1.1
416 stars 7 forks source link

Interpolation problems in `Wavefont[ROND,YELA,wght].ttf` #62

Closed behdad closed 11 months ago

behdad commented 11 months ago

Hello!

This is an automatically-generated report about possible interpolation problems in Wavefont[ROND,YELA,wght].ttf, as found in the Google Fonts catalog.

The particular version of the font that was tested was archive:.

To download a PDF version of this report with helpful visuals of the problems, click here; Or to view it on the GitHub website, click here.

The report follows:

Glyph _1 was not compatible:
  Masters: '', 'ROND=0.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'ROND=0.0'
  Masters: '', 'wght=4.0':
    Contour order differs: [0, 1, 2] in '', [2, 0, 1] in 'wght=4.0'
  Masters: 'YELA=100.0', 'YELA=100.0 wght=4.0':
    Contour order differs: [0, 1, 2] in 'YELA=100.0', [2, 0, 1] in 'YELA=100.0 wght=4.0'
Glyph _1.clip was not compatible:
  Masters: '', 'wght=4.0':
    Contour 0 start point differs: 0 in '', 19 in 'wght=4.0'; reversed: True
Glyph _10 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _10.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
  Masters: '', 'wght=1000.0':
    Contour 0 start point differs: 0 in '', 19 in 'wght=1000.0'; reversed: True
Glyph _11 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _11.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
  Masters: '', 'wght=1000.0':
    Contour 0 start point differs: 0 in '', 19 in 'wght=1000.0'; reversed: True
Glyph _12 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _12.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
  Masters: '', 'wght=1000.0':
    Contour 0 start point differs: 0 in '', 19 in 'wght=1000.0'; reversed: True
Glyph _13 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _13.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
  Masters: '', 'wght=1000.0':
    Contour 0 start point differs: 0 in '', 19 in 'wght=1000.0'; reversed: True
Glyph _14 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _14.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
  Masters: '', 'wght=1000.0':
    Contour 0 start point differs: 0 in '', 19 in 'wght=1000.0'; reversed: True
Glyph _15 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _15.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
  Masters: '', 'wght=1000.0':
    Contour 0 start point differs: 0 in '', 19 in 'wght=1000.0'; reversed: True
Glyph _16 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _16.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
  Masters: '', 'wght=1000.0':
    Contour 0 start point differs: 0 in '', 19 in 'wght=1000.0'; reversed: True
Glyph _17 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _17.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
  Masters: '', 'wght=1000.0':
    Contour 0 start point differs: 0 in '', 19 in 'wght=1000.0'; reversed: True
Glyph _18 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _18.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
Glyph _19 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _19.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
Glyph _2 was not compatible:
  Masters: '', 'ROND=0.0':
    Contour order differs: [0, 1, 2] in '', [2, 0, 1] in 'ROND=0.0'
  Masters: '', 'wght=4.0':
    Contour order differs: [0, 1, 2] in '', [2, 0, 1] in 'wght=4.0'
Glyph _20 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _20.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
Glyph _21 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _21.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
Glyph _22 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _22.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 27 in 'ROND=0.0'; reversed: True
Glyph _23 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _23.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 27 in 'ROND=0.0'; reversed: True
Glyph _24 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _24.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 27 in 'ROND=0.0'; reversed: True
Glyph _25 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 0, 2] in 'wght=1000.0'
Glyph _26 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [2, 1, 0] in 'wght=1000.0'
Glyph _27 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [2, 1, 0] in 'wght=1000.0'
Glyph _28 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [2, 1, 0] in 'wght=1000.0'
Glyph _29 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [2, 1, 0] in 'wght=1000.0'
Glyph _3 was not compatible:
  Masters: '', 'ROND=0.0':
    Contour order differs: [0, 1, 2] in '', [2, 1, 0] in 'ROND=0.0'
  Masters: '', 'wght=4.0':
    Contour order differs: [0, 1, 2] in '', [2, 1, 0] in 'wght=4.0'
  Masters: '', 'wght=1000.0':
    Contour 0 start point differs: 0 in '', 3 in 'wght=1000.0'; reversed: True
Glyph _3.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
Glyph _30 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [2, 1, 0] in 'wght=1000.0'
Glyph _31 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [2, 1, 0] in 'wght=1000.0'
Glyph _32 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [2, 1, 0] in 'wght=1000.0'
Glyph _33 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [2, 1, 0] in 'wght=1000.0'
Glyph _34 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [2, 1, 0] in 'wght=1000.0'
Glyph _35 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [2, 1, 0] in 'wght=1000.0'
Glyph _36 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [2, 1, 0] in 'wght=1000.0'
Glyph _4 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour 0 start point differs: 0 in '', 3 in 'wght=1000.0'; reversed: True
Glyph _4.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
  Masters: '', 'wght=1000.0':
    Contour 0 start point differs: 0 in '', 19 in 'wght=1000.0'; reversed: True
Glyph _5 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour 0 start point differs: 0 in '', 3 in 'wght=1000.0'; reversed: True
Glyph _5.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
  Masters: '', 'wght=1000.0':
    Contour 0 start point differs: 0 in '', 19 in 'wght=1000.0'; reversed: True
Glyph _6 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _6.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
  Masters: '', 'wght=1000.0':
    Contour 0 start point differs: 0 in '', 19 in 'wght=1000.0'; reversed: True
Glyph _7 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _7.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
  Masters: '', 'wght=1000.0':
    Contour 0 start point differs: 0 in '', 19 in 'wght=1000.0'; reversed: True
Glyph _8 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _8.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
  Masters: '', 'wght=1000.0':
    Contour 0 start point differs: 0 in '', 19 in 'wght=1000.0'; reversed: True
Glyph _9 was not compatible:
  Masters: '', 'wght=1000.0':
    Contour order differs: [0, 1, 2] in '', [1, 2, 0] in 'wght=1000.0'
Glyph _9.clip was not compatible:
  Masters: '', 'ROND=0.0':
    Contour 0 start point differs: 0 in '', 19 in 'ROND=0.0'; reversed: True
  Masters: '', 'wght=1000.0':
    Contour 0 start point differs: 0 in '', 19 in 'wght=1000.0'; reversed: True

This report was generated using the fonttools varLib.interpolatable tool. We understand that sometimes the tool generates false-positives. Particularly for more complicated font designs. If you did not find this report useful, please apologize and ignore & close it.

To give feedback about this report, please file an issue or open a discussion at fonttools.

dy commented 11 months ago

Yes I saw that report but honestly wasn't able to figure out what's that caused by - the UFO files have symmetrical contours without any optimizations, there's no ground for such errors. These seem to be caused by gftools or merely lint issue, but I have no intention to get into these details. Please report if you notice visual artifacts. Thanks!

behdad commented 11 months ago

Thanks. Wavefont is definitely one of the trickiest fonts my tool is grappling with. I'll see if I can make sense of the report and report back.

behdad commented 11 months ago

Just my understanding. If I render glyph _1 I see a broken rendering, like: image which can be "fixed" by reversing the middle contour.

But I also see that you are replacing that with _1.clip in the rvrn feature.

dy commented 11 months ago

Yes, I add "replace" rule for such characters, so that they are rendered as clipping characters instead. You think that can be the reason for report? I am afraid if I change contour of such characters it will break interpolation.

behdad commented 11 months ago

Thanks. I'll try to study this font more and improve the tool.