
Я хочу преобразовать одну букву на титульном листе очень специфическим образом. Чтобы проиллюстрировать эффект, которого я пытаюсь добиться, я прикрепил изображение. Обратите внимание, что левая половина буквы H короче правой, но при этом верх буквы ровный. Подозреваю, что захочу исказить ее каким-то образом с помощью tikz, но не уверен, как это сделать. Может кто-нибудь помочь?
решение1
Отказ от ответственности:Это НЕ ответ TikZ, но что поделать...
ПринимаяОтвет Трастона на этот вопрос относительно контуров текстаДля справки, вы можете сделать следующее, чтобы получить деформированную букву H. Это доказательство концепции, поэтому оно работает только с отдельными буквами, но его можно адаптировать для целых слов с помощью дальнейшей настройки.
\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}
Для сравнения, вот результат для буквы Q (применяется фальшивое незаполнение):