View Single Post
  #5   Report Post  
Posted to microsoft.public.word.docmanagement
Peter T. Daniels Peter T. Daniels is offline
external usenet poster
 
Posts: 3,215
Default Curved lines in Word?

Good grief!

And that's only for segments of a circle? I'd need Bezier curves at
the least ...

I'm sure I've seen instructions for typing on a curved path but
certainly can't say where.

Couldn't find anything in Photoshop or Illustrator either, but that's
not surprising.

I'm using arrows instead.

On Feb 1, 2:25*am, "macropod" wrote:
I'd like to draw a path -- a simple arc -- and type along it (to make
labels on a map). Is this possible in Word?


Yes, but not in a way that is in any sense feasible for most users. Doing so requires the use of Word's PRINT field, a good command
of postscript code and a postscript printer (or to PDF via Adobe Acrobat's 'print driver', for example). Presumably, the same could
be done by someone well versed in other printer languages.

Just as an example, the following PRINT field uses postscript code to print "The quick brown fox jumps over the lazy dog." around a
circle:

{PRINT \p page "
/pi 3.14159265358979 def

% The circletext routine describes how to print text in a circle
/circletext
* * * {cirtextdict begin
* * * * * */radius exch def
* * * * * */centreangle exch def
* * * * * */ptsize exch def
* * * * * */str exch def
* * * * * */xradius radius ptsize 3 div sub def
* * * * * *gsave
* * * * * * *centreangle str findhalfangle sub rotate
* * * * * * *str
* * * * * * * *{/charcode exch def
* * * * * * * * ( ) dup 0 charcode put placechar
* * * * * * * *} forall
* * * * * *grestore
* * * * *end
* * * }def

/cirtextdict 20 dict def
cirtextdict begin
* /findhalfangle
* * {stringwidth pop 2 div
* * * 2 xradius mul pi mul div 360 mul
* * }def

/placechar
*{/char exch def
* */halfangle char findhalfangle def
* *gsave
* * *halfangle rotate
* * *radius 0 translate
* * *90 rotate
* * *char stringwidth pop 2 div neg 0 moveto
* * *char show
* *grestore
* *halfangle 2 mul rotate
*}def

end

% Define the circle's size, position and text
wp$x wp$right sub wp$left add 2 div wp$y wp$top sub wp$bottom add 2 div translate
/Right 0 def * * * * * * * * * * * * * % Set the circle's horizontal position
/Up 0 def * * * * * * * * * * * * * * *% Set the circle's vertical position
/CRadius 45 def * * * * * * * * * * * *% Set the circle's radius
/TRadius CRadius 4 sub def * * * * * * % Position the text inside the circle
/Text (The quick brown fox jumps over the lazy dog.) def
/MyCircle {/saveobj save def * * * * * % save current state
* * .5 setlinewidth * * * * * *% set thickness of line
* * newpath * * * * * * * * * *% create a new path
* * Right Up CRadius 0 360 arc % define the circle's arc
* * closepath stroke * * * * * % close the path and draw it
* * /Courier findfont * * * * *% select the font
* * 9 scalefont setfont * * * *% set the font size & make it current
* * Right Up translate * * * * % set a new origin to match the circle
* * Text * * * *% the text to output
* * 180 rotate Text
* * 8 270 TRadius circletext * % use the circletext to write the text
* * saveobj restore} def * * * % restore current state
% Output the result
MyCircle"}

There are a numerous variables in the latter parts of this code that you could adjust. First off, you can change the text, in this
case "The quick brown fox jumps over the lazy dog.". You could also change the circle's position, defined by the 'Right' and 'Up'
coordinates, its radius 'Cradius' and the radius of the text 'TRadius' - in this case, 'CRadius 4 sub' puts the bottom edge of the
text 4pts inside the circle, whereas 'CRadius 5 add' would put it 5pts outside the circle. These units are all in points. Similarly,
you could change the '0 360' to alter the start and end points of the arc, which you can also leave open by deleting 'closepath'.

To work with the lower left corner of the page as the origin, delete the line:
wp$x wp$right sub wp$left add 2 div wp$y wp$top sub wp$bottom add 2 div translate
and adjust the 'Right' and 'Up' coordinates to suit.

And that's just a simple example. The postscript manuals, from which the above is adapted, have sample code for printing text along
more complex arcs.

Note: Word doesn't even give you a preview of the output.

So, as I said: "not in a way that is in any sense feasible for most users".

--
Cheers
macropod
[Microsoft MVP - Word]

"Peter T. Daniels" wrote in ...



I'd like to draw a path -- a simple arc -- and type along it (to make
labels on a map). Is this possible in Word?


When I try WordArt, and I increase the curve of the line of type, it
stretches the type rather than simply curving the line.


If it can be done in Publisher or PowerPoint, that would be fine too.-