Dekink Masters Script broken? [solved]

Is the Dekink Masters script broken? When I run it, it doesn’t move any points, though I’ve followed (I hope) the instructions: select a point, and the corresponding point is supposed to be moved in the other masters. (I’m running 1192 on MacOS 10.13.6.)

(Moved your post to a new thread. It was off-topic where you posted.--mekkablue)

Just tested it with the latest version of the script and app, and it works fine. Make sure you have the current set of scripts, and update to the latest version of the app, and try again.

Hm. I’ve updated Glyphs to 1197 and reinstalled your scripts, but the dekink script is still having no effect in the various glyphs where I’ve tested. Could there be dependency problems or conflicts with other scripts/plugins? I’m getting no error messages–but when I look at the points in other masters corresponding to the one I selected, they haven’t moved.

No, no dependencies.

  • Any error messages in the Macro window?
  • Masters compatible?
  • Are there interpolations at all?
  • Green points selected when you run it?

Oh, I do have an error message:

Traceback (most recent call last):
  File "Dekink", line 43, in <module>
    for subrunArray in currentGlyph.layerGroups_masters_error_( NSArray(Font.instances), Font.masters, None ):
ValueError: NSInvalidArgumentException - Class OC_PythonObject: no such selector: countByEnumeratingWithState:objects:count:

There are five masters, all compatible. I select one green point in one master, so:


I’m not sure what you mean by “Are there interpolations at all.” It’s got many instances for which interpolated shapes are generated.

It will only dekink the points in other master, if they are in an interpolation chain with the current master:


Say, a–f are the instances, and M1–M5 the masters. If you select a point in M2 and run the script, it will dekink the compatible point in M1, M2, and M3, because these are interpolating with each other, because there are instances between all of them. It will not do anything in M4 and M5, because these are not interpolating with the chain of masters M1–M3, because there are no interpolated instances between M3 and M4.

I think I just found the bug that caused the script to fail. New version up in a minute.

Update: New version of the script is up, please sync. Thx for reporting.

Okay, I get it. Not all my axes are reflected in instances. Thanks very much for the fix. I’ll grab it, put in the necessary instances, and try again!

I updated the scripts and restarted Glyphs but am getting the same error message. (In desperation I also restarted the computer.)

I have three axes: Weight (300-800), Optical Size (1-100), Grade (1-500), and I’ve made sure I have instances covering all the extremes. But I’m still doing something wrong, and I can’t figure out what.

(On the other hand, I’ve found I can fix the specific kink I’m battling with a virtual master.)

Impossible if you are running the current script; at least the last line of it must be different. Can you paste the error message here?

Wild guess, but I suspect that you also need to change Font.masters to currentFont.masters on line 44 of the script.

Good point. Corrected.

Just now updated from the repository. I’ve checked to make sure there’s only one copy installed. But I see this is not the same error message as before: it reflects the changes you’ve made. Could this error happen if I don’t have the right arrangement of instances?

Traceback (most recent call last):
  File "Dekink", line 44, in <module>
    for subrunArray in currentGlyph.layerGroups_masters_error_( NSArray(currentFont.instances), currentFont.masters, None ):
ValueError: NSInvalidArgumentException - Class OC_PythonObject: no such selector: count

Either both arguments or none need to be wrapped in an NSArray().

I never get this error. The script does for me what it is supposed to do, without a hitch.

Update: uploaded another version, please try again.

It works! And I am thrilled to have this incredibly useful script.

Thank you, Rainer and Georg, for this fix.

1 Like