enter image description here

Hello All,

is there an easy way to grab an image (or a shape I cut out with GIMP Free Select tool) and then just write text over it and let it fill the shape? I have tried searching for it but no tutorial really seems to resemble my idea. What is my best option?

Thank you.

  • possible duplicate of Arranging words in a shape
    – Vincent
    Apr 10, 2014 at 12:06
  • Well, yeah. That's nice, but I would prefer something with GIMP ore Inkscape and I have text not just words to arrange in random order. Apr 10, 2014 at 12:52
  • @JaromírtheGreenhorn - that image has been created manually. It's not a simple case of filling a shape with text. There's no easy way, but Inkscape would be better for this. It has an Envelope path effect that will be useful for you. See my answer to another question. Also text on a path in Inkscape is also possible, and would be useful to you.
    – Billy Kerr
    Jun 9, 2019 at 12:33

3 Answers 3


I assumed at first you wanted a complex effect like the one displayed, ready made. The complete answer to that is below.

If you want to fill in a single text shape in GIMP there are two basic ways: 1. Use the "Curve Bend" filter Filters->Distorts->Curve Bend on your text layer. 1. Use the "Cage Tool". It is there in GIMP 2.8, and can be used for some shape distortion. I don't find it working well for me, but it could suit your needs better than the Curve Bend effect.

In Inkscape there is the "Envelop Deformation" filter, detailed bellow.

As for creating several text segments in a complex way like in the example given in an automated form, there follows my original answer:

This is not possible. Not in GIMP, neither in Inkscape, neither in any other software without a good amount of coding going in to achieve specifically effects in this direction.

The other answer points to the "taxedo" program which seems to be specialized in this effect. Even then, the particular example you posted here can't be achieve in a simple way, as the text is bended and shaped in ways that match the typesetting font used to specific parts in the shape, and it is even curved along the shape curves.

This can only be achieved by handwork and the final result is a creative and artistic result! Of course, given enough coding, a highly specialized plug-in or program could be made to attempt the results such as the one displayed here. But that is two order of magnitudes more complex than the effects sampled in the answer pointed in the comments by the "taxedo" app: those ones have all text in rectangular blocks, more or less rotated, and using 1–3 different colors for a "duotone" effect. In particular, the text is never bent or shaped in any other form than rectangular, neither different fonts are used according to the destination shape.

That said, since you are on GIMP, take a look at the filters->artistic->GIMPressionist plug-in. It can do a fairly cool job of filling shapes with brushstrokes of matching size, direction and color, once you master it.

However it will fall short of this effect since it can use a single shape (which it can rotate or scale according to several settings) to fill in the original shape. But it can't vary the shape used in a single pass. You can set both "size" and "orientation" to adaptative to have the plug-in paste your brush following the base shape. Check GIMP's manual on how to proper use the GIMPressionist filter: http://docs.gimp.org/en/plug-in-gimpressionist.html

But even then, GIMPressionist is not about this effect, but about simulating several, random brush strokes on a Canvas.

The way to do it manually is to use Inkscape, and carefully place paths inside your desired places, entering the several text snippets you want and set them to follow a path pre-set inside the shape.

In short, in Inkscape, you follow these steps for each text segment:

  1. Import the target shape as a background image.
  2. Create the text pattern (in the desired font) with the Text Tool.
  3. Draw a baseline segment with the “Draw freehand Lines (F6)” tool where the text should be placed.
  4. Select the text, and the base path (shift+click) using the "Selection tool" (F1).
  5. Select Text->Put on Path on the menus.
  6. Select your text, press shift + d to select the Path instead, and set its "stroke" to None in stroke and fill properties.
  7. Adjust the text properties like font-size, and "Spacing between letters" so that the text spans all the segment you have drawn.

You may be okay with the results obtained thus far, and it is already more than what the auto-tool mentioned earlier can achieve, since the text can be bent.

But you can further apply an envelope distort to the result achieved thus far by:

  1. Select the text object, and Object->To path (from now on you can no longer edit the text characters).
  2. Open the Path Effect Editor dialog with paths->Path Effect Editor.
  3. On this dialog select the "Envelope Deformation" effect on the list, and click on Add.
  4. Manually edit the paths for each edge of your text by clicking on the respective Edit on canvas icons. That way you can have each text block to match exactly the shape you want over the base shape.

Note that while this is too much of a burden for creating text using "ctag clouds" of tens of words, like in the "taxedo" examples, your own Eiffel Tower example has only 9 segments of text, two of which are mirrored, so only seven segments would have to be created following these steps in order to create such an image. Placing and shaping then carefully is the hard designer work that can't be automated. Playing a little bit (like 2–3 hours) with the GIMP's GIMPressionist filter will have you learn the right way (hands on experience) that trying to fine tune a good automatic creation of this effect can be harder than simply creating the effect manually, even if you have a tool to automate that.

  • Wow, that's pretty exhaustive, I will give it a try. Thanks a lot! Apr 11, 2014 at 16:03
  • I didn't know about the "flow into frame" suggested in the other answer - it does not shape short 1-two word sentences, but can shape a larger amount of text by fitting the line breaks to the shape. It can also be useful in a larger work.
    – jsbueno
    Apr 12, 2014 at 23:27

I recommend using Inkscape.

  1. Create the desired path, or do "Trace Bitmap".
  2. Create a text object.
  3. Select both object and go to Text→Flow into frame.
  4. Adjust font etc.

See also this and this.

  • Thank you, I think I cannot upvote your answer, because I am a newbie. Apr 11, 2014 at 16:06
  • Yes, upvoting is reserved for users with 15 point and up. You'll get there soon :)
    – Sparkler
    Apr 11, 2014 at 16:08

For simple cases maybe ofn-bend-path than will fit a path (text layer, and text-to-path) in an envelope defined by another path.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.