Dash offset defined by a negative strokeDashOffset value is not respected when a stroke is outlined
Illustrator has a strokeDashOffset property that sets the indentation of the first stroke in the dashed line.
It works when specified through the script, but there is no similar field in the interface of dashed line settings, i.e. it looks like a hidden functionality. It’s still legal and it works, but at the same time, a dashed line created with this parameter cannot be outlined correctly using standard Illustrator tools when the value is negative.
It's a cursed property: it's a pity to ignore it, and it's a shame to use it because of its unreliability.
Please fix the bug and make the Expand Stroke to respect the setting.
Also, in the GIF attached I am using the plugin, but we just need a native way to set this up via UI in Ai. Here is a request — https://illustrator.uservoice.com/forums/333657-illustrator-desktop-feature-requests/suggestions/44269380-a-dashed-line-tool
-
Sergey Osokin commented
More about this bug in the article:
https://aiscripts.medium.com/negative-strokedashoffset-0c221360efa7(Edited by admin) -
RJ Graffix commented
I've fixed my Nudge plugin so that it gets around the problem by converting all negative offsets to a positive offset that gives the same result. I'm sure scripts can use the same workaround.
-
Sergey commented
It turned out that the bug of not saving strokeDashOffset value also affects only negative values of this parameter.
-
RJ Graffix commented
Well, that's a surprise! I've been using Nudge for dash offset since the mid 1990s, and can swear AI used to save the dash offset property. I can confirm that since at least CC 2019 it does NOT save it, or does not read it when re-drawing the stroke.
I agree, even if Adobe doesn't provide a UI for users to access dash offset without a plugin or script, AI needs to save it, read it, and expand it properly.
-
Sergey commented
It seems that the strokeDashOffset parameter is not even saved in the ai source file, because when you reopen it, strokeDashOffset value is again zero.
So it's not just a fragile property. It is a ghost property: you can look at it, but not use it, because it disappears when you try to capture it.