Custom line cap to simulate inked line in TikZ

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
3
down vote

favorite
1












Looking for a way to add a custom line cap (slight bulbous) like one would get when inking a line on real paper.enter image description here










share|improve this question





















  • Related: tex.stackexchange.com/questions/14283
    – Andrew
    Nov 19 at 22:47














up vote
3
down vote

favorite
1












Looking for a way to add a custom line cap (slight bulbous) like one would get when inking a line on real paper.enter image description here










share|improve this question





















  • Related: tex.stackexchange.com/questions/14283
    – Andrew
    Nov 19 at 22:47












up vote
3
down vote

favorite
1









up vote
3
down vote

favorite
1






1





Looking for a way to add a custom line cap (slight bulbous) like one would get when inking a line on real paper.enter image description here










share|improve this question













Looking for a way to add a custom line cap (slight bulbous) like one would get when inking a line on real paper.enter image description here







tikz-pgf






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 19 at 22:29









user2501235

395




395











  • Related: tex.stackexchange.com/questions/14283
    – Andrew
    Nov 19 at 22:47
















  • Related: tex.stackexchange.com/questions/14283
    – Andrew
    Nov 19 at 22:47















Related: tex.stackexchange.com/questions/14283
– Andrew
Nov 19 at 22:47




Related: tex.stackexchange.com/questions/14283
– Andrew
Nov 19 at 22:47










1 Answer
1






active

oldest

votes

















up vote
5
down vote



accepted










Can one add such arrow tips? Sure. Am I sure that my proposal is the best inky tip ever? Absolutely not. However, this should give you an idea how to approach the "best inky tip ever". ;-)



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending

pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.05pgfarrowlength-0.95pgflinewidth%
pgfpoint-0.2pgfarrowlength-0.9pgflinewidth
pgfpathcurvetopgfpoint-0.3pgfarrowlength-0.8pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.55pgflinewidth%
pgfpoint-01pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
begintikzpicture
draw [line width=1mm,ink[bend]-ink[bend],blue!80!black] (0,0) to [bend left] (3,0);
endtikzpicture
enddocument


enter image description here



Or, if you wish to have a more pronounced tip, this can also be done.



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending

pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.2pgfarrowlength-1.35pgflinewidth%
pgfpoint-0.3pgfarrowlength-1.1pgflinewidth
pgfpathcurvetopgfpoint-0.4pgfarrowlength-0.8pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.55pgflinewidth%
pgfpoint-01pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
begintikzpicture
draw [line width=1mm,ink[bend]-ink[bend],blue!80!black] (0,0) to [bend left] (3,0);
endtikzpicture
enddocument


enter image description here



And one could also add some randomness.



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending

pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.2pgfarrowlength-(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.3pgfarrowlength-0.8*(1+0.3*rnd)*pgflinewidth
pgfpathcurvetopgfpoint-0.4pgfarrowlength-0.6*(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.3*(1+0.3*rnd)*pgflinewidth%
pgfpoint-1pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
begintikzpicture
draw [line width=1mm,ink[bend]-ink[bend],blue!80!black] (0,0) to [bend left] (3,0);
endtikzpicture
enddocument


enter image description here



BONUS: Some quick and dirty "inky" letters.



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending
usetikzlibrarypositioning
pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.2pgfarrowlength-(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.3pgfarrowlength-0.8*(1+0.3*rnd)*pgflinewidth
pgfpathcurvetopgfpoint-0.4pgfarrowlength-0.6*(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.3*(1+0.3*rnd)*pgflinewidth%
pgfpoint-1pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
tikzsetpics/.cd,
A/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.55) -- (0.3,0.4) -- (0.6,-0.55);
draw[line width=5](0.1,1/3-0.45) --
(0.5,1/3-0.45);
path (0.7,0);,
B/.style=code=draw[line width=5] (0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.5] (0,0) to[out=0,in=0,looseness=3] cycle;,
C/.style=code=draw[line width=5,-ink[bend]]
(0,0) to[out=90,in=110,looseness=2] (0.5,0.25);
draw[line width=5,-ink[bend]](0,0) to[out=-90,in=-110,looseness=2] (0.5,-0.25);
path (0.7,0);,
D/.style=code=draw[line width=5] (0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.25] cycle;
path (0.7,0);,
E/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0.5,-0.45) --(0,-0.45) -- (0,0.45) -- (0.5,0.45);
draw[line width=5,-ink[bend]] (0,0) -- (0.5,0);
path (0.7,0);,
F/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.45) -- (0,0.45) -- (0.5,0.45);
draw[line width=5,-ink[bend]] (0,0) -- (0.5,0);
path (0.7,0);,
G/.style=code=draw[line width=5,-ink[bend]]
(0,0) to[out=90,in=110,looseness=2] (0.5,0.25);
draw[line width=5] (0,0) to[out=-90,in=-110,looseness=2]
(0.5,-0.25);
draw[line width=5,-ink[bend]] (0.54,-0.25) to (0.3,-0.25);
path (0.7,0);,
H/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.5) -- (0,0.5);
draw[line width=5,ink[bend]-ink[bend]] (0.5,-0.5) -- (0.5,0.5);
draw[line width=5] (0,0) -- (0.5,0);
path (0.7,0);,
I/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,-0.45) -- (0,0.45);
path (0.25,0);,
J/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0.2,0.45) -- (0.2,-0.35) to[out=-90,in=0]
(0.1,-0.45) to[out=180,in=-90] (0,-0.35);
path (0.45,0);,
K/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.45) -- (0,0.45);
draw[line width=5,ink[bend]-ink[bend]] (0.4,0.45) -- (0.02,0) -- (0.4,-0.45);
path (0.6,0);,
L/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,0.5) -- (0,-0.45) -- (0.4,-0.45);
path (0.6,0);,
M/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,-0.45) -- (0,0.45) --
(0.3,0.25) -- (0.6,0.45) -- (0.6,-0.45);
path (0.8,0);,
N/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,-0.45) -- (0,0.45) -- (0.6,-0.4) --
(0.6,0.45);
path (0.8,0);,
O/.style=code=draw[line width=5] (0.3,0) circle(0.3 and 0.48);
path (0.8,0);,
P/.style=code=draw[line width=5,ink[bend]-] (0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.5] (0,0);
path (0.6,0);,
Q/.style=code=draw[line width=5]
(0.3,0) circle(0.3 and 0.48);
draw[line width=5,ink[bend]-ink[bend]](0.35,-0.25) -- (0.6,-0.45);
path (0.8,0);,
R/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.5] (0.05,0) -- (0.4,-0.45);
path (0.6,0);,
S/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0.5,0.4)
to[out=160,in=165,looseness=2] (0.3,0)
to[out=-15,in=-20,looseness=2] (0.1,-0.4);
path (0.65,0);,
T/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0.35,-0.45) -- (0.35,0.45) (0,0.45) -- (0.7,0.45);
path (0.85,0);,
U/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.5) -- (0,0) to[out=-90,in=-90,looseness=2.5]
(0.6,0) -- (0.6,0.5);
path (0.8,0);,
V/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.5) -- (0.3,-0.4) -- (0.6,0.5);
path (0.8,0);,
W/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.45) -- (0.3,-0.4) -- (0.45,-0.1)
-- (0.6,-0.4) -- (0.9,0.45);
path (1.1,0);,
X/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,0.45) -- (0.6,-0.45);
draw[line width=5,ink[bend]-ink[bend]] (0.6,0.45)
-- (0,-0.45);
path (0.8,0);,
Y/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,0.45) -- (0.3,0);
draw[line width=5,ink[bend]-ink[bend]] (0.6,0.45)
-- (0,-0.45);
path (0.8,0);,
Z/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.45) --(0.6,0.45) -- (0,-0.45)
-- (0.6,-0.45);
path (0.8,0);,
space/.style=code=path (0,0) (0.2,0);,

begintikzpicture[blue!80!black]
pic[local bounding box=box1,scale=2] at (0,0) A;
foreach X [count=Y,evaluate=Y as Z using int(Y+1)] in B,...,Z
edeftempnoexpandpic[right=0mm of boxY,local bounding box=boxZ,scale=2]
X;
temp
endtikzpicture
enddocument


enter image description here



(Yes, obviously these are not at all as beautiful as dedicated fonts. However, one can subject them to nonlinear transformation, such as those of this impressive master piece. I spare this application for another day. Also because arrow tips and nonlinear transformations require some extra work.)






share|improve this answer






















  • Wow, perfect thank you! And, in my book, those would count as some pretty perfect inky tips to me.
    – user2501235
    Nov 19 at 23:31










  • How to convert your font such that it becomes install-able on my machine?
    – Artificial Stupidity
    Nov 20 at 6:07











  • @ArtificialStupidity There is no font that you need to install. You can compile the code on your machine, I think, without adding anything e.g. with pdflatex. And there is no font, I just drew the characters (very quickly and in a very dirty way) with TikZ. And since this is no font, you can not do anything sophisticated with it, in particular not typeset any formulae, which TeX is originally made for. The only conceivable use of this is that you can subject the "characters" to nontrivial transformations.
    – marmot
    Nov 20 at 6:15











  • @marmot: My idea is to create a font with TikZ and use it everywhere. :-)
    – Artificial Stupidity
    Nov 20 at 6:34










Your Answer








StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "85"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













 

draft saved


draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f460836%2fcustom-line-cap-to-simulate-inked-line-in-tikz%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes








up vote
5
down vote



accepted










Can one add such arrow tips? Sure. Am I sure that my proposal is the best inky tip ever? Absolutely not. However, this should give you an idea how to approach the "best inky tip ever". ;-)



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending

pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.05pgfarrowlength-0.95pgflinewidth%
pgfpoint-0.2pgfarrowlength-0.9pgflinewidth
pgfpathcurvetopgfpoint-0.3pgfarrowlength-0.8pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.55pgflinewidth%
pgfpoint-01pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
begintikzpicture
draw [line width=1mm,ink[bend]-ink[bend],blue!80!black] (0,0) to [bend left] (3,0);
endtikzpicture
enddocument


enter image description here



Or, if you wish to have a more pronounced tip, this can also be done.



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending

pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.2pgfarrowlength-1.35pgflinewidth%
pgfpoint-0.3pgfarrowlength-1.1pgflinewidth
pgfpathcurvetopgfpoint-0.4pgfarrowlength-0.8pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.55pgflinewidth%
pgfpoint-01pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
begintikzpicture
draw [line width=1mm,ink[bend]-ink[bend],blue!80!black] (0,0) to [bend left] (3,0);
endtikzpicture
enddocument


enter image description here



And one could also add some randomness.



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending

pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.2pgfarrowlength-(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.3pgfarrowlength-0.8*(1+0.3*rnd)*pgflinewidth
pgfpathcurvetopgfpoint-0.4pgfarrowlength-0.6*(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.3*(1+0.3*rnd)*pgflinewidth%
pgfpoint-1pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
begintikzpicture
draw [line width=1mm,ink[bend]-ink[bend],blue!80!black] (0,0) to [bend left] (3,0);
endtikzpicture
enddocument


enter image description here



BONUS: Some quick and dirty "inky" letters.



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending
usetikzlibrarypositioning
pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.2pgfarrowlength-(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.3pgfarrowlength-0.8*(1+0.3*rnd)*pgflinewidth
pgfpathcurvetopgfpoint-0.4pgfarrowlength-0.6*(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.3*(1+0.3*rnd)*pgflinewidth%
pgfpoint-1pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
tikzsetpics/.cd,
A/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.55) -- (0.3,0.4) -- (0.6,-0.55);
draw[line width=5](0.1,1/3-0.45) --
(0.5,1/3-0.45);
path (0.7,0);,
B/.style=code=draw[line width=5] (0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.5] (0,0) to[out=0,in=0,looseness=3] cycle;,
C/.style=code=draw[line width=5,-ink[bend]]
(0,0) to[out=90,in=110,looseness=2] (0.5,0.25);
draw[line width=5,-ink[bend]](0,0) to[out=-90,in=-110,looseness=2] (0.5,-0.25);
path (0.7,0);,
D/.style=code=draw[line width=5] (0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.25] cycle;
path (0.7,0);,
E/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0.5,-0.45) --(0,-0.45) -- (0,0.45) -- (0.5,0.45);
draw[line width=5,-ink[bend]] (0,0) -- (0.5,0);
path (0.7,0);,
F/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.45) -- (0,0.45) -- (0.5,0.45);
draw[line width=5,-ink[bend]] (0,0) -- (0.5,0);
path (0.7,0);,
G/.style=code=draw[line width=5,-ink[bend]]
(0,0) to[out=90,in=110,looseness=2] (0.5,0.25);
draw[line width=5] (0,0) to[out=-90,in=-110,looseness=2]
(0.5,-0.25);
draw[line width=5,-ink[bend]] (0.54,-0.25) to (0.3,-0.25);
path (0.7,0);,
H/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.5) -- (0,0.5);
draw[line width=5,ink[bend]-ink[bend]] (0.5,-0.5) -- (0.5,0.5);
draw[line width=5] (0,0) -- (0.5,0);
path (0.7,0);,
I/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,-0.45) -- (0,0.45);
path (0.25,0);,
J/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0.2,0.45) -- (0.2,-0.35) to[out=-90,in=0]
(0.1,-0.45) to[out=180,in=-90] (0,-0.35);
path (0.45,0);,
K/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.45) -- (0,0.45);
draw[line width=5,ink[bend]-ink[bend]] (0.4,0.45) -- (0.02,0) -- (0.4,-0.45);
path (0.6,0);,
L/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,0.5) -- (0,-0.45) -- (0.4,-0.45);
path (0.6,0);,
M/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,-0.45) -- (0,0.45) --
(0.3,0.25) -- (0.6,0.45) -- (0.6,-0.45);
path (0.8,0);,
N/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,-0.45) -- (0,0.45) -- (0.6,-0.4) --
(0.6,0.45);
path (0.8,0);,
O/.style=code=draw[line width=5] (0.3,0) circle(0.3 and 0.48);
path (0.8,0);,
P/.style=code=draw[line width=5,ink[bend]-] (0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.5] (0,0);
path (0.6,0);,
Q/.style=code=draw[line width=5]
(0.3,0) circle(0.3 and 0.48);
draw[line width=5,ink[bend]-ink[bend]](0.35,-0.25) -- (0.6,-0.45);
path (0.8,0);,
R/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.5] (0.05,0) -- (0.4,-0.45);
path (0.6,0);,
S/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0.5,0.4)
to[out=160,in=165,looseness=2] (0.3,0)
to[out=-15,in=-20,looseness=2] (0.1,-0.4);
path (0.65,0);,
T/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0.35,-0.45) -- (0.35,0.45) (0,0.45) -- (0.7,0.45);
path (0.85,0);,
U/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.5) -- (0,0) to[out=-90,in=-90,looseness=2.5]
(0.6,0) -- (0.6,0.5);
path (0.8,0);,
V/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.5) -- (0.3,-0.4) -- (0.6,0.5);
path (0.8,0);,
W/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.45) -- (0.3,-0.4) -- (0.45,-0.1)
-- (0.6,-0.4) -- (0.9,0.45);
path (1.1,0);,
X/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,0.45) -- (0.6,-0.45);
draw[line width=5,ink[bend]-ink[bend]] (0.6,0.45)
-- (0,-0.45);
path (0.8,0);,
Y/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,0.45) -- (0.3,0);
draw[line width=5,ink[bend]-ink[bend]] (0.6,0.45)
-- (0,-0.45);
path (0.8,0);,
Z/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.45) --(0.6,0.45) -- (0,-0.45)
-- (0.6,-0.45);
path (0.8,0);,
space/.style=code=path (0,0) (0.2,0);,

begintikzpicture[blue!80!black]
pic[local bounding box=box1,scale=2] at (0,0) A;
foreach X [count=Y,evaluate=Y as Z using int(Y+1)] in B,...,Z
edeftempnoexpandpic[right=0mm of boxY,local bounding box=boxZ,scale=2]
X;
temp
endtikzpicture
enddocument


enter image description here



(Yes, obviously these are not at all as beautiful as dedicated fonts. However, one can subject them to nonlinear transformation, such as those of this impressive master piece. I spare this application for another day. Also because arrow tips and nonlinear transformations require some extra work.)






share|improve this answer






















  • Wow, perfect thank you! And, in my book, those would count as some pretty perfect inky tips to me.
    – user2501235
    Nov 19 at 23:31










  • How to convert your font such that it becomes install-able on my machine?
    – Artificial Stupidity
    Nov 20 at 6:07











  • @ArtificialStupidity There is no font that you need to install. You can compile the code on your machine, I think, without adding anything e.g. with pdflatex. And there is no font, I just drew the characters (very quickly and in a very dirty way) with TikZ. And since this is no font, you can not do anything sophisticated with it, in particular not typeset any formulae, which TeX is originally made for. The only conceivable use of this is that you can subject the "characters" to nontrivial transformations.
    – marmot
    Nov 20 at 6:15











  • @marmot: My idea is to create a font with TikZ and use it everywhere. :-)
    – Artificial Stupidity
    Nov 20 at 6:34














up vote
5
down vote



accepted










Can one add such arrow tips? Sure. Am I sure that my proposal is the best inky tip ever? Absolutely not. However, this should give you an idea how to approach the "best inky tip ever". ;-)



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending

pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.05pgfarrowlength-0.95pgflinewidth%
pgfpoint-0.2pgfarrowlength-0.9pgflinewidth
pgfpathcurvetopgfpoint-0.3pgfarrowlength-0.8pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.55pgflinewidth%
pgfpoint-01pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
begintikzpicture
draw [line width=1mm,ink[bend]-ink[bend],blue!80!black] (0,0) to [bend left] (3,0);
endtikzpicture
enddocument


enter image description here



Or, if you wish to have a more pronounced tip, this can also be done.



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending

pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.2pgfarrowlength-1.35pgflinewidth%
pgfpoint-0.3pgfarrowlength-1.1pgflinewidth
pgfpathcurvetopgfpoint-0.4pgfarrowlength-0.8pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.55pgflinewidth%
pgfpoint-01pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
begintikzpicture
draw [line width=1mm,ink[bend]-ink[bend],blue!80!black] (0,0) to [bend left] (3,0);
endtikzpicture
enddocument


enter image description here



And one could also add some randomness.



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending

pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.2pgfarrowlength-(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.3pgfarrowlength-0.8*(1+0.3*rnd)*pgflinewidth
pgfpathcurvetopgfpoint-0.4pgfarrowlength-0.6*(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.3*(1+0.3*rnd)*pgflinewidth%
pgfpoint-1pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
begintikzpicture
draw [line width=1mm,ink[bend]-ink[bend],blue!80!black] (0,0) to [bend left] (3,0);
endtikzpicture
enddocument


enter image description here



BONUS: Some quick and dirty "inky" letters.



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending
usetikzlibrarypositioning
pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.2pgfarrowlength-(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.3pgfarrowlength-0.8*(1+0.3*rnd)*pgflinewidth
pgfpathcurvetopgfpoint-0.4pgfarrowlength-0.6*(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.3*(1+0.3*rnd)*pgflinewidth%
pgfpoint-1pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
tikzsetpics/.cd,
A/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.55) -- (0.3,0.4) -- (0.6,-0.55);
draw[line width=5](0.1,1/3-0.45) --
(0.5,1/3-0.45);
path (0.7,0);,
B/.style=code=draw[line width=5] (0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.5] (0,0) to[out=0,in=0,looseness=3] cycle;,
C/.style=code=draw[line width=5,-ink[bend]]
(0,0) to[out=90,in=110,looseness=2] (0.5,0.25);
draw[line width=5,-ink[bend]](0,0) to[out=-90,in=-110,looseness=2] (0.5,-0.25);
path (0.7,0);,
D/.style=code=draw[line width=5] (0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.25] cycle;
path (0.7,0);,
E/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0.5,-0.45) --(0,-0.45) -- (0,0.45) -- (0.5,0.45);
draw[line width=5,-ink[bend]] (0,0) -- (0.5,0);
path (0.7,0);,
F/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.45) -- (0,0.45) -- (0.5,0.45);
draw[line width=5,-ink[bend]] (0,0) -- (0.5,0);
path (0.7,0);,
G/.style=code=draw[line width=5,-ink[bend]]
(0,0) to[out=90,in=110,looseness=2] (0.5,0.25);
draw[line width=5] (0,0) to[out=-90,in=-110,looseness=2]
(0.5,-0.25);
draw[line width=5,-ink[bend]] (0.54,-0.25) to (0.3,-0.25);
path (0.7,0);,
H/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.5) -- (0,0.5);
draw[line width=5,ink[bend]-ink[bend]] (0.5,-0.5) -- (0.5,0.5);
draw[line width=5] (0,0) -- (0.5,0);
path (0.7,0);,
I/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,-0.45) -- (0,0.45);
path (0.25,0);,
J/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0.2,0.45) -- (0.2,-0.35) to[out=-90,in=0]
(0.1,-0.45) to[out=180,in=-90] (0,-0.35);
path (0.45,0);,
K/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.45) -- (0,0.45);
draw[line width=5,ink[bend]-ink[bend]] (0.4,0.45) -- (0.02,0) -- (0.4,-0.45);
path (0.6,0);,
L/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,0.5) -- (0,-0.45) -- (0.4,-0.45);
path (0.6,0);,
M/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,-0.45) -- (0,0.45) --
(0.3,0.25) -- (0.6,0.45) -- (0.6,-0.45);
path (0.8,0);,
N/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,-0.45) -- (0,0.45) -- (0.6,-0.4) --
(0.6,0.45);
path (0.8,0);,
O/.style=code=draw[line width=5] (0.3,0) circle(0.3 and 0.48);
path (0.8,0);,
P/.style=code=draw[line width=5,ink[bend]-] (0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.5] (0,0);
path (0.6,0);,
Q/.style=code=draw[line width=5]
(0.3,0) circle(0.3 and 0.48);
draw[line width=5,ink[bend]-ink[bend]](0.35,-0.25) -- (0.6,-0.45);
path (0.8,0);,
R/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.5] (0.05,0) -- (0.4,-0.45);
path (0.6,0);,
S/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0.5,0.4)
to[out=160,in=165,looseness=2] (0.3,0)
to[out=-15,in=-20,looseness=2] (0.1,-0.4);
path (0.65,0);,
T/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0.35,-0.45) -- (0.35,0.45) (0,0.45) -- (0.7,0.45);
path (0.85,0);,
U/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.5) -- (0,0) to[out=-90,in=-90,looseness=2.5]
(0.6,0) -- (0.6,0.5);
path (0.8,0);,
V/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.5) -- (0.3,-0.4) -- (0.6,0.5);
path (0.8,0);,
W/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.45) -- (0.3,-0.4) -- (0.45,-0.1)
-- (0.6,-0.4) -- (0.9,0.45);
path (1.1,0);,
X/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,0.45) -- (0.6,-0.45);
draw[line width=5,ink[bend]-ink[bend]] (0.6,0.45)
-- (0,-0.45);
path (0.8,0);,
Y/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,0.45) -- (0.3,0);
draw[line width=5,ink[bend]-ink[bend]] (0.6,0.45)
-- (0,-0.45);
path (0.8,0);,
Z/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.45) --(0.6,0.45) -- (0,-0.45)
-- (0.6,-0.45);
path (0.8,0);,
space/.style=code=path (0,0) (0.2,0);,

begintikzpicture[blue!80!black]
pic[local bounding box=box1,scale=2] at (0,0) A;
foreach X [count=Y,evaluate=Y as Z using int(Y+1)] in B,...,Z
edeftempnoexpandpic[right=0mm of boxY,local bounding box=boxZ,scale=2]
X;
temp
endtikzpicture
enddocument


enter image description here



(Yes, obviously these are not at all as beautiful as dedicated fonts. However, one can subject them to nonlinear transformation, such as those of this impressive master piece. I spare this application for another day. Also because arrow tips and nonlinear transformations require some extra work.)






share|improve this answer






















  • Wow, perfect thank you! And, in my book, those would count as some pretty perfect inky tips to me.
    – user2501235
    Nov 19 at 23:31










  • How to convert your font such that it becomes install-able on my machine?
    – Artificial Stupidity
    Nov 20 at 6:07











  • @ArtificialStupidity There is no font that you need to install. You can compile the code on your machine, I think, without adding anything e.g. with pdflatex. And there is no font, I just drew the characters (very quickly and in a very dirty way) with TikZ. And since this is no font, you can not do anything sophisticated with it, in particular not typeset any formulae, which TeX is originally made for. The only conceivable use of this is that you can subject the "characters" to nontrivial transformations.
    – marmot
    Nov 20 at 6:15











  • @marmot: My idea is to create a font with TikZ and use it everywhere. :-)
    – Artificial Stupidity
    Nov 20 at 6:34












up vote
5
down vote



accepted







up vote
5
down vote



accepted






Can one add such arrow tips? Sure. Am I sure that my proposal is the best inky tip ever? Absolutely not. However, this should give you an idea how to approach the "best inky tip ever". ;-)



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending

pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.05pgfarrowlength-0.95pgflinewidth%
pgfpoint-0.2pgfarrowlength-0.9pgflinewidth
pgfpathcurvetopgfpoint-0.3pgfarrowlength-0.8pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.55pgflinewidth%
pgfpoint-01pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
begintikzpicture
draw [line width=1mm,ink[bend]-ink[bend],blue!80!black] (0,0) to [bend left] (3,0);
endtikzpicture
enddocument


enter image description here



Or, if you wish to have a more pronounced tip, this can also be done.



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending

pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.2pgfarrowlength-1.35pgflinewidth%
pgfpoint-0.3pgfarrowlength-1.1pgflinewidth
pgfpathcurvetopgfpoint-0.4pgfarrowlength-0.8pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.55pgflinewidth%
pgfpoint-01pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
begintikzpicture
draw [line width=1mm,ink[bend]-ink[bend],blue!80!black] (0,0) to [bend left] (3,0);
endtikzpicture
enddocument


enter image description here



And one could also add some randomness.



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending

pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.2pgfarrowlength-(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.3pgfarrowlength-0.8*(1+0.3*rnd)*pgflinewidth
pgfpathcurvetopgfpoint-0.4pgfarrowlength-0.6*(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.3*(1+0.3*rnd)*pgflinewidth%
pgfpoint-1pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
begintikzpicture
draw [line width=1mm,ink[bend]-ink[bend],blue!80!black] (0,0) to [bend left] (3,0);
endtikzpicture
enddocument


enter image description here



BONUS: Some quick and dirty "inky" letters.



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending
usetikzlibrarypositioning
pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.2pgfarrowlength-(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.3pgfarrowlength-0.8*(1+0.3*rnd)*pgflinewidth
pgfpathcurvetopgfpoint-0.4pgfarrowlength-0.6*(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.3*(1+0.3*rnd)*pgflinewidth%
pgfpoint-1pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
tikzsetpics/.cd,
A/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.55) -- (0.3,0.4) -- (0.6,-0.55);
draw[line width=5](0.1,1/3-0.45) --
(0.5,1/3-0.45);
path (0.7,0);,
B/.style=code=draw[line width=5] (0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.5] (0,0) to[out=0,in=0,looseness=3] cycle;,
C/.style=code=draw[line width=5,-ink[bend]]
(0,0) to[out=90,in=110,looseness=2] (0.5,0.25);
draw[line width=5,-ink[bend]](0,0) to[out=-90,in=-110,looseness=2] (0.5,-0.25);
path (0.7,0);,
D/.style=code=draw[line width=5] (0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.25] cycle;
path (0.7,0);,
E/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0.5,-0.45) --(0,-0.45) -- (0,0.45) -- (0.5,0.45);
draw[line width=5,-ink[bend]] (0,0) -- (0.5,0);
path (0.7,0);,
F/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.45) -- (0,0.45) -- (0.5,0.45);
draw[line width=5,-ink[bend]] (0,0) -- (0.5,0);
path (0.7,0);,
G/.style=code=draw[line width=5,-ink[bend]]
(0,0) to[out=90,in=110,looseness=2] (0.5,0.25);
draw[line width=5] (0,0) to[out=-90,in=-110,looseness=2]
(0.5,-0.25);
draw[line width=5,-ink[bend]] (0.54,-0.25) to (0.3,-0.25);
path (0.7,0);,
H/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.5) -- (0,0.5);
draw[line width=5,ink[bend]-ink[bend]] (0.5,-0.5) -- (0.5,0.5);
draw[line width=5] (0,0) -- (0.5,0);
path (0.7,0);,
I/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,-0.45) -- (0,0.45);
path (0.25,0);,
J/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0.2,0.45) -- (0.2,-0.35) to[out=-90,in=0]
(0.1,-0.45) to[out=180,in=-90] (0,-0.35);
path (0.45,0);,
K/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.45) -- (0,0.45);
draw[line width=5,ink[bend]-ink[bend]] (0.4,0.45) -- (0.02,0) -- (0.4,-0.45);
path (0.6,0);,
L/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,0.5) -- (0,-0.45) -- (0.4,-0.45);
path (0.6,0);,
M/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,-0.45) -- (0,0.45) --
(0.3,0.25) -- (0.6,0.45) -- (0.6,-0.45);
path (0.8,0);,
N/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,-0.45) -- (0,0.45) -- (0.6,-0.4) --
(0.6,0.45);
path (0.8,0);,
O/.style=code=draw[line width=5] (0.3,0) circle(0.3 and 0.48);
path (0.8,0);,
P/.style=code=draw[line width=5,ink[bend]-] (0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.5] (0,0);
path (0.6,0);,
Q/.style=code=draw[line width=5]
(0.3,0) circle(0.3 and 0.48);
draw[line width=5,ink[bend]-ink[bend]](0.35,-0.25) -- (0.6,-0.45);
path (0.8,0);,
R/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.5] (0.05,0) -- (0.4,-0.45);
path (0.6,0);,
S/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0.5,0.4)
to[out=160,in=165,looseness=2] (0.3,0)
to[out=-15,in=-20,looseness=2] (0.1,-0.4);
path (0.65,0);,
T/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0.35,-0.45) -- (0.35,0.45) (0,0.45) -- (0.7,0.45);
path (0.85,0);,
U/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.5) -- (0,0) to[out=-90,in=-90,looseness=2.5]
(0.6,0) -- (0.6,0.5);
path (0.8,0);,
V/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.5) -- (0.3,-0.4) -- (0.6,0.5);
path (0.8,0);,
W/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.45) -- (0.3,-0.4) -- (0.45,-0.1)
-- (0.6,-0.4) -- (0.9,0.45);
path (1.1,0);,
X/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,0.45) -- (0.6,-0.45);
draw[line width=5,ink[bend]-ink[bend]] (0.6,0.45)
-- (0,-0.45);
path (0.8,0);,
Y/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,0.45) -- (0.3,0);
draw[line width=5,ink[bend]-ink[bend]] (0.6,0.45)
-- (0,-0.45);
path (0.8,0);,
Z/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.45) --(0.6,0.45) -- (0,-0.45)
-- (0.6,-0.45);
path (0.8,0);,
space/.style=code=path (0,0) (0.2,0);,

begintikzpicture[blue!80!black]
pic[local bounding box=box1,scale=2] at (0,0) A;
foreach X [count=Y,evaluate=Y as Z using int(Y+1)] in B,...,Z
edeftempnoexpandpic[right=0mm of boxY,local bounding box=boxZ,scale=2]
X;
temp
endtikzpicture
enddocument


enter image description here



(Yes, obviously these are not at all as beautiful as dedicated fonts. However, one can subject them to nonlinear transformation, such as those of this impressive master piece. I spare this application for another day. Also because arrow tips and nonlinear transformations require some extra work.)






share|improve this answer














Can one add such arrow tips? Sure. Am I sure that my proposal is the best inky tip ever? Absolutely not. However, this should give you an idea how to approach the "best inky tip ever". ;-)



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending

pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.05pgfarrowlength-0.95pgflinewidth%
pgfpoint-0.2pgfarrowlength-0.9pgflinewidth
pgfpathcurvetopgfpoint-0.3pgfarrowlength-0.8pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.55pgflinewidth%
pgfpoint-01pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
begintikzpicture
draw [line width=1mm,ink[bend]-ink[bend],blue!80!black] (0,0) to [bend left] (3,0);
endtikzpicture
enddocument


enter image description here



Or, if you wish to have a more pronounced tip, this can also be done.



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending

pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.2pgfarrowlength-1.35pgflinewidth%
pgfpoint-0.3pgfarrowlength-1.1pgflinewidth
pgfpathcurvetopgfpoint-0.4pgfarrowlength-0.8pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.55pgflinewidth%
pgfpoint-01pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
begintikzpicture
draw [line width=1mm,ink[bend]-ink[bend],blue!80!black] (0,0) to [bend left] (3,0);
endtikzpicture
enddocument


enter image description here



And one could also add some randomness.



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending

pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.2pgfarrowlength-(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.3pgfarrowlength-0.8*(1+0.3*rnd)*pgflinewidth
pgfpathcurvetopgfpoint-0.4pgfarrowlength-0.6*(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.3*(1+0.3*rnd)*pgflinewidth%
pgfpoint-1pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
begintikzpicture
draw [line width=1mm,ink[bend]-ink[bend],blue!80!black] (0,0) to [bend left] (3,0);
endtikzpicture
enddocument


enter image description here



BONUS: Some quick and dirty "inky" letters.



documentclass[tikz,border=3.14mm]standalone
usetikzlibraryarrows.meta
usetikzlibrarybending
usetikzlibrarypositioning
pgfdeclarearrow
name=ink,
parameters= thepgfarrowlength,
setup code=
pgfarrowssettipend0pt
pgfarrowssetlineend-pgfarrowlength
pgfarrowlinewidth=pgflinewidth
pgfarrowssavethepgfarrowlength
,
drawing code=
pgfpathmovetopgfpoint-pgfarrowlength0.5pgflinewidth
pgfpathcurvetopgfpoint-0.75pgfarrowlength0.6pgflinewidth%
pgfpoint-0.01pgfarrowlength0.6pgflinewidth%
pgfpoint0pt0pt
pgfpathcurvetopgfpoint-0.01pgfarrowlength-0.5pgflinewidth%
pgfpoint-0.2pgfarrowlength-(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.3pgfarrowlength-0.8*(1+0.3*rnd)*pgflinewidth
pgfpathcurvetopgfpoint-0.4pgfarrowlength-0.6*(1+0.3*rnd)*pgflinewidth%
pgfpoint-0.6pgfarrowlength-0.3*(1+0.3*rnd)*pgflinewidth%
pgfpoint-1pgfarrowlength-0.5pgflinewidth
pgfusepathqfill
,
defaults = length = 12pt

begindocument
tikzsetpics/.cd,
A/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.55) -- (0.3,0.4) -- (0.6,-0.55);
draw[line width=5](0.1,1/3-0.45) --
(0.5,1/3-0.45);
path (0.7,0);,
B/.style=code=draw[line width=5] (0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.5] (0,0) to[out=0,in=0,looseness=3] cycle;,
C/.style=code=draw[line width=5,-ink[bend]]
(0,0) to[out=90,in=110,looseness=2] (0.5,0.25);
draw[line width=5,-ink[bend]](0,0) to[out=-90,in=-110,looseness=2] (0.5,-0.25);
path (0.7,0);,
D/.style=code=draw[line width=5] (0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.25] cycle;
path (0.7,0);,
E/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0.5,-0.45) --(0,-0.45) -- (0,0.45) -- (0.5,0.45);
draw[line width=5,-ink[bend]] (0,0) -- (0.5,0);
path (0.7,0);,
F/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.45) -- (0,0.45) -- (0.5,0.45);
draw[line width=5,-ink[bend]] (0,0) -- (0.5,0);
path (0.7,0);,
G/.style=code=draw[line width=5,-ink[bend]]
(0,0) to[out=90,in=110,looseness=2] (0.5,0.25);
draw[line width=5] (0,0) to[out=-90,in=-110,looseness=2]
(0.5,-0.25);
draw[line width=5,-ink[bend]] (0.54,-0.25) to (0.3,-0.25);
path (0.7,0);,
H/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.5) -- (0,0.5);
draw[line width=5,ink[bend]-ink[bend]] (0.5,-0.5) -- (0.5,0.5);
draw[line width=5] (0,0) -- (0.5,0);
path (0.7,0);,
I/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,-0.45) -- (0,0.45);
path (0.25,0);,
J/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0.2,0.45) -- (0.2,-0.35) to[out=-90,in=0]
(0.1,-0.45) to[out=180,in=-90] (0,-0.35);
path (0.45,0);,
K/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.45) -- (0,0.45);
draw[line width=5,ink[bend]-ink[bend]] (0.4,0.45) -- (0.02,0) -- (0.4,-0.45);
path (0.6,0);,
L/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,0.5) -- (0,-0.45) -- (0.4,-0.45);
path (0.6,0);,
M/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,-0.45) -- (0,0.45) --
(0.3,0.25) -- (0.6,0.45) -- (0.6,-0.45);
path (0.8,0);,
N/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,-0.45) -- (0,0.45) -- (0.6,-0.4) --
(0.6,0.45);
path (0.8,0);,
O/.style=code=draw[line width=5] (0.3,0) circle(0.3 and 0.48);
path (0.8,0);,
P/.style=code=draw[line width=5,ink[bend]-] (0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.5] (0,0);
path (0.6,0);,
Q/.style=code=draw[line width=5]
(0.3,0) circle(0.3 and 0.48);
draw[line width=5,ink[bend]-ink[bend]](0.35,-0.25) -- (0.6,-0.45);
path (0.8,0);,
R/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,-0.45) -- (0,0.45)
to[out=0,in=0,looseness=2.5] (0.05,0) -- (0.4,-0.45);
path (0.6,0);,
S/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0.5,0.4)
to[out=160,in=165,looseness=2] (0.3,0)
to[out=-15,in=-20,looseness=2] (0.1,-0.4);
path (0.65,0);,
T/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0.35,-0.45) -- (0.35,0.45) (0,0.45) -- (0.7,0.45);
path (0.85,0);,
U/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.5) -- (0,0) to[out=-90,in=-90,looseness=2.5]
(0.6,0) -- (0.6,0.5);
path (0.8,0);,
V/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.5) -- (0.3,-0.4) -- (0.6,0.5);
path (0.8,0);,
W/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.45) -- (0.3,-0.4) -- (0.45,-0.1)
-- (0.6,-0.4) -- (0.9,0.45);
path (1.1,0);,
X/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,0.45) -- (0.6,-0.45);
draw[line width=5,ink[bend]-ink[bend]] (0.6,0.45)
-- (0,-0.45);
path (0.8,0);,
Y/.style=code=draw[line width=5,ink[bend]-ink[bend]]
(0,0.45) -- (0.3,0);
draw[line width=5,ink[bend]-ink[bend]] (0.6,0.45)
-- (0,-0.45);
path (0.8,0);,
Z/.style=code=draw[line width=5,ink[bend]-ink[bend]] (0,0.45) --(0.6,0.45) -- (0,-0.45)
-- (0.6,-0.45);
path (0.8,0);,
space/.style=code=path (0,0) (0.2,0);,

begintikzpicture[blue!80!black]
pic[local bounding box=box1,scale=2] at (0,0) A;
foreach X [count=Y,evaluate=Y as Z using int(Y+1)] in B,...,Z
edeftempnoexpandpic[right=0mm of boxY,local bounding box=boxZ,scale=2]
X;
temp
endtikzpicture
enddocument


enter image description here



(Yes, obviously these are not at all as beautiful as dedicated fonts. However, one can subject them to nonlinear transformation, such as those of this impressive master piece. I spare this application for another day. Also because arrow tips and nonlinear transformations require some extra work.)







share|improve this answer














share|improve this answer



share|improve this answer








edited Nov 20 at 3:33

























answered Nov 19 at 22:59









marmot

77.7k487166




77.7k487166











  • Wow, perfect thank you! And, in my book, those would count as some pretty perfect inky tips to me.
    – user2501235
    Nov 19 at 23:31










  • How to convert your font such that it becomes install-able on my machine?
    – Artificial Stupidity
    Nov 20 at 6:07











  • @ArtificialStupidity There is no font that you need to install. You can compile the code on your machine, I think, without adding anything e.g. with pdflatex. And there is no font, I just drew the characters (very quickly and in a very dirty way) with TikZ. And since this is no font, you can not do anything sophisticated with it, in particular not typeset any formulae, which TeX is originally made for. The only conceivable use of this is that you can subject the "characters" to nontrivial transformations.
    – marmot
    Nov 20 at 6:15











  • @marmot: My idea is to create a font with TikZ and use it everywhere. :-)
    – Artificial Stupidity
    Nov 20 at 6:34
















  • Wow, perfect thank you! And, in my book, those would count as some pretty perfect inky tips to me.
    – user2501235
    Nov 19 at 23:31










  • How to convert your font such that it becomes install-able on my machine?
    – Artificial Stupidity
    Nov 20 at 6:07











  • @ArtificialStupidity There is no font that you need to install. You can compile the code on your machine, I think, without adding anything e.g. with pdflatex. And there is no font, I just drew the characters (very quickly and in a very dirty way) with TikZ. And since this is no font, you can not do anything sophisticated with it, in particular not typeset any formulae, which TeX is originally made for. The only conceivable use of this is that you can subject the "characters" to nontrivial transformations.
    – marmot
    Nov 20 at 6:15











  • @marmot: My idea is to create a font with TikZ and use it everywhere. :-)
    – Artificial Stupidity
    Nov 20 at 6:34















Wow, perfect thank you! And, in my book, those would count as some pretty perfect inky tips to me.
– user2501235
Nov 19 at 23:31




Wow, perfect thank you! And, in my book, those would count as some pretty perfect inky tips to me.
– user2501235
Nov 19 at 23:31












How to convert your font such that it becomes install-able on my machine?
– Artificial Stupidity
Nov 20 at 6:07





How to convert your font such that it becomes install-able on my machine?
– Artificial Stupidity
Nov 20 at 6:07













@ArtificialStupidity There is no font that you need to install. You can compile the code on your machine, I think, without adding anything e.g. with pdflatex. And there is no font, I just drew the characters (very quickly and in a very dirty way) with TikZ. And since this is no font, you can not do anything sophisticated with it, in particular not typeset any formulae, which TeX is originally made for. The only conceivable use of this is that you can subject the "characters" to nontrivial transformations.
– marmot
Nov 20 at 6:15





@ArtificialStupidity There is no font that you need to install. You can compile the code on your machine, I think, without adding anything e.g. with pdflatex. And there is no font, I just drew the characters (very quickly and in a very dirty way) with TikZ. And since this is no font, you can not do anything sophisticated with it, in particular not typeset any formulae, which TeX is originally made for. The only conceivable use of this is that you can subject the "characters" to nontrivial transformations.
– marmot
Nov 20 at 6:15













@marmot: My idea is to create a font with TikZ and use it everywhere. :-)
– Artificial Stupidity
Nov 20 at 6:34




@marmot: My idea is to create a font with TikZ and use it everywhere. :-)
– Artificial Stupidity
Nov 20 at 6:34

















 

draft saved


draft discarded















































 


draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2ftex.stackexchange.com%2fquestions%2f460836%2fcustom-line-cap-to-simulate-inked-line-in-tikz%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown






Popular posts from this blog

How to check contact read email or not when send email to Individual?

Bahrain

Postfix configuration issue with fips on centos 7; mailgun relay