Spiralize a Word, Triangularly!
Wolfram Language (Mathematica), 99 bytes
sPrint@@@Array[s[[4# #-2#+1-#2&amp;@@If[Abs@#2&lt;2#,!##,#-Abs@#2|-#2]]]/._@__-&gt;&quot; &quot;&amp;,2{L=Tr[1^s],L},-L]

Try it online!
Directly computes the index of each position: in Cartesian coordinates,
\$\operatorname{index}(x,y)=\textit{offset}+\begin{cases}2y(2y+1)-x,&amp;|x|&lt;-2y\\
2\left(y+|x|\right)\left(2\left(y+|x|\right)+1\right)+x,&amp;\text{else}\end{cases}\$
where \$\textit{offset}\$ is the index of the &quot;first&quot; character (1, in Mathematica).
Takes a list of characters as input.

Older approach, 123 122 109 107 bytes
Print@@@Normal@SparseArray[i=0;p=2Length@#;(p+=ReIm[I[2+I,1-I][[⌈2√i++⌉~Mod~4-1]]-1])-&gt;#&amp;/@#,2p,&quot; &quot;]&amp;

Try it online!
The direction of the (1-indexed) ith character relative to the previous character can be computed with \$\Big\lceil2\sqrt i\Big\rceil\bmod 4\$:

1: ↗
2: ↘
3,0: ←