Mit Tikz einen einzelnen Buchstaben transformieren

Mit Tikz einen einzelnen Buchstaben transformieren

Ich möchte einen Buchstaben auf einer Titelseite auf eine ganz bestimmte Weise verändern. Um den Effekt zu veranschaulichen, den ich erreichen möchte, habe ich ein Bild angehängt. Beachten Sie, dass die linke Hälfte des Buchstabens H kürzer ist als die rechte Hälfte, die Oberseite des Buchstabens jedoch gerade ist. Ich vermute, dass ich es mit Tikz irgendwie verzerren möchte, aber ich bin mir nicht sicher, wie ich das erreichen soll. Kann mir jemand helfen?

Gestreckter Buchstabe H

Antwort1

Haftungsausschluss:Dies ist KEINE TikZ-Antwort, aber egal ...

EinnahmeThrustons Antwort auf diese Frage zu TextgliederungenAls Referenz können Sie Folgendes tun, um einen deformierten Buchstaben „H“ zu erhalten. Es handelt sich um einen Proof of Concept, daher funktioniert es nur mit einzelnen Buchstaben, aber es ist möglich, es durch weitere Anpassungen an ganze Wörter anzupassen.

\documentclass{standalone}
\usepackage[latex,shellescape]{gmp}
\begin{document}
\begin{mpost}[name=H]
picture nice;
path P, PP;

nice := image(draw thelabel(\btex H etex,origin));

%Transformation
vardef T(expr p) =
    save x, y;
    x := xpart p; y := ypart p;
%0.01 by guessing. Play with other values
    (x,0.01x*y) 
enddef;

%Assumes a cyclic path
%It can be done better
vardef TT(expr P) =
    T(point 0 of P) 
    .. controls
    T(postcontrol 0 of P) and T(precontrol 1 of P) 
    for j = 1 upto (length P - 1):
        .. T(point j of P) 
        .. controls T(postcontrol j of P) 
            and T(precontrol (j+1) of P) 
    endfor
    .. cycle
enddef;

for i within nice:
    if textual i:
        for j = 1 upto length textpart i:
            string s; s := substring(j-1,j) of textpart i;
            picture g; g := glyph ASCII s of fontpart i scaled 1/10;
            picture r; r := image(
            for x within g:
                picture xx; xx := image(draw g);
%75 is also guessing. Try other values
%Bad filling. It works for the letter H, tho.
                fill TT(pathpart x shifted (llcorner xx - ulcorner xx + 75right)) withcolor
                if greypart x = 1:
                    1
                else:
                    (1,0.843,0)
                fi;
            endfor
            );
            draw r;
        endfor 
    fi
endfor
\end{mpost}\usempost{H}%
\end{document}

Bildbeschreibung hier eingeben

Zum Vergleich ist dies das Ergebnis für den Buchstaben Q (es wird eine falsche Unausfüllung angewendet):

Bildbeschreibung hier eingeben

verwandte Informationen