- Command:
- Warp Text
- Menu:
- "<Image>/Filters/Distorts/Warp Text..."
- PDB Name:
- script-fu-sg-warp-text
- Download:
- sg-warptext.scm (after the page appears, click on the "Download" command)
- License:
- GPLv2+
Description:
-
This script was inspired by an Inkscape extension written by Gerrit Karius.
This script will warp text to fit inside a four-point bezigon (also known as a beziergon). The bezigon is created with the Path Tool by first placing an anchor where the upper-left corner of the text should go, followed by three more anchors running clockwise around the perimeter.
Once your shape path is created, you can run the script on any text layer and eventually, after a good deal of huffing and puffing by the script, a new path will be created which is the outline of the text warped to fit within the path. Basically, you are left just as you would be after doing a "Text along Path" in the Text tool Options dialog -- you are left to your own devices as to stroking the path, selecting from it and filling, etc.
One caveat is that the path coming out of an anchor should proceed "towards" the adjacent anchor. In other words, the angle of a line from the anchor to its control handle and a line between the anchor and the next anchor must not exceed 90 degrees. The script will still function if this advice isn't heeded, but the results may be unpleasant.
The script's dialog offers the option to warp any path, not just text. And also permits specifying a Padding value and a Quality setting. The "Quality" setting can range from "1" (where letters are barely recognizable) to "250"; I don't notice much improvement above "100" and I set the default to "60" as a speed versus quality compromise (higher quality settings may be necessary for larger images).
The results achieved are not perfect, and the script is rather slow; but it can be useful for certain applications. Some discussion about the script and examples of it in use can be found at GIMPchat forums (special thanks to the members of that forum who helped me debug the script).