30

I'm trying to create a block of text with formatting and I want to surround it with a border. I've tried the "Flow into frame" feature, but that removes formatting (I would like line breaks, spaces, bold, etc...).

Right now, I'm manually drawing a rectangle around it and aligning it (using the align and distribute functions). Is there a way to automate this and produce consistent results? My current technique does not guarantee even spacing from the border to text of multiple boxes like these.

5
  • 1
    Here is an extension (not tried) which creates a rectangle for the bounding box of each selected object. Dec 5, 2013 at 15:15
  • 1
    "Topic not found" - wrong link?
    – zje
    Dec 5, 2013 at 17:53
  • 1
    It's curious, there isn't a permalink to the topic: now the link is this. Try using a google search for inkscape frame around text site:www.ruby-forum.com it should be the first result. Dec 6, 2013 at 17:19
  • @PaoloGibellini I still can't find this extension! May 15, 2019 at 0:21
  • @HermanToothrot It seems that the page doesn't exist anymore. But the answer of Sean Colsen shows a simple and effective way to accomplish this task. May 15, 2019 at 6:42

1 Answer 1

46

Yes! Here is the end result:

end result

Step by step:

  1. Create some flowed text by using the text tool to first drag a rectangle and then type.

step1

  1. Separately, create a rectangle roughly around the text (really, the rectangle can be anywhere)

step2

  1. With the rectangle selected, chose "Path" > "Linked Offset". Then grab the small diamond and drag it in to make a second, smaller rectangle.

step3

  1. Select the text and the smaller rectangle and choose "Text" > "Flow into frame". Then select the smaller rectangle and remove the stroke to make it invisible. Now the text will flow within the smaller (invisible) rectangle, which is dynamically linked to the shape of the larger (visible) rectangle.

step6

  1. Then, if you like, you can add a small border radius on the visible rectangle and you get this nice looking result.

end result

  1. If you do need to modify the space between the text and the rectangle, you can carefully select it by grabbing it with the text and the subtracting the text from the selection, or you can drill down to it within the XML Editor. When you do get it selected, then you can adjust the margin as follows:

adjustments

  1. Finally, group the text and the two rectangles, and you're all set!
12
  • 6
    That's a great trick. I still can't believe that something that simple requires so many steps.
    – Sergio
    Nov 14, 2016 at 19:56
  • 1
    Great! However, when I make the inner rectangle invisible (by clicking the hidden button on the properties or setting its color to #00000000) then I can't grab it anymore or even see its outlines. Is there a solution for this problem ?
    – DevonDahon
    Feb 16, 2017 at 8:58
  • 1
    I found a solution : Object > Unhide All.
    – DevonDahon
    Feb 16, 2017 at 9:04
  • But grouping the objects isn't stable (at least with 0.91 on osx).
    – DevonDahon
    Feb 16, 2017 at 10:19
  • Step 6 is easier at least in 0.92. Just select the text and notice the status bar tells you to hit Shift-D if you want to "look up frame". That gets the invisible frame selected, then hit F2 for the node select tool, and you should see the resizing diamond.
    – Ron Burk
    Jul 29, 2017 at 14:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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