I assumed at first you wanted a complex effect like the one displayed, ready made. The complete answer to that is bellow.
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
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 -
nor 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 - and even them, 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.
Whoever 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 them, 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:
- Import the target shape as a background image
- create the text pattern (in the desired font) with the Text Tool
- draw a baseline segment with the "Draw freehand Lines (F6) tool where the text should be placed
- Select the text, and the base path (shift+click) using the "Selection tool" (F1)
Text->Put on Path on the menus
- Select your text, press
shift + d to select the Path instead, and set its "stroke" to None in stroke and fill properties
- 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 ok 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
- Select the text object, and
Object->To path (from now on you can no longer edit the text characters)
- Open the Path Effect Editor dialog with
paths->Path Effect Editor
- On this dialog select the "Envelope Deformation" effect on the list, and click on
- 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.