I think it might not be possible to use text in actual patterns, but I would be happy to be proven wrong.
Here are two ways to accomplish what you want without using patterns.
- The first one uses a node to print the text and then
\clip
s it.
For more information on clipping, see section 2.11 (p36) of the pgf manual (for version 3.1.1).
- The second one uses the
path picture
key to fill the area bounded by a path with this text.
This is explained in section 15.6 of the pgf manual (for version 3.1.1).
What \TeXture[<text>]{<width>}{<height>}
does is fill an area slightly less wide than <width>
and slightly less high than <height>
with copies of <text>
. (Less because <text
> that would need to be cut off simply isn't shown.)
Both the name and the contents of this command were taken from an exercise in the TeXbook.
The \leaders
primitive, on which \TeXture
relies, is e.g. explained in section 9.2 (p99) of TeX by topic.
\documentclass[tikz]{standalone}
\newcommand*\TeXture[3][\TeX]{\leavevmode\hbox to #2{\leaders\vbox to #3{\leaders\hbox{#1}\vfil}\hfil}}
\begin{document}
\begin{tikzpicture}
\begin{scope}
\clip (0,0) circle[radius=2];
\node at (0,0) {\TeXture{5cm}{5cm}};
\end{scope}
\end{tikzpicture}
\begin{tikzpicture}
\path[path picture={\node at (path picture bounding box.center) {\TeXture{5cm}{5cm}};}]
(0,0) circle[radius=2];
\end{tikzpicture}
\end{document}
This produces two pages that are (as far as I can tell) identical:

Remark: if you want correct line spacing you can use \TeXture[bla\strut]{5cm}{5cm}
.
Addendum
Here's a version with a more TikZ-friendly syntax that allows for some customisation!
The preamble is a little complicated, but it's easy to use.
I've defined four keys:
TeXture=<text>
turns TeXturing on and sets the text that is to be used (default: \TeX
);
TeXture x sep=<length>
and TeXture y sep=<length>
determine the horizontal and vertical separation repsectively (default: 0pt and 0pt);
TeXture sep=<length>
sets both TeXture x sep
and TeXture y sep
.
An earlier version also required you to specify the size of the area that needs to be filled, but this is no longer necessary. The new version extracs this information and repeats the text an appropriate number of times
\documentclass[tikz,margin=1mm]{standalone}
\newcommand*\tikzTeXture[1]{% %% <- Does the actual filling
\begingroup
\setbox0=\vbox spread \pgfkeysvalueof{/tikz/TeXture y sep}{\vfil%
\hbox spread \pgfkeysvalueof{/tikz/TeXture x sep}{\hfil#1\hfil}\vfil}%
\def\fillareasize{\pgfpointdiff %% <- size of area to be filled
{\pgfpointanchor{path picture bounding box}{south west}}%
{\pgfpointanchor{path picture bounding box}{north east}}}%
\pgfextractx{\dimen0}{\fillareasize}% %% <- width of area to be filled
\pgfextracty{\dimen2}{\fillareasize}% %% <- height of area to be filled
\leavevmode\hbox to \dimexpr\dimen0+\wd0{%
\cleaders\vbox to \dimexpr\dimen2+\ht0+\dp0{
\cleaders\box0\vfil
}\hfil
}%
\endgroup
}
\tikzset{TeXture/.style={path picture={
\node[anchor=center,text width=,text height=]
at (path picture bounding box.center) {\tikzTeXture{#1}};}
}}
\tikzset{TeXture/.default=\TeX}
\tikzset{TeXture x sep/.initial=0pt}
\tikzset{TeXture y sep/.initial=0pt}
\tikzset{TeXture sep/.style={/tikz/TeXture x sep=#1,/tikz/TeXture y sep=#1}}
\begin{document}
\begin{tikzpicture}
\draw[domain=0:360,samples=128,fill=red!80!black,line join=round,
TeXture=\LaTeX,TeXture sep=2pt]
plot ({2*sin(\x)^3},{(13*cos(\x)-5*cos(2*\x)-2*cos(3*\x)-cos(4*\x))/8}) -- cycle;
\end{tikzpicture}
\end{document}

This version should be compatible with the positioning
library btw.