In order to simplify things, I removed all TikZ decoration, but you can then reinstate it. Also I renamed a few macros, and removed \parshape from some for convenience of reuse.
Beware also that now \TextA and \TextB are merged in to \Text (which was objective), but paragraphs within are emulated with \newline, to not cancel current parshape.
The whole code aims at producing a single parshape: topcircle, intermediate zone, bottom circle.
\documentclass{article}
\newcommand*{\TitleParshapeLines}{%
% \parshape 2
0.40\hsize 0.20\hsize
0.26\hsize 0.48\hsize
}%
\newcommand*{\TopSemiCircleParshapeLines}{%
% \parshape 9
0.20\hsize 0.60\hsize
0.14\hsize 0.72\hsize
0.10\hsize 0.80\hsize
0.07\hsize 0.86\hsize
0.05\hsize 0.90\hsize
0.03\hsize 0.94\hsize
0.025\hsize 0.95\hsize
0.01\hsize 0.99\hsize
0.00\hsize 1.00\hsize
}
\newcommand*{\BotSemiCircleParshapeLines}{%
% \parshape 11
0.00\hsize 1.00\hsize
0.01\hsize 0.99\hsize
0.025\hsize 0.95\hsize
0.03\hsize 0.94\hsize
0.05\hsize 0.90\hsize
0.07\hsize 0.86\hsize
0.10\hsize 0.80\hsize
0.14\hsize 0.72\hsize
0.20\hsize 0.60\hsize
0.26\hsize 0.48\hsize
0.40\hsize 0.20\hsize
}
\newcommand{\Text}{%
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sem
ante, efficitur eget diam quis, lacinia sollicitudin elit. Donec
tempor sodales finibus. Fusce accumsan laoreet lorem, eget lacinia
urna. Phasellus ornare nibh quis metus dignissim aliquam. Vestibulum
hendrerit augue at libero dignissim cursus. Vestibulum tristique
metus vitae sem sagittis gravida. Aliquam commodo arcu quam, at
congue ex commodo quis. Ut dapibus, quam id suscipit vulputate, orci
dolor lobortis lectus, in pellentesque ante est sit amet odio.
Integer pretium iaculis sapien sit amet sagittis. Sed sagittis
libero libero, eu tempus neque malesuada quis. Aliquam id mauris ac
enim tincidunt aliquet nec sit amet odio. In ultricies in nulla id
dictum. Nulla facilisi. Proin aliquet semper odio, sit amet eleifend
ante.\newline
\hspace*{\parindent}%
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sem
ante, efficitur eget diam quis, lacinia sollicitudin elit. Donec
tempor sodales finibus. Fusce accumsan laoreet lorem, eget lacinia
urna. Phasellus ornare nibh quis metus dignissim aliquam. Vestibulum
hendrerit augue at libero dignissim cursus. Vestibulum tristique
metus vitae sem sagittis gravida. Aliquam commodo arcu quam, at
congue ex commodo quis. Ut dapibus, quam id suscipit vulputate, orci
dolor lobor\dots
}
\newcommand*{\Radius}{1.75in}
\newcommand*{\Margins}{2pt}
\newcommand*{\ExtraLeftMargin}{0cm}% Set to 0.5cm if want to see line numbers
\newcommand\TextWidth{}
\edef\TextWidth{\the\dimexpr2\dimexpr\Radius}
\newcommand\PaperWidth{}
\edef\PaperWidth{\the\dimexpr\TextWidth+2\dimexpr\Margins}
\setbox0\vbox{\hsize\TextWidth\relax
\sloppy\everypar{}\parskip0pt\relax
\parshape
21
\TopSemiCircleParshapeLines
\BotSemiCircleParshapeLines
0pt \hsize
\noindent\Text
\par\xdef\NbOfTextLines{\the\prevgraf}%
}
\typeout{USING NBOFLINES = \NbOfTextLines}
%\newcommand*{\PaperHeight}{12.5cm}%<----- This is tweaked for this example
\newcommand\PaperHeight{}
% I assume here Title on 2 lines
\edef\PaperHeight{\the\dimexpr\numexpr2+\NbOfTextLines\relax\baselineskip}
\typeout{USING PAPERHEIGHT = \PaperHeight}
\usepackage[
paperwidth=\dimexpr\PaperWidth+\ExtraLeftMargin\relax,
paperheight=\PaperHeight,
left=\dimexpr\Margins+\ExtraLeftMargin\relax,
right=\Margins,
top=\Margins,
bottom=\Margins,
]{geometry}
\usepackage{xintkernel}
\edef\TextParshapeLines{%
\TopSemiCircleParshapeLines
\romannumeral\xintreplicate{\NbOfTextLines-20}{0pt \hsize}%
\BotSemiCircleParshapeLines
}
\begin{document}
%\topskip0pt
%\vspace*{\fill}
\sloppy\parskip0pt\relax
\parshape2 \TitleParshapeLines
\begingroup\centering\textbf{My Lipsum Title}\par\endgroup
\parshape
\NbOfTextLines\space
\TextParshapeLines
\noindent\Text
\par
%\vspace*{\fill}
\thispagestyle{empty}
\end{document}
Gives

Here is edited code, compatible with shorter text:
\documentclass{article}
\newcommand*{\TitleParshapeLines}{%
% \parshape 2
0.40\hsize 0.20\hsize
0.26\hsize 0.48\hsize
}%
\newcommand*{\TopSemiCircleParshapeLines}{%
% \parshape 9
0.20\hsize 0.60\hsize
0.14\hsize 0.72\hsize
0.10\hsize 0.80\hsize
0.07\hsize 0.86\hsize
0.05\hsize 0.90\hsize
0.03\hsize 0.94\hsize
0.025\hsize 0.95\hsize
0.01\hsize 0.99\hsize
0.00\hsize 1.00\hsize
}
\newcommand*{\BotSemiCircleParshapeLines}{%
% \parshape 11
0.00\hsize 1.00\hsize
0.01\hsize 0.99\hsize
0.025\hsize 0.95\hsize
0.03\hsize 0.94\hsize
0.05\hsize 0.90\hsize
0.07\hsize 0.86\hsize
0.10\hsize 0.80\hsize
0.14\hsize 0.72\hsize
0.20\hsize 0.60\hsize
0.26\hsize 0.48\hsize
0.40\hsize 0.20\hsize
}
\newcommand{\Text}{%
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sem
ante, efficitur eget diam quis, lacinia sollicitudin elit. Donec
tempor sodales finibus. Fusce accumsan laoreet lorem, eget lacinia
urna. Phasellus ornare nibh quis metus dignissim aliquam. Vestibulum
hendrerit augue at libero dignissim cursus. Vestibulum tristique
metus vitae sem sagittis gravida. Aliquam commodo arcu quam, at
congue ex commodo quis. Ut dapibus, quam id suscipit vulputate, orci
dolor lobortis lectus, in pellentesque ante est sit amet odio.
Integer pretium iaculis sapien sit amet sagittis. Sed sagittis
libero libero, eu tempus neque malesuada quis. Aliquam id mauris ac
enim tincidunt aliquet nec sit amet odio. In ultricies in nulla id
dictum. Nulla facilisi. Proin aliquet semper odio, sit amet eleifend
ante.\newline
\hspace*{\parindent}%
% Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sem
% ante, efficitur eget diam quis, lacinia sollicitudin elit. Donec
% tempor sodales finibus. Fusce accumsan laoreet lorem, eget lacinia
% urna. Phasellus ornare nibh quis metus dignissim aliquam. Vestibulum
% hendrerit augue at libero dignissim cursus. Vestibulum tristique
% metus vitae sem sagittis gravida. Aliquam commodo arcu quam, at
% congue ex commodo quis. Ut dapibus, quam id suscipit vulputate, orci
% dolor lobor\dots
}
\newcommand*{\Radius}{1.75in}
\newcommand*{\Margins}{2pt}
\newcommand*{\ExtraLeftMargin}{0cm}% Set to 0.5cm if want to see line numbers
\newcommand\TextWidth{}
\edef\TextWidth{\the\dimexpr2\dimexpr\Radius}
\newcommand\PaperWidth{}
\edef\PaperWidth{\the\dimexpr\TextWidth+2\dimexpr\Margins}
\setbox0\vbox{\hsize\TextWidth\relax
\sloppy\everypar{}\parskip0pt\relax
\parshape
21
\TopSemiCircleParshapeLines
\BotSemiCircleParshapeLines
0pt \hsize
\noindent\Text
\par\xdef\NbOfTextLines{\the\prevgraf}%
}
\typeout{USING NBOFLINES = \NbOfTextLines}
%\newcommand*{\PaperHeight}{12.5cm}%<----- This is tweaked for this example
\newcommand\PaperHeight{}
% I assume here Title on 2 lines
\edef\PaperHeight{\the\dimexpr\numexpr2+
\ifnum\NbOfTextLines>20
\NbOfTextLines
\else 20\fi\relax\baselineskip}
\typeout{USING PAPERHEIGHT = \PaperHeight}
\usepackage[
paperwidth=\dimexpr\PaperWidth+\ExtraLeftMargin\relax,
paperheight=\PaperHeight,
left=\dimexpr\Margins+\ExtraLeftMargin\relax,
right=\Margins,
top=\Margins,
bottom=\Margins,
]{geometry}
\usepackage{xintkernel}
\edef\TextParshapeLines{%
\TopSemiCircleParshapeLines
\romannumeral\xintreplicate{\NbOfTextLines-20}{0pt \hsize}%
\BotSemiCircleParshapeLines
}
%\show\TextParshapeLines
\begin{document}
%\topskip0pt
%\vspace*{\fill}
\sloppy\parskip0pt\relax
\parshape2 \TitleParshapeLines
\begingroup\centering\textbf{My Lipsum Title}\par\endgroup
\parshape
\ifnum\NbOfTextLines>20
\NbOfTextLines
\else 20\fi\space
\TextParshapeLines
\noindent\Text
\par
%\vspace*{\fill}
\thispagestyle{empty}
\end{document}
For example:

(this example cuts short the text right after the mock parindent but I did not check what I was commenting out and now that image is uploaded I leave it like this, it would have been better to cut one line above or one line after in source rather than at this silly location)
To trigger the flood of upvotes, I have copied over the TikZ code as is from OP.
\documentclass{article}
\usepackage{tikz}
\usepackage[protrusion=false]{microtype}
\newcommand*{\TitleParshapeLines}{%
% \parshape 2
0.40\hsize 0.20\hsize
0.26\hsize 0.48\hsize
}%
\newcommand*{\TopSemiCircleParshapeLines}{%
% \parshape 9
0.20\hsize 0.60\hsize
0.14\hsize 0.72\hsize
0.10\hsize 0.80\hsize
0.07\hsize 0.86\hsize
0.05\hsize 0.90\hsize
0.03\hsize 0.94\hsize
0.025\hsize 0.95\hsize
0.01\hsize 0.99\hsize
0.00\hsize 1.00\hsize
}
\newcommand*{\BotSemiCircleParshapeLines}{%
% \parshape 11
0.00\hsize 1.00\hsize
0.01\hsize 0.99\hsize
0.025\hsize 0.95\hsize
0.03\hsize 0.94\hsize
0.05\hsize 0.90\hsize
0.07\hsize 0.86\hsize
0.10\hsize 0.80\hsize
0.14\hsize 0.72\hsize
0.20\hsize 0.60\hsize
0.26\hsize 0.48\hsize
0.40\hsize 0.20\hsize
}
\newcommand{\Text}{%
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sem
ante, efficitur eget diam quis, lacinia sollicitudin elit. Donec
tempor sodales finibus. Fusce accumsan laoreet lorem, eget lacinia
urna. Phasellus ornare nibh quis metus dignissim aliquam. Vestibulum
hendrerit augue at libero dignissim cursus. Vestibulum tristique
metus vitae sem sagittis gravida. Aliquam commodo arcu quam, at
congue ex commodo quis. Ut dapibus, quam id suscipit vulputate, orci
dolor lobortis lectus, in pellentesque ante est sit amet odio.
Integer pretium iaculis sapien sit amet sagittis. Sed sagittis
libero libero, eu tempus neque malesuada quis. Aliquam id mauris ac
enim tincidunt aliquet nec sit amet odio. In ultricies in nulla id
dictum. Nulla facilisi. Proin aliquet semper odio, sit amet eleifend
ante.\newline
\hspace*{\parindent}%
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sem
ante, efficitur eget diam quis, lacinia sollicitudin elit. Donec
tempor sodales finibus. Fusce accumsan laoreet lorem, eget lacinia
urna. Phasellus ornare nibh quis metus dignissim aliquam. Vestibulum
hendrerit augue at libero dignissim cursus. Vestibulum tristique
metus vitae sem sagittis gravida. Aliquam commodo arcu quam, at
congue ex commodo quis. Ut dapibus, quam id suscipit vulputate, orci
dolor lobor\dots
}
\newcommand*{\Radius}{1.75in}
\newcommand*{\Margins}{2pt}
\newcommand*{\ExtraLeftMargin}{0cm}% Set to 0.5cm if want to see line numbers
\newcommand\TextWidth{}
\edef\TextWidth{\the\dimexpr2\dimexpr\Radius}
\newcommand\PaperWidth{}
\edef\PaperWidth{\the\dimexpr\TextWidth+2\dimexpr\Margins}
\setbox0\vbox{\hsize\TextWidth\relax
\sloppy\everypar{}\parskip0pt\relax
\parshape
21
\TopSemiCircleParshapeLines
\BotSemiCircleParshapeLines
0pt \hsize
\noindent\Text
\par\xdef\NbOfTextLines{\the\prevgraf}%
}
\typeout{USING NBOFLINES = \NbOfTextLines}
%\newcommand*{\PaperHeight}{12.5cm}%<----- This is tweaked for this example
\newcommand\PaperHeight{}
% I assume here Title on 2 lines
\edef\PaperHeight{\the\dimexpr\numexpr2+
\ifnum\NbOfTextLines>20
\NbOfTextLines
\else 20\fi\relax\baselineskip}
\typeout{USING PAPERHEIGHT = \PaperHeight}
\usepackage[
paperwidth=\dimexpr\PaperWidth+\ExtraLeftMargin\relax,
paperheight=\PaperHeight,
left=\dimexpr\Margins+\ExtraLeftMargin\relax,
right=\Margins,
top=\Margins,
bottom=\Margins,
]{geometry}
\usepackage{xintkernel}
\edef\TextParshapeLines{%
\TopSemiCircleParshapeLines
\romannumeral\xintreplicate{\NbOfTextLines-20}{0pt \hsize}%
\BotSemiCircleParshapeLines
}
%\show\TextParshapeLines
\tikzset{Frame Border Style/.style={thick, draw=red}}
\tikzset{Frame Fill Style/.style={fill=green!15}}
\tikzset{Frame Title Rule Style/.style={magenta, thin}}
\tikzset{Frame Title Fill Style/.style={fill=yellow!25}}
\newcommand*{\ExternalBorder}[1]{%
\draw [#1]
([shift={(0.5*\ExtraLeftMargin-\Radius,-\Radius-\Margins)}]current page.north)
arc [start angle=180, end angle=0, radius=\Radius]
-- ([shift={(0.5*\ExtraLeftMargin+\Radius,\Radius+\Margins)}]current page.south)
arc [start angle=0, end angle=-180, radius=\Radius]
-- cycle
;
}%
\newcommand*{\TikzDecorations}[1]{%
\noindent
\begin{tikzpicture}[remember picture,overlay]
\ExternalBorder{Frame Border Style, Frame Fill Style}
\begin{scope}%% ------------------------------------ Title
\clip
([shift={(0.5*\ExtraLeftMargin,-\Radius-\Margins)}]current page.north)
circle (\Radius);
\draw [Frame Title Rule Style, Frame Title Fill Style]
([shift={(-2*\Radius-\Margins+0.20*\TextWidth,-2.25*\baselineskip)}]current page.north east)
rectangle ++(0.60*\TextWidth,2.25*\baselineskip-\Margins)
;
\end{scope}
\ExternalBorder{Frame Border Style}
\end{tikzpicture}%
}
\begin{document}
%\topskip0pt
%\vspace*{\fill}
\sloppy\parskip0pt\relax
\TikzDecorations{My Lipsum Title}%
\parshape2 \TitleParshapeLines
\begingroup\centering\textbf{My Lipsum Title}\par\endgroup
\parshape
\ifnum\NbOfTextLines>20
\NbOfTextLines
\else 20\fi\space
\TextParshapeLines
\noindent\Text
\par
%\vspace*{\fill}
\thispagestyle{empty}
\end{document}
Produces this:

Some adjustments are needed (it seems the Tikz borders are a bit narrow), but @PeterGrill will know better than me how to get the circles a bit wider.
Or, use slightly modified parshape parameters for the bottom circle, narrowing a bit. Maybe a simple modification in the included Tikz code, but easier for Peter to do than by myself.
Case of shorter text

With
\newcommand{\Text}{%
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sem
ante, efficitur eget diam quis, lacinia sollicitudin elit. Donec
tempor sodales finibus. Fusce accumsan laoreet lorem, eget lacinia
urna. Phasellus ornare nibh quis metus dignissim aliquam. Vestibulum
hendrerit augue at libero dignissim cursus.% Vestibulum tristique
% metus vitae sem sagittis gravida.
% Aliquam commodo arcu quam, at
% congue ex commodo quis. Ut dapibus, quam id suscipit vulputate, orci
% dolor lobortis lectus, in pellentesque ante est sit amet odio.
% Integer pretium iaculis sapien sit amet sagittis. Sed sagittis
% libero libero, eu tempus neque malesuada quis. Aliquam id mauris ac
% enim tincidunt aliquet nec sit amet odio. In ultricies in nulla id
% dictum. Nulla facilisi.
Proin aliquet semper odio, sit amet eleifend
ante.\newline
\hspace*{\parindent}%
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam sem
ante, efficitur eget diam quis, lacinia sollicitudin elit. Donec
tempor sodales finibus. Fusce accumsan laoreet lorem, eget lacinia
urna. Phasellus ornare nibh quis metus dignissim aliquam. Vestibulum
hendrerit augue at libero dignissim cursus. Vestibulum tristique
metus vitae sem sagittis gravida.% Aliquam commodo arcu quam, at
% congue ex commodo quis.
Ut dapibus, quam id suscipit vulputate, orci
dolor lobor\dots
}
My feeling here is that either the parshape parameters need some adjustments, or the parameters of the Tikz drawing.
\savebox: Box with Semicircular Parshape in a Savebox. – Peter Grill Sep 15 '18 at 08:54\newsavebox,\savebox,\sbox, the latter two are designed to use tacitly\hbox, so you would need a\parboxinside it to be able to specify a\parshape. – Sep 15 '18 at 09:04chiusaastendardo_2015-04-07.texthat you can download from there, and is written in English. – GuM Sep 15 '18 at 09:59