I’ve been wanting to address this issue here for a while now and this morning I got an email from one of my long time readers asking about it. So I decided to write a quick post to illustrate the issue and offer a solution.
The problem: how Fireworks renders certain 1 pixel strokes as a blurred 2 pixels stroke depending on what tool is used to create the shape or path the stroke is applied to or if the shape or path is cut after it has been created. Rotating an object even by 90 degrees can also affect the rendering of the object’s stroke or its fill’s edge if the object has no stroke. Look at the following image I created a while ago that illustrates the issue.
The grid in the background of that image is a 1px X 1px grid. It looks very large there because I took that screenshot from within Fireworks at 3200% zoom level. What this illustrates is that the actual nodes or anchors on paths can be positioned either exactly at grid lines intersection points or exactly in the middle of a “pixel block”. In reality, Fireworks is not limited to those two positions as it can position objects in much finer increments than half pixels on the canvas. The two positions above are the automatic defaults when creating or editing objects with Fireworks’ native tools.
The result of the above is that, when a path’s anchors or nodes are positionned in the middle of a pixel, then a 1px soft stroke will render normally as a 1 pixel stroke. If you want to see how this works, open Fireworks now and follow these steps:
- Select the regular rectangle tool.
- Set the stroke to black and use the Pencil-Pixel Soft troke type and a size of 1.
- Draw a rectangle on the canvas. The stroke should look likea 1 pixel stroke that is sharp, clean and uniform.
- Switch to the Rounded Rectangle tool and draw another rectangle using the same stroke settings. The stroke will now look like a grey 2 pixels stroke instead of the sharp 1 pixel stroke of the first rectangle.
- Switch back to the black arrow tool and select your first rectangle.
- Swicth to the kife tool and cut its path anywhere. The stroke rendering will instantly change to look like a 2 pixel grey stroke (or a blurry 1px black stroke depending how you look at it…). In any case, it doesn’t look like what you set. Notice that the stroke setting is still at 1px Pencil-Pixel Soft so the look of the stroke shouldn’t have changed.
According to Adobe, this is normal behavior yet, to me, this is a serious bug. They created a technote you can find here addressing the issue in more detail than I do here but I really believe that Fireworks should be smart enough to do what it needs to do to comply with the stroke settings applied by the user, even when a path is being edited. But as you can see, it doesn’t always do so.
There is a solution though but you need to use a third party extension to fix this. Go to this page then download and install Senocular’s Transform Panel extension. With it, you’ll be able to do what you still cannot do with Fireworks’ native tools: size and position objects by sub-pixel increments. Using the Transform Panel.s X and & flields, select the object with the stroke rendering issue and “move” it by a half pixel in one or bothdirection depending on the object (you can enter decimals in those fields which is something you still cannot do in Fireworks’ own Property Inspector).
Using the Transform Panel, you can now take control of how Fireworks anti-aliases strokes, fills and even text. Once you start using it you’ll never go back to the PI, especially if you start using the included 9 Points Proxy below the x and y fields to size and position objects from reference points other than the default (and only) top and left. I’ll write another post specifically about the Transform Panel soon because it has become one of the tools aI used most in Fireworks, supplementing and replacing a native toolset that should have gained similar functionality years ago (IMO). It’s a truly fantastic extension that will save you countless time and headaches…