xxxxxxxxxx
1458
// noprotect
// kll copy from
// https://editor.p5js.org/full/ryzpqAjKm
// STG font by Kiel Mutschelknaus and Mark Chan
// LETTER
var typeX = 10;
var typeY = 30;
var typeStroke = 6;
var strX=10;
var strY=5;
var spacer = 20;
//menu
var typeXSlider,typeYSlider,typeStrokeSlider,strYSlider,strXSlider,spacerSlider, rectCheck, moveupCheck, yspeedSlider;
var linecount = 0; linedelta = typeY + strY + spacer;
var inX=100, inY=10;
var y0 = 400.0;
var y = y0;
var yspeed = 3;
// STRING
var inpText = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ\n -_.,/?!:;&\n 0123456789\n STARWARS theme\n ! can use mouseWheel and F1 !";
var chars = 0, shift=typeX + strX + spacer, posX=0;
var c=' ';
var rectshow = true;
var moveup = true;
// COLOR
var strkColor;
var bkgdColor;
var bkgdStrokeColor;
// test startwars theme
var textang=0.0;//=PI/4; // PI only works in setup and draw
// font
function preload() {
font = loadFont('https://assets.editor.p5js.org/5ba39caf95eebc0015245ce2/bfbe8776-60ee-4934-b00c-3ed212dda94f.otf');
}
// operation
var menu = false;
var mxpos=15,mypos=20,mdypos=40;
function menu_setup() {
textFont(font);
stroke(255); strokeWeight(1); fill(255);
mypos=20; mdypos=40;
typeXSlider = createSlider(0,100,typeX); typeXSlider.position(mxpos,mypos); typeXSlider.style('width','100px');
mypos += mdypos;
typeYSlider = createSlider(0,100,typeY); typeYSlider.position(mxpos,mypos); typeYSlider.style('width','100px');
mypos += mdypos;
typeStrokeSlider = createSlider(0,10,typeStroke,0.1); typeStrokeSlider.position(mxpos,mypos); typeStrokeSlider.style('width','100px');
mypos += mdypos;
strXSlider = createSlider(0,80,strX); strXSlider.position(mxpos,mypos); strXSlider.style('width','100px');
mypos += mdypos;
strYSlider = createSlider(0,80,strY); strYSlider.position(mxpos,mypos); strYSlider.style('width','100px');
mypos += mdypos;
spacerSlider = createSlider(0,80,spacer); spacerSlider.position(mxpos,mypos); spacerSlider.style('width','100px');
mypos += mdypos;
rectCheck = createCheckbox('',rectshow); rectCheck.position(mxpos,mypos);
mypos += mdypos;
yspeedSlider = createSlider(0,20,yspeed); yspeedSlider.position(mxpos,mypos); yspeedSlider.style('width','100px');
mypos += mdypos;
moveupCheck = createCheckbox('',moveup); moveupCheck.position(mxpos,mypos);
}
function menu_text_show(){
typeXSlider.show();
typeYSlider.show();
typeStrokeSlider.show();
strXSlider.show();
strYSlider.show();
spacerSlider.show();
rectCheck.show();
yspeedSlider.show();
moveupCheck.show();
textSize(11); textAlign(LEFT); fill(255,255,255);
push();
translate(-windowWidth/2,-windowHeight/2, 0);
mypos=13; mydpos=40;
text("TYPE: X-Size " + typeX,mxpos,mypos)
mypos += mdypos;
text("TYPE: Y-Size " + typeY,mxpos,mypos);
mypos += mdypos;
text("TYPE: Weight " + typeStroke,mxpos,mypos);
mypos += mdypos;
text("TYPE: strX " + strX,mxpos,mypos);
mypos += mdypos;
text("TYPE: strY " + strY,mxpos,mypos);
mypos += mdypos;
text("TYPE: space " + spacer,mxpos,mypos);
mypos += mdypos;
text("show rect ",mxpos,mypos);
mypos += mdypos;
text(" yspeed "+yspeed,mxpos,mypos);
mypos += mdypos;
text("move up",mxpos,mypos);
mypos += mdypos;
text(" ypos "+y,mxpos,mypos); // diag
pop();
typeX = typeXSlider.value();
typeY = typeYSlider.value();
typeStroke = typeStrokeSlider.value();
strX = strXSlider.value();
strY = strYSlider.value();
spacer = spacerSlider.value();
rectCheck.changed(rectshow_check);
yspeed = yspeedSlider.value();
moveupCheck.changed(moveshow_check);
}
function rectshow_check() { if(this.checked()){ rectshow=true; } else { rectshow=false; } }
function moveshow_check() { if(this.checked()){ moveup=true; } else { moveup=false;} }
function menu_slider_hide() {
typeXSlider.hide();
typeYSlider.hide();
typeStrokeSlider.hide();
strXSlider.hide();
strYSlider.hide();
spacerSlider.hide();
rectCheck.hide();
yspeedSlider.hide();
moveupCheck.hide();
}
function setup() {
createCanvas(windowWidth, windowHeight, WEBGL);
textFont(font);
strkColor = color(255, 255, 0);
bkgdColor = color(0, 0, 80);
bkgdStrokeColor = color(0, 0, 80);
background(bkgdColor);
smooth();
chars = inpText.length; print("chars "+chars);
textang = PI/5.0;
print("use mouseWheel for rotation and [F1] for menu ( after click on window)");
if (menu) { menu_setup(); }
}
function draw() {
background(bkgdColor);
if (menu) { menu_text_show(); }
fill(bkgdStrokeColor);
stroke(strkColor);
strokeWeight(typeStroke);
posX = inX;
linecount=0;
rotateX(textang);
translate(-windowWidth/2+inX,-windowHeight/2+inY, 0);
if (rectshow) { showrectangle(); }
showtext();
}
function mouseWheel(event) {
//print("mouseWheel "+event.delta);
textang += event.delta/50.0;
return false;
}
function keyPressed()
{
//print("keyPressed key "+key+" code "+keyCode);
if (key === "F1") {
menu = !menu;
if (menu) { menu_setup(); } else { menu_slider_hide(); }
print("F1 menu "+menu);
}
return false;
}
function showrectangle() {
fill(0,0,100);
stroke(255,0,0);
strokeWeight(2);
rect(0,0,windowWidth-2*inX,windowHeight-2*inY);
fill(bkgdStrokeColor);
stroke(strkColor);
strokeWeight(typeStroke);
}
function showtext() {
linedelta = typeY + strY + spacer;
shift=typeX + strX + spacer;
if (moveup) { translate(0,y,0); }
for (var i = 0; i < chars; i++) {
c = inpText.charAt(i);
STG_font(c);
posX += shift;
if ( ( posX > windowWidth-inX) || ( c === '\n') ) {
linecount++;
translate(-posX+shift+inX,linedelta,0); // start of next line
posX = inX;
} else {
translate(shift, 0, 0);
}
}
if (moveup) { y=y-yspeed; if ( y < -windowHeight) { y = windowHeight; } }
}
function STG_font(c) {
switch (c) {
case 'A': letter_A(); break;
case 'B': letter_B(); break;
case 'C': letter_C(); break;
case 'D': letter_D(); break;
case 'E': letter_E(); break;
case 'F': letter_F(); break;
case 'G': letter_G(); break;
case 'H': letter_H(); break;
case 'I': letter_I(); break;
case 'J': letter_J(); break;
case 'K': letter_K(); break;
case 'L': letter_L(); break;
case 'M': letter_M(); break;
case 'N': letter_N(); break;
case 'O': letter_O(); break;
case 'P': letter_P(); break;
case 'Q': letter_Q(); break;
case 'R': letter_R(); break;
case 'S': letter_S(); break;
case 'T': letter_T(); break;
case 'U': letter_U(); break;
case 'V': letter_V(); break;
case 'W': letter_W(); break;
case 'X': letter_X(); break;
case 'Y': letter_Y(); break;
case 'Z': letter_Z(); break;
case 'a': letter_a(); break;
case 'b': letter_b(); break;
case 'c': letter_c(); break;
case 'd': letter_d(); break;
case 'e': letter_e(); break;
case 'f': letter_f(); break;
case 'g': letter_g(); break;
case 'h': letter_h(); break;
case 'i': letter_i(); break;
case 'j': letter_j(); break;
case 'k': letter_k(); break;
case 'l': letter_l(); break;
case 'm': letter_m(); break;
case 'n': letter_n(); break;
case 'o': letter_o(); break;
case 'p': letter_p(); break;
case 'q': letter_q(); break;
case 'r': letter_r(); break;
case 's': letter_s(); break;
case 't': letter_t(); break;
case 'u': letter_u(); break;
case 'v': letter_v(); break;
case 'w': letter_w(); break;
case 'x': letter_x(); break;
case 'y': letter_y(); break;
case 'z': letter_z(); break;
case '_': letter_underscore(); break;
case '-': letter_dash(); break;
case '?': letter_question(); break;
case '.': letter_period(); break;
case '!': letter_exclaim(); break;
case ' ': letter_space(); break;
case ':': letter_colon(); break;
case ',': letter_comma(); break;
case '/': letter_slash(); break;
case '&': letter_amp(); break;
case ';': letter_semicolon(); break;
case '0': letter_0(); break;
case '1': letter_1(); break;
case '2': letter_2(); break;
case '3': letter_3(); break;
case '4': letter_4(); break;
case '5': letter_5(); break;
case '6': letter_6(); break;
case '7': letter_7(); break;
case '8': letter_8(); break;
case '9': letter_9(); break;
}
}
/////////////////////////////////////////////////// LETTERS
function letter_A() {
push();
beginShape();
vertex(0, typeY + strY);
vertex(typeX / 2 + strX / 2, 0);
vertex(typeX + strX, typeY + strY);
endShape();
ang = atan((typeX / 2 + strX / 2) / (typeY + strY));
angX = tan(ang) * (typeY / 3);
line(angX, 2 * typeY / 3 + strY, typeX + strX - angX, 2 * typeY / 3 + strY);
pop();
}
function letter_a() {
push();
beginShape();
vertex(typeX + strX, typeY + strY);
vertex(typeX + strX, typeY / 2);
bezierVertex(typeX + strX, typeY / 2, typeX + strX, typeY / 4, typeX / 2 + strX, typeY / 4);
vertex(typeX / 2, typeY / 4);
bezierVertex(0, typeY / 4, 0, typeY / 2, 0, typeY / 2);
endShape();
beginShape();
vertex(typeX + strX, 3 * typeY / 4 + strY);
vertex(typeX + strX, 3 * typeY / 4);
bezierVertex(typeX + strX, 3 * typeY / 4, typeX + strX, typeY / 2, typeX / 2 + strX, typeY / 2);
vertex(typeX / 2, typeY / 2);
bezierVertex(0, typeY / 2, 0, 3 * typeY / 4, 0, 3 * typeY / 4);
vertex(0, 3 * typeY / 4 + strY);
bezierVertex(0, 3 * typeY / 4 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 3 * typeY / 4 + strY, typeX + strX, 3 * typeY / 4 + strY);
vertex(typeX + strX, typeY / 2);
endShape();
pop();
}
function letter_B() {
push();
beginShape();
vertex(0, typeY + strY);
vertex(0, 0);
vertex(typeX / 2 + strX, 0);
bezierVertex(typeX / 2 + strX, 0, typeX + strX, 0, typeX + strX, typeY / 4);
vertex(typeX + strX, typeY / 4 + strY / 2);
bezierVertex(typeX + strX, typeY / 2 + strY / 2, typeX / 2 + strX / 2, typeY / 2 + strY / 2, typeX / 2 + strX / 2, typeY / 2 + strY / 2);
vertex(0, typeY / 2 + strY / 2);
endShape();
//repeat top hump
push();
translate(0, typeY / 2 + strY / 2);
beginShape();
vertex(0, 0);
vertex(typeX / 2 + strX, 0);
bezierVertex(typeX / 2 + strX, 0, typeX + strX, 0, typeX + strX, typeY / 4);
vertex(typeX + strX, typeY / 4 + strY / 2);
bezierVertex(typeX + strX, typeY / 2 + strY / 2, typeX / 2 + strX / 2, typeY / 2 + strY / 2, typeX / 2 + strX / 2, typeY / 2 + strY / 2);
vertex(0, typeY / 2 + strY / 2);
endShape();
pop();
pop();
}
function letter_b() {
push();
beginShape();
vertex(typeX + strX, typeY / 2);
bezierVertex(typeX + strX, typeY / 2, typeX + strX, typeY / 4, typeX / 2 + strX, typeY / 4);
vertex(typeX / 2, typeY / 4);
bezierVertex(0, typeY / 4, 0, typeY / 2, 0, typeY / 2);
vertex(0, 3 * typeY / 4 + strY);
bezierVertex(0, 3 * typeY / 4 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 3 * typeY / 4 + strY, typeX + strX, 3 * typeY / 4 + strY);
vertex(typeX + strX, typeY / 2);
endShape();
line(0, 0, 0, typeY + strY);
pop();
}
function letter_C() {
push();
beginShape();
vertex(typeX + strX, typeY / 3);
bezierVertex(typeX + strX, typeY / 3, typeX + strX, 0, typeX / 2 + strX, 0);
vertex(typeX / 2, 0);
bezierVertex(0, 0, 0, typeY / 3, 0, typeY / 3);
vertex(0, 2 * typeY / 3 + strY);
bezierVertex(0, 2 * typeY / 3 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 2 * typeY / 3 + strY, typeX + strX, 2 * typeY / 3 + strY);
endShape();
pop();
}
function letter_c() {
push();
beginShape();
vertex(typeX + strX, typeY / 2);
bezierVertex(typeX + strX, typeY / 2, typeX + strX, typeY / 4, typeX / 2 + strX, typeY / 4);
vertex(typeX / 2, typeY / 4);
bezierVertex(0, typeY / 4, 0, typeY / 2, 0, typeY / 2);
vertex(0, 3 * typeY / 4 + strY);
bezierVertex(0, 3 * typeY / 4 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 3 * typeY / 4 + strY, typeX + strX, 3 * typeY / 4 + strY);
endShape();
pop();
}
function letter_D() {
push();
beginShape();
vertex(typeX + strX, typeY / 3);
bezierVertex(typeX + strX, typeY / 3, typeX + strX, 0, typeX / 2 + strX, 0);
vertex(0, 0);
vertex(0, typeY + strY);
vertex(typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 2 * typeY / 3 + strY, typeX + strX, 2 * typeY / 3 + strY);
vertex(typeX + strX, typeY / 3);
endShape();
pop();
}
function letter_d() {
push();
beginShape();
vertex(typeX + strX, typeY / 2);
bezierVertex(typeX + strX, typeY / 2, typeX + strX, typeY / 4, typeX / 2 + strX, typeY / 4);
vertex(typeX / 2, typeY / 4);
bezierVertex(0, typeY / 4, 0, typeY / 2, 0, typeY / 2);
vertex(0, 3 * typeY / 4 + strY);
bezierVertex(0, 3 * typeY / 4 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 3 * typeY / 4 + strY, typeX + strX, 3 * typeY / 4 + strY);
vertex(typeX + strX, typeY / 2);
endShape();
line(typeX + strX, 0, typeX + strX, typeY + strY);
pop();
}
function letter_E() {
push();
beginShape();
vertex(typeX + strX, 0);
vertex(0, 0);
vertex(0, typeY + strY);
vertex(typeX + strX, typeY + strY);
endShape();
line(0, typeY / 2 + strY / 2, 2 * typeX / 3 + strX, typeY / 2 + strY / 2);
pop();
}
function letter_e() {
push();
beginShape();
vertex(0, 5 * typeY / 8 + strY / 2);
vertex(typeX + strX, 5 * typeY / 8 + strY / 2);
vertex(typeX + strX, typeY / 2);
bezierVertex(typeX + strX, typeY / 2, typeX + strX, typeY / 4, typeX / 2 + strX, typeY / 4);
vertex(typeX / 2, typeY / 4);
bezierVertex(0, typeY / 4, 0, typeY / 2, 0, typeY / 2);
vertex(0, 3 * typeY / 4 + strY);
bezierVertex(0, 3 * typeY / 4 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 3 * typeY / 4 + strY, typeX + strX, 3 * typeY / 4 + strY);
endShape();
pop();
}
function letter_F() {
push();
beginShape();
vertex(typeX + strX, 0);
vertex(0, 0);
vertex(0, typeY + strY);
endShape();
line(0, typeY / 2 + strY / 2, 2 * typeX / 3 + strX, typeY / 2 + strY / 2);
pop();
}
function letter_f() {
push();
beginShape();
vertex(typeX / 2 + strX / 2, typeY + strY);
vertex(typeX / 2 + strX / 2, typeY / 4);
bezierVertex(typeX / 2 + strX / 2, typeY / 4, typeX / 2 + strX / 2, 0, typeX + strX / 2, 0);
vertex(typeX + strX, 0);
endShape();
line(0, typeY / 2 + strY / 2, typeX + strX, typeY / 2 + strY / 2);
line(0, typeY + strY, typeX + strX, typeY + strY);
pop();
}
function letter_G() {
push();
beginShape();
vertex(typeX + strX, typeY / 3);
bezierVertex(typeX + strX, typeY / 3, typeX + strX, 0, typeX / 2 + strX, 0);
vertex(typeX / 2, 0);
bezierVertex(0, 0, 0, typeY / 3, 0, typeY / 3);
vertex(0, 2 * typeY / 3 + strY);
bezierVertex(0, 2 * typeY / 3 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 2 * typeY / 3 + strY, typeX + strX, 2 * typeY / 3 + strY);
endShape();
beginShape();
vertex(typeX / 2 + strX / 2, typeY / 2 + strY / 2);
vertex(typeX + strX, typeY / 2 + strY / 2);
vertex(typeX + strX, typeY + strY);
endShape();
pop();
}
function letter_g() {
push();
beginShape();
vertex(typeX + strX, typeY / 2);
bezierVertex(typeX + strX, typeY / 2, typeX + strX, typeY / 4, typeX / 2 + strX, typeY / 4);
vertex(typeX / 2, typeY / 4);
bezierVertex(0, typeY / 4, 0, typeY / 2, 0, typeY / 2);
vertex(0, typeY / 2 + strY);
bezierVertex(0, typeY / 2 + strY, 0, 3 * typeY / 4 + strY, typeX / 2, 3 * typeY / 4 + strY);
vertex(typeX / 2 + strX, 3 * typeY / 4 + strY);
bezierVertex(typeX + strX, 3 * typeY / 4 + strY, typeX + strX, typeY / 2 + strY, typeX + strX, typeY / 2 + strY);
vertex(typeX + strX, typeY / 2);
endShape();
beginShape();
vertex(typeX / 2 + strX / 2, 3 * typeY / 4 + strY);
vertex(typeX + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 5 * typeY / 4 + strY, typeX / 2 + strX, 5 * typeY / 4 + strY);
vertex(typeX / 2, 5 * typeY / 4 + strY);
bezierVertex(0, 5 * typeY / 4 + strY, 0, typeY + strY, 0, typeY + strY);
endShape();
line(typeX / 2 + strX / 2, typeY / 4, typeX + strX, typeY / 4);
pop();
}
function letter_H() {
push();
line(0, 0, 0, typeY + strY);
line(0, typeY / 2 + strY / 2, typeX + strX, typeY / 2 + strY / 2);
line(typeX + strX, 0, typeX + strX, typeY + strY);
pop();
}
function letter_h() {
push();
beginShape();
vertex(typeX + strX, typeY + strY);
vertex(typeX + strX, typeY / 2);
bezierVertex(typeX + strX, typeY / 2, typeX + strX, typeY / 4, typeX / 2 + strX, typeY / 4);
vertex(typeX / 2, typeY / 4);
bezierVertex(0, typeY / 4, 0, typeY / 2, 0, typeY / 2);
vertex(0, typeY + strY);
endShape();
line(0, 0, 0, typeY + strY);
pop();
}
function letter_I() {
push();
line(0, 0, typeX + strX, 0);
line(0, typeY + strY, typeX + strX, typeY + strY);
line(typeX / 2 + strX / 2, 0, typeX / 2 + strX / 2, typeY + strY);
pop();
}
function letter_i() {
push();
beginShape();
vertex(0, typeY / 4);
vertex(typeX / 2 + strX / 2, typeY / 4);
vertex(typeX / 2 + strX / 2, typeY + strY);
endShape();
line(0, typeY + strY, typeX + strX, typeY + strY);
line(typeX / 2 + strX / 2, 0, typeX / 2 + strX / 2, typeY / 8);
pop();
}
function letter_J() {
push();
beginShape();
vertex(0, 2 * typeY / 3 + strY);
bezierVertex(0, 2 * typeY / 3 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 2 * typeY / 3 + strY, typeX + strX, 2 * typeY / 3 + strY);
vertex(typeX + strX, 0);
vertex(typeX / 3, 0);
endShape();
pop();
}
function letter_j() {
push();
beginShape();
vertex(typeX / 4, typeY / 4);
vertex(3 * typeX / 4 + strX, typeY / 4);
vertex(3 * typeX / 4 + strX, typeY + strY);
bezierVertex(3 * typeX / 4 + strX, typeY + strY, 3 * typeX / 4 + strX, 5 * typeY / 4 + strY, typeX / 4 + strX, 5 * typeY / 4 + strY);
vertex(0, 5 * typeY / 4 + strY);
endShape();
line(3 * typeX / 4 + strX, 0, 3 * typeX / 4 + strX, typeY / 8);
pop();
}
function letter_K() {
push();
line(0, 0, 0, typeY + strY);
line(0, 2 * typeY / 3 + strY, typeX + strX, 0);
ang = atan((2 * typeY / 3 + strY) / (typeX + strX));
angX = (typeY / 2 + strY / 2) / tan(ang);
line(typeX + strX - angX, typeY / 2 + strY / 2, typeX + strX, typeY + strY);
pop();
}
function letter_k() {
push();
line(0, 0, 0, typeY + strY);
line(typeX + strX, typeY / 4, 0, 3 * typeY / 4 + strY);
line(typeX + strX, typeY + strY, typeX / 2 + strX / 2, typeY / 2 + strY / 2);
pop();
}
function letter_L() {
push();
beginShape();
vertex(0, 0);
vertex(0, typeY + strY);
vertex(typeX + strX, typeY + strY);
endShape();
pop();
}
function letter_l() {
push();
beginShape();
vertex(0, 0);
vertex(typeX / 2 + strX / 2, 0);
vertex(typeX / 2 + strX / 2, typeY + strY);
endShape();
line(0, typeY + strY, typeX + strX, typeY + strY);
pop();
}
function letter_M() {
push();
beginShape();
vertex(0, typeY + strY);
vertex(0, 0);
vertex(typeX / 2 + strX / 2, 2 * typeY / 3 + strY);
vertex(typeX + strX, 0);
vertex(typeX + strX, typeY + strY);
endShape();
pop();
}
function letter_m() {
push();
line(0, typeY / 4, 0, typeY + strY);
//left Hump
beginShape();
vertex(0, 3 * typeY / 8);
bezierVertex(0, 3 * typeY / 8, 0, typeY / 4, typeX / 4, typeY / 4);
vertex(typeX / 4 + strX / 2, typeY / 4);
bezierVertex(typeX / 2 + strX / 2, typeY / 4, typeX / 2 + strX / 2, 3 * typeY / 8, typeX / 2 + strX / 2, 3 * typeY / 8);
vertex(typeX / 2 + strX / 2, typeY + strY);
endShape();
translate(typeX / 2 + strX / 2, 0);
beginShape();
vertex(0, 3 * typeY / 8);
bezierVertex(0, 3 * typeY / 8, 0, typeY / 4, typeX / 4, typeY / 4);
vertex(typeX / 4 + strX / 2, typeY / 4);
bezierVertex(typeX / 2 + strX / 2, typeY / 4, typeX / 2 + strX / 2, 3 * typeY / 8, typeX / 2 + strX / 2, 3 * typeY / 8);
vertex(typeX / 2 + strX / 2, typeY + strY);
endShape();
pop();
}
function letter_N() {
push();
beginShape();
vertex(0, typeY + strY);
vertex(0, 0);
vertex(typeX + strX, typeY + strY);
vertex(typeX + strX, 0);
endShape();
pop();
}
function letter_n() {
push();
line(0, typeY / 4, 0, typeY + strY);
beginShape();
vertex(typeX + strX, typeY + strY);
vertex(typeX + strX, typeY / 2);
bezierVertex(typeX + strX, typeY / 2, typeX + strX, typeY / 4, typeX / 2 + strX, typeY / 4);
vertex(typeX / 2, typeY / 4);
bezierVertex(0, typeY / 4, 0, typeY / 2, 0, typeY / 2);
endShape();
pop();
}
function letter_O() {
push();
beginShape();
vertex(typeX + strX, typeY / 3);
bezierVertex(typeX + strX, typeY / 3, typeX + strX, 0, typeX / 2 + strX, 0);
vertex(typeX / 2, 0);
bezierVertex(0, 0, 0, typeY / 3, 0, typeY / 3);
vertex(0, 2 * typeY / 3 + strY);
bezierVertex(0, 2 * typeY / 3 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 2 * typeY / 3 + strY, typeX + strX, 2 * typeY / 3 + strY);
vertex(typeX + strX, typeY / 3);
endShape();
pop();
}
function letter_o() {
push();
beginShape();
vertex(typeX + strX, typeY / 2);
bezierVertex(typeX + strX, typeY / 2, typeX + strX, typeY / 4, typeX / 2 + strX, typeY / 4);
vertex(typeX / 2, typeY / 4);
bezierVertex(0, typeY / 4, 0, typeY / 2, 0, typeY / 2);
vertex(0, 3 * typeY / 4 + strY);
bezierVertex(0, 3 * typeY / 4 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 3 * typeY / 4 + strY, typeX + strX, 3 * typeY / 4 + strY);
vertex(typeX + strX, typeY / 2);
endShape();
pop();
}
function letter_P() {
push();
beginShape();
vertex(0, typeY + strY);
vertex(0, 0);
vertex(typeX / 2 + strX, 0);
bezierVertex(typeX / 2 + strX, 0, typeX + strX, 0, typeX + strX, typeY / 3);
vertex(typeX + strX, typeY / 3 + strY / 2);
bezierVertex(typeX + strX, typeY / 2 + strY / 2, typeX / 2 + strX / 2, typeY / 2 + strY / 2, typeX / 2 + strX / 2, typeY / 2 + strY / 2);
vertex(0, typeY / 2 + strY / 2);
endShape();
pop();
}
function letter_p() {
push();
line(0, typeY / 4, 0, 5 * typeY / 4 + strY);
beginShape();
vertex(typeX + strX, typeY / 2);
bezierVertex(typeX + strX, typeY / 2, typeX + strX, typeY / 4, typeX / 2 + strX, typeY / 4);
vertex(typeX / 2, typeY / 4);
bezierVertex(0, typeY / 4, 0, typeY / 2, 0, typeY / 2);
vertex(0, 3 * typeY / 4 + strY);
bezierVertex(0, 3 * typeY / 4 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 3 * typeY / 4 + strY, typeX + strX, 3 * typeY / 4 + strY);
vertex(typeX + strX, typeY / 2);
endShape();
pop();
}
function letter_Q() {
push();
beginShape();
vertex(typeX + strX, typeY / 3);
bezierVertex(typeX + strX, typeY / 3, typeX + strX, 0, typeX / 2 + strX, 0);
vertex(typeX / 2, 0);
bezierVertex(0, 0, 0, typeY / 3, 0, typeY / 3);
vertex(0, 2 * typeY / 3 + strY);
bezierVertex(0, 2 * typeY / 3 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 2 * typeY / 3 + strY, typeX + strX, 2 * typeY / 3 + strY);
vertex(typeX + strX, typeY / 3);
endShape();
line(typeX / 2 + strX / 2, typeY / 2 + strY, typeX + strX, typeY + strY);
pop();
}
function letter_q() {
push();
line(typeX + strX, typeY / 4, typeX + strX, 5 * typeY / 4 + strY);
beginShape();
vertex(typeX + strX, typeY / 2);
bezierVertex(typeX + strX, typeY / 2, typeX + strX, typeY / 4, typeX / 2 + strX, typeY / 4);
vertex(typeX / 2, typeY / 4);
bezierVertex(0, typeY / 4, 0, typeY / 2, 0, typeY / 2);
vertex(0, 3 * typeY / 4 + strY);
bezierVertex(0, 3 * typeY / 4 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 3 * typeY / 4 + strY, typeX + strX, 3 * typeY / 4 + strY);
vertex(typeX + strX, typeY / 2);
endShape();
pop();
}
function letter_R() {
push();
beginShape();
vertex(0, typeY + strY);
vertex(0, 0);
vertex(typeX / 2 + strX, 0);
bezierVertex(typeX / 2 + strX, 0, typeX + strX, 0, typeX + strX, typeY / 3);
vertex(typeX + strX, typeY / 3 + strY / 2);
bezierVertex(typeX + strX, typeY / 2 + strY / 2, typeX / 2 + strX / 2, typeY / 2 + strY / 2, typeX / 2 + strX / 2, typeY / 2 + strY / 2);
vertex(0, typeY / 2 + strY / 2);
endShape();
line(typeX / 2 + strX / 2, typeY / 2 + strY / 2, typeX + strX, typeY + strY);
pop();
}
function letter_r() {
push();
beginShape();
vertex(typeX + strX, typeY / 2);
bezierVertex(typeX + strX, typeY / 2, typeX + strX, typeY / 4, typeX / 2 + strX, typeY / 4);
vertex(typeX / 2, typeY / 4);
bezierVertex(0, typeY / 4, 0, typeY / 2, 0, typeY / 2);
endShape();
line(0, typeY / 4, 0, typeY + strY);
pop();
}
function letter_S() {
push();
beginShape();
vertex(typeX + strX, typeY / 4);
bezierVertex(typeX + strX, typeY / 4, typeX + strX, 0, typeX / 2 + strX, 0);
vertex(typeX / 2, 0);
bezierVertex(0, 0, 0, typeY / 4, 0, typeY / 4);
bezierVertex(0, 2 * typeY / 3 + strY, typeX + strX, typeY / 3, typeX + strX, 3 * typeY / 4 + strY);
bezierVertex(typeX + strX, 3 * typeY / 4 + strY, typeX + strX, typeY + strY, typeX / 2 + strX, typeY + strY);
vertex(typeX / 2, typeY + strY);
bezierVertex(0, typeY + strY, 0, 2 * typeY / 3 + strY, 0, 2 * typeY / 3 + strY);
endShape();
pop();
}
function letter_s() {
push();
beginShape();
vertex(7 * typeX / 8 + strX, 3 * typeY / 8);
bezierVertex(7 * typeX / 8 + strX, 3 * typeY / 8, 7 * typeX / 8 + strX, typeY / 4, typeX / 2 + strX, typeY / 4);
vertex(typeX / 2, typeY / 4);
bezierVertex(typeX / 8, typeY / 4, typeX / 8, 3 * typeY / 8, typeX / 8, 3 * typeY / 8);
bezierVertex(typeX / 8, 5 * typeY / 8 + strY, typeX + strX, 3 * typeY / 8, typeX + strX, 3 * typeY / 4 + strY);
bezierVertex(typeX + strX, 3 * typeY / 4 + strY, typeX + strX, typeY + strY, typeX / 2 + strX, typeY + strY);
vertex(typeX / 2, typeY + strY);
bezierVertex(0, typeY + strY, 0, 3 * typeY / 4 + strY, 0, 3 * typeY / 4 + strY);
endShape();
pop();
}
function letter_T() {
push();
line(0, 0, typeX + strX, 0);
line(typeX / 2 + strX / 2, 0, typeX / 2 + strX / 2, typeY + strY);
pop();
}
function letter_t() {
push();
line(0, typeY / 4, typeX + strX, typeY / 4);
beginShape();
vertex(typeX / 2 + strX / 2, 0);
vertex(typeX / 2 + strX / 2, 3 * typeY / 4 + strY);
bezierVertex(typeX / 2 + strX / 2, 3 * typeY / 4 + strY, typeX / 2 + strX / 2, typeY + strY, 3 * typeX / 4 + strX / 2, typeY + strY);
vertex(typeX + strX, typeY + strY);
endShape();
pop();
}
function letter_U() {
push();
beginShape();
vertex(0, 0);
vertex(0, 2 * typeY / 3 + strY);
bezierVertex(0, 2 * typeY / 3 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 2 * typeY / 3 + strY, typeX + strX, 2 * typeY / 3 + strY);
vertex(typeX + strX, 0);
endShape();
pop();
}
function letter_u() {
push();
line(typeX + strX, typeY / 4, typeX + strX, typeY + strY);
beginShape();
vertex(0, typeY / 4);
vertex(0, 3 * typeY / 4 + strY);
bezierVertex(0, 3 * typeY / 4 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 3 * typeY / 4 + strY, typeX + strX, 3 * typeY / 4 + strY);
endShape();
pop();
}
function letter_V() {
push();
beginShape();
vertex(0, 0);
vertex(typeX / 2 + strX / 2, typeY + strY);
vertex(typeX + strX, 0);
endShape();
pop();
}
function letter_v() {
push();
beginShape();
vertex(0, typeY / 4);
vertex(typeX / 2 + strX / 2, typeY + strY);
vertex(typeX + strX, typeY / 4);
endShape();
pop();
}
function letter_W() {
push();
beginShape();
vertex(0, 0);
vertex(typeX / 4, typeY + strY);
vertex(typeX / 2 + strX / 2, typeY / 3);
vertex(3 * typeX / 4 + strX, typeY + strY);
vertex(typeX + strX, 0);
endShape();
pop();
}
function letter_w() {
push();
beginShape();
vertex(0, typeY / 4);
vertex(typeX / 4 + strX / 4, typeY + strY);
vertex(typeX / 2 + strX / 2, typeY / 2 + strY / 2);
vertex(3 * typeX / 4 + 3 * strX / 4, typeY + strY);
vertex(typeX + strX, typeY / 4);
endShape();
pop();
}
function letter_X() {
push();
line(0, 0, typeX + strX, typeY + strY);
line(0, typeY + strY, typeX + strX, 0);
pop();
}
function letter_x() {
push();
line(0, typeY / 4, typeX + strX, typeY + strY);
line(0, typeY + strY, typeX + strX, typeY / 4);
pop();
}
function letter_Y() {
push();
beginShape();
vertex(0, 0);
vertex(typeX / 2 + strX / 2, typeY / 2 + strY / 2);
vertex(typeX + strX, 0);
endShape();
line(typeX / 2 + strX / 2, typeY / 2 + strY / 2, typeX / 2 + strX / 2, typeY + strY);
pop();
}
function letter_y() {
push();
beginShape();
vertex(0, typeY / 4);
vertex(typeX / 2 + strX / 2, typeY + strY);
vertex(typeX + strX, typeY / 4);
endShape();
beginShape();
vertex(typeX / 2 + strX / 2, typeY + strY);
bezierVertex(typeX / 2 + strX / 2, typeY + strY, typeX / 2 + strX / 2, 5 * typeY / 4 + strY, strX / 2, 5 * typeY / 4 + strY);
vertex(0, 5 * typeY / 4 + strY);
endShape();
pop();
}
function letter_Z() {
push();
beginShape();
vertex(0, 0);
vertex(typeX + strX, 0);
vertex(0, typeY + strY);
vertex(typeX + strX, typeY + strY);
endShape();
pop();
}
function letter_z() {
push();
beginShape();
vertex(0, typeY / 4);
vertex(typeX + strX, typeY / 4);
vertex(0, typeY + strY);
vertex(typeX + strX, typeY + strY);
endShape();
pop();
}
function letter_underscore() {
push();
line(0, typeY + strY, typeX + strX, typeY + strY);
pop();
}
function letter_dash() {
push();
line(0, typeY / 2 + strY / 2, typeX + strX, typeY / 2 + strY / 2);
pop();
}
function letter_question() {
push();
beginShape();
vertex(0, typeY / 3);
bezierVertex(0, typeY / 3, 0, 0, typeX / 2, 0);
vertex(typeX / 2 + strX, 0);
bezierVertex(typeX + strX, 0, typeX + strX, typeY / 3, typeX + strX, typeY / 3);
vertex(typeX + strX, typeY / 3 + strY);
bezierVertex(typeX + strX, typeY / 3 + strY, typeX + strX, typeY / 3 + typeY / 4 + strY, typeX / 2 + strX / 2, typeY / 3 + typeY / 4 + strY);
vertex(typeX / 2 + strX / 2, 3 * typeY / 4 + strY);
endShape();
line(typeX / 2 + strX / 2, 7 * typeY / 8 + strY, typeX / 2 + strX / 2, typeY + strY);
pop();
}
function letter_period() {
push();
line(typeX / 2 + strX / 2, 7 * typeY / 8 + strY, typeX / 2 + strX / 2, typeY + strY);
pop();
}
function letter_colon() {
push();
line(typeX / 2 + strX / 2, typeY / 2 + strY / 2 - typeY / 8, typeX / 2 + strX / 2, typeY / 2 + strY / 2);
line(typeX / 2 + strX / 2, 7 * typeY / 8 + strY, typeX / 2 + strX / 2, typeY + strY);
pop();
}
function letter_semicolon() {
push();
line(typeX / 2 + strX / 2, typeY / 2 + strY / 2 - typeY / 8, typeX / 2 + strX / 2, typeY / 2 + strY / 2);
line(typeX / 2 + strX / 2, 7 * typeY / 8 + strY, typeX / 2 + strX / 2 - typeX / 4, typeY + strY);
pop();
}
function letter_comma() {
push();
line(typeX / 2 + strX / 2, 7 * typeY / 8 + strY, typeX / 2 + strX / 2 - typeX / 4, typeY + strY);
pop();
}
function letter_exclaim() {
push();
line(typeX / 2 + strX / 2, 0, typeX / 2 + strX / 2, 3 * typeY / 4 + strY);
line(typeX / 2 + strX / 2, 7 * typeY / 8 + strY, typeX / 2 + strX / 2, typeY + strY);
pop();
}
function letter_slash() {
push();
line(0, typeY + strY, typeX + strX, 0);
pop();
}
function letter_amp() {
push();
beginShape();
vertex(typeX + strX, typeY + strY);
quadraticVertex(typeX / 8, typeY / 4, typeX / 8, typeY / 8);
quadraticVertex(typeX / 8, 0, 3 * typeX / 8, 0);
vertex(3 * typeX / 8 + strX, 0);
bezierVertex(5 * typeX / 8 + strX, 0, 5 * typeX / 8 + strX, typeY / 8, 5 * typeX / 8 + strX, typeY / 8);
bezierVertex(5 * typeX / 8 + strX, typeY / 4, 0, typeY / 2 + strY, 0, 3 * typeY / 4 + strY);
quadraticVertex(0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, typeY / 2 + strY / 2, typeX + strX, typeY / 2 + strY / 2);
vertex(3 * typeX / 4 + strX, typeY / 2 + strY / 2);
endShape();
pop();
}
function letter_space() {
push();
pop();
}
function letter_0() {
push();
beginShape();
vertex(typeX + strX, typeY / 3);
bezierVertex(typeX + strX, typeY / 3, typeX + strX, 0, typeX / 2 + strX, 0);
vertex(typeX / 2, 0);
bezierVertex(0, 0, 0, typeY / 3, 0, typeY / 3);
vertex(0, 2 * typeY / 3 + strY);
bezierVertex(0, 2 * typeY / 3 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 2 * typeY / 3 + strY, typeX + strX, 2 * typeY / 3 + strY);
vertex(typeX + strX, typeY / 3);
endShape();
line( 0,(typeY+strY-3),typeX+strX,(typeY+strY)/8);
pop();
}
function letter_1() {
push();
beginShape();
vertex(0,typeY/3);
vertex(typeX / 2 + strX / 2, 0);
vertex(typeX / 2 + strX / 2, typeY + strY);
endShape();
line(0, typeY + strY, typeX + strX, typeY + strY);
pop();
}
function letter_2() {
push();
beginShape();
vertex(0, typeY / 3);
bezierVertex(0, typeY / 3, 0, 0, typeX / 2, 0);
vertex(typeX / 2 + strX, 0);
bezierVertex(typeX + strX, 0, typeX + strX, typeY / 3, typeX + strX, typeY / 3);
vertex(typeX + strX, typeY / 3 + strY);
vertex(0,typeY + strY);
endShape();
line(0,typeY + strY, typeX + strX+3, typeY + strY);
pop();
}
function letter_3() {
push();
beginShape();
vertex(0, 0);
vertex(typeX / 2 + strX, 0);
bezierVertex(typeX / 2 + strX, 0, typeX + strX, 0, typeX + strX, typeY / 4);
vertex(typeX + strX, typeY / 4 + strY / 2);
bezierVertex(typeX + strX, typeY / 2 + strY / 2, typeX / 2 + strX / 2, typeY / 2 + strY / 2, typeX / 2 + strX / 2, typeY / 2 + strY / 2);
vertex(0, typeY / 2 + strY / 2);
endShape();
//repeat top hump
push();
translate(0, typeY / 2 + strY / 2);
beginShape();
vertex(0, 0);
vertex(typeX / 2 + strX, 0);
bezierVertex(typeX / 2 + strX, 0, typeX + strX, 0, typeX + strX, typeY / 4);
vertex(typeX + strX, typeY / 4 + strY / 2);
bezierVertex(typeX + strX, typeY / 2 + strY / 2, typeX / 2 + strX / 2, typeY / 2 + strY / 2, typeX / 2 + strX / 2, typeY / 2 + strY / 2);
vertex(0, typeY / 2 + strY / 2);
endShape();
pop();
pop();
}
function letter_4() {
push();
line( 0,(typeY+strY)/2,typeX+strX,(typeY+strY)/2);
line( 0,(typeY+strY)/2,typeX+strX,0);
line( (typeX+strX),0,(typeX+strX),(typeY+strY));
pop();
}
function letter_5() {
push();
beginShape();
vertex(typeX + strX, typeY / 8);
bezierVertex(typeX + strX, typeY / 8, typeX + strX, 0, typeX / 2 + strX, 0);
vertex(typeX / 2, 0);
bezierVertex(0, 0, 0, typeY / 3, 0, typeY / 3);
vertex(0, typeY / 2 + strY/2);
bezierVertex(0, typeY / 2 + strY/2, 0, (typeY + strY)/2, typeX / 2, (typeY + strY)/2);
vertex(typeX + strX, (typeY + strY)/2);
vertex(typeX + strX, typeY +strY);
vertex(0, typeY +strY);
endShape();
pop();
}
function letter_6() {
push();
beginShape();
vertex(typeX + strX, typeY / 6);
bezierVertex(typeX + strX, typeY / 3, typeX + strX, 0, typeX / 2 + strX, 0);
vertex(typeX / 2, 0);
bezierVertex(0, 0, 0, typeY / 3, 0, typeY / 3);
vertex(0, 2 * typeY / 3 + strY);
bezierVertex(0, 2 * typeY / 3 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 2 * typeY / 3 + strY, typeX + strX, 2 * typeY / 3 + strY);
vertex(typeX + strX, typeY/2+strY/2 );
bezierVertex(typeX + strX, typeY/2+strY/2, typeX + strX, 2 * typeY / 3 + strY, typeX + strX, (typeY + strY)/2);
vertex(0, typeY/2+strY/2 );
endShape();
pop();
}
function letter_7() {
push();
line( 0,0,typeX+strX,0);
line( (typeX+strX),0,(typeX+strX),(typeY+strY));
pop();
}
function letter_8() {
push();
beginShape();
vertex(typeX + strX, typeY / 3);
bezierVertex(typeX + strX, typeY / 3, typeX + strX, 0, typeX / 2 + strX, 0);
vertex(typeX / 2, 0);
bezierVertex(0, 0, 0, typeY / 3, 0, typeY / 3);
vertex(0, 2 * typeY / 3 + strY);
bezierVertex(0, 2 * typeY / 3 + strY, 0, typeY + strY, typeX / 2, typeY + strY);
vertex(typeX / 2 + strX, typeY + strY);
bezierVertex(typeX + strX, typeY + strY, typeX + strX, 2 * typeY / 3 + strY, typeX + strX, 2 * typeY / 3 + strY);
vertex(typeX + strX, typeY / 3);
endShape();
line( 0,(typeY+strY)/2,typeX+strX,(typeY+strY)/2);
pop();
}
function letter_9() {
push();
beginShape();
vertex(typeX/3+strX/3,typeY+strY);
vertex(typeX + strX, typeY / 3);
bezierVertex(typeX + strX, typeY / 3, typeX + strX, 0, typeX / 2 + strX, 0);
vertex(typeX / 2, 0);
bezierVertex(0, 0, 0, typeY / 3, 0, typeY / 3);
vertex(0, typeY / 2 + strY/2);
vertex(typeX + strX-3, typeY /2+ strY/2);
endShape();
pop();
}