Drawing some custom pixelart text ¯\_(ツ)_/¯
#font
twitter.com/mknol
Log in to post a comment.
const turtle = new Turtle(); const text = "turtletoy"; const letters = { 't':'111010010', 'u':'101101111', 'r':'111100100', 'l':'100100111', 'e':'111110111', 'o': '111101111', 'y':'101010010'} const word = text.split("").map(x => letters[x]); // The walk function will be called until it returns false. const w = 3; const s = Math.pow(w, 2); const blockSize = { w: 9, h: 15 }; const breakAt = 6; const startAt = { x: -93, y: -45 } const letterSpace = 0.5; function walk(i) { var charIdx = (i / s) | 0; const char = word[charIdx]; const offset = { x: startAt.x + (charIdx % breakAt) * (w + letterSpace) * blockSize.w, y: startAt.y + ((charIdx / breakAt) | 0) * (w + letterSpace) * blockSize.h, }; const idx = i % s; if (char.charAt(idx) == "1") { const x = (idx % w); const y = (idx / w) | 0; // draw block of char infiniteRect(offset.x + x * blockSize.w, offset.y + y * blockSize.h, blockSize.w, blockSize.h); } if (i == 0) { // random decoration horizontalLine(startAt.x + blockSize.w / 2, startAt.y - blockSize.h * 2, ((breakAt * (w + letterSpace)) - 1), 2); horizontalLine(startAt.x + blockSize.w / 2, startAt.y - blockSize.h * 3, ((breakAt * (w + letterSpace)) - 1), .75); horizontalLine(startAt.x + blockSize.w / 2, startAt.y + ((w + letterSpace) * 2) * blockSize.h, ((breakAt * (w + letterSpace)) -1), 2); horizontalLine(startAt.x + blockSize.w / 2, startAt.y + ((w + letterSpace) * 2) * blockSize.h + blockSize.h, ((breakAt * (w + letterSpace)) -1), .75); } return i + 1 < word.length * s; } function horizontalLine(x, y, total, d) { for (let i = 0; i < total * d; i++) { infiniteRect(x + i * blockSize.w / d, y, blockSize.w / d, blockSize.h); } } function infiniteRect(x, y, w, h) { if (w <= 1 || h <= 1) return; let t = 2; for (let i = 0; i < t; i++) { weirdRect(x + i, y + i, w - i * 2, h - i * 2); } let i = t; infiniteRect(x + i, y + i, w - i * 2, h / 2 - i * 2); i = t++; infiniteRect(x + i, h / 2 + y + i, w - i * 2, h / 2 - i * 2); infiniteRect(x + i, h / 4 + y + i, w - i * 2, h / 2 - i * 2); } function weirdRect(x, y, w, h) { // well uhm.. some sort of rect const corner = 0.75 + Math.sin(x+y)/3; turtle.penup(); turtle.goto(x + corner,y); turtle.pendown(); turtle.goto(x + w - corner, y); turtle.circle(Math.PI, corner); turtle.goto(x + w, y + h - corner); turtle.goto(x - corner, y + h); turtle.circle(Math.PI, corner* 2); turtle.goto(x, y - corner); }