6

I'd like to apply a text transformation similar to what the Inkscape extension 'Modify Path -> Envelope' does within LaTeX:

inkscape text effect transform vectorized text to fit to box

In-source documentation of the envelope extension:

This extension implements Bezier enveloping. It takes an arbitrary path (the "letter") and a 4-sided path (the "envelope") as input. The envelope must be 4 segments long. Unless the letter is to be rotated or flipped, the envelope should begin at the upper left corner and be drawn clockwise.

Presumably this can only be done with one of the more advanced drawing packages:

  • tikz (pgf/tikz library decorations.text, basic layer canvas transformation)
  • pstricks (possibly based on \psWarp form pst-text (v.1.01) together with a postscript font)
  • asymptote
  • MetaPost
  • So you want an example with Tikz? Where is the question? – percusse Jul 23 '14 at 19:13
  • @percusse: thanks for catching up. the question is: transforming the text having an envelope which is not just a rectangle (see the second picture). My answer works only for the simpler case. I am happy with tikz, but other tools are equally good. I don't have a preference – Hotschke Jul 23 '14 at 19:18
3

Needs work (and not a TiKZ text effect):

\documentclass[border=5pt, tikz, mult]{standalone}
\usetikzlibrary{positioning,calc}
\begin{document}

  \begin{tikzpicture}
    \coordinate (o) at (0,0);
    \def\j{o}
    \foreach \i [count=\ino] in {T,E,X,T,-,E,F,F,E,C,T}
      {
        \node (\ino) [scale=\ino*\ino, right=0pt of \j, inner sep=0pt, outer sep=0pt] {\i};
        \global\let\j\ino
      }
    \path [draw] (1.north east) -- (\j.north west) -| (\j.south east) -- (\j.south west) -- (1.south west) -- cycle;
  \end{tikzpicture}

text-effect

2

The question Stretching text vertically offers a solution for applying a rectangular envelope, so to speak:

Using \scalebox{⟨h-scale⟩}[⟨v-scale⟩]{⟨text⟩} of the package graphics ($ texdoc grfguide):

   \documentclass[varwidth]{standalone}
   \usepackage{graphics}
   \begin{document}
   HELLO\\[1ex]
   \scalebox{2}[1]{HELLO}
   \end{document}

enter image description here

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.