/*
asciimo.js - written by Marak Squires
saved from the internet @ http://patorjk.com/software/taag/
i had to do unholy things to make the original code work, seriously.
check the commit logs on github and you'll see how much "code" i had to delete and refactor.
what's left isnt really acceptable, but it does work.
let's clean this up and get a more comprehensive font database!
-- Marak
*/
if(typeof exports != 'undefined'){
var fs = require('fs');
var sys = require('sys');
exports.text = function(fontName, text, callback){
fs.readFile('./fonts/' + fontName, function(err, contents){
if(err){
//sys.puts(err);
}
try{
loadFont(contents.toString());
}
catch(err){
sys.puts(('couldnt load font file ' + fontName + ' not going to render your text'));
}
var font = createLargeText(text);
callback(font);
});
};
}
/**** DRAGONS START HERE, be warned ******/
// MARAK SAYS : ughhh i think we have to setup the base state for this big fontChars array to work.
// i haven't figured out if we can just have the loadFont method handle this...
var fontChars = new Array(95);
// char height
var charHeight = 7;
// basic font info
var fontPointSize = 10;
var fontFace = "monospace";
// author's initials
var initials = "";
// font file type extension
var fontFileExt = "flf";
for (var i = 0; i < 95; i++)
{
fontChars[i] = new Array(charHeight);
}
// the first font gets hardcoded for some reason, the rest of the fonts are loaded async
// and loaded into memory with loadFont()
fontChars[0][0] = "$ $";
fontChars[0][1] = "$ $";
fontChars[0][2] = "$ $";
fontChars[0][3] = "$ $";
fontChars[0][4] = "$ $";
fontChars[0][5] = "$ $";
fontChars[0][6] = "$ $";
fontChars[1][0] = " _ ";
fontChars[1][1] = "U|\"|u ";
fontChars[1][2] = "\\| |/ ";
fontChars[1][3] = " |_| ";
fontChars[1][4] = " (_) ";
fontChars[1][5] = " |||_ ";
fontChars[1][6] = "(__)_) ";
fontChars[2][0] = "\"";
fontChars[2][1] = " ";
fontChars[2][2] = " ";
fontChars[2][3] = " ";
fontChars[2][4] = " ";
fontChars[2][5] = " ";
fontChars[2][6] = " ";
fontChars[3][0] = "";
fontChars[3][1] = " ";
fontChars[3][2] = " ";
fontChars[3][3] = " ";
fontChars[3][4] = " ";
fontChars[3][5] = " ";
fontChars[3][6] = " ";
fontChars[4][0] = "$";
fontChars[4][1] = " ";
fontChars[4][2] = " ";
fontChars[4][3] = " ";
fontChars[4][4] = " ";
fontChars[4][5] = " ";
fontChars[4][6] = " ";
fontChars[5][0] = "%";
fontChars[5][1] = " ";
fontChars[5][2] = " ";
fontChars[5][3] = " ";
fontChars[5][4] = " ";
fontChars[5][5] = " ";
fontChars[5][6] = " ";
fontChars[6][0] = "&";
fontChars[6][1] = " ";
fontChars[6][2] = " ";
fontChars[6][3] = " ";
fontChars[6][4] = " ";
fontChars[6][5] = " ";
fontChars[6][6] = " ";
fontChars[7][0] = " _ ";
fontChars[7][1] = "|\"| ";
fontChars[7][2] = "|_| ";
fontChars[7][3] = " ";
fontChars[7][4] = " ";
fontChars[7][5] = " ";
fontChars[7][6] = " ";
fontChars[8][0] = "(";
fontChars[8][1] = " ";
fontChars[8][2] = " ";
fontChars[8][3] = " ";
fontChars[8][4] = " ";
fontChars[8][5] = " ";
fontChars[8][6] = " ";
fontChars[9][0] = ")";
fontChars[9][1] = " ";
fontChars[9][2] = " ";
fontChars[9][3] = " ";
fontChars[9][4] = " ";
fontChars[9][5] = " ";
fontChars[9][6] = " ";
fontChars[10][0] = "*";
fontChars[10][1] = " ";
fontChars[10][2] = " ";
fontChars[10][3] = " ";
fontChars[10][4] = " ";
fontChars[10][5] = " ";
fontChars[10][6] = " ";
fontChars[11][0] = "+";
fontChars[11][1] = " ";
fontChars[11][2] = " ";
fontChars[11][3] = " ";
fontChars[11][4] = " ";
fontChars[11][5] = " ";
fontChars[11][6] = " ";
fontChars[12][0] = " ";
fontChars[12][1] = " ";
fontChars[12][2] = " ";
fontChars[12][3] = " ";
fontChars[12][4] = " _ ";
fontChars[12][5] = "(\") ";
fontChars[12][6] = " \\| ";
fontChars[13][0] = " ";
fontChars[13][1] = " ";
fontChars[13][2] = " U u ";
fontChars[13][3] = " /___\\ ";
fontChars[13][4] = "|__\"__| ";
fontChars[13][5] = " ";
fontChars[13][6] = " ";
fontChars[14][0] = " ";
fontChars[14][1] = " ";
fontChars[14][2] = " ";
fontChars[14][3] = " ";
fontChars[14][4] = " _ ";
fontChars[14][5] = "(\") ";
fontChars[14][6] = " \" ";
fontChars[15][0] = "/";
fontChars[15][1] = " ";
fontChars[15][2] = " ";
fontChars[15][3] = " ";
fontChars[15][4] = " ";
fontChars[15][5] = " ";
fontChars[15][6] = " ";
fontChars[16][0] = " ___ ";
fontChars[16][1] = " / _\"\\ u ";
fontChars[16][2] = "| / U |/ ";
fontChars[16][3] = "| \\// |,-. ";
fontChars[16][4] = " \\___/(_/ ";
fontChars[16][5] = " // ";
fontChars[16][6] = " (__) ";
fontChars[17][0] = " _ ";
fontChars[17][1] = " /\"| ";
fontChars[17][2] = " u | |u ";
fontChars[17][3] = " \\| |/ ";
fontChars[17][4] = " |_| ";
fontChars[17][5] = " _//<,-, ";
fontChars[17][6] = "(__)(_/ ";
fontChars[18][0] = " ____ ";
fontChars[18][1] = " |___\"\\ ";
fontChars[18][2] = " U __) | ";
fontChars[18][3] = " \\/ __/ \\ ";
fontChars[18][4] = " |_____|u ";
fontChars[18][5] = " << // ";
fontChars[18][6] = "(__)(__) ";
fontChars[19][0] = " _____ ";
fontChars[19][1] = "|___\"/u ";
fontChars[19][2] = "U_|_ \\/ ";
fontChars[19][3] = " ___) | ";
fontChars[19][4] = "|____/ ";
fontChars[19][5] = " _// \\\\ ";
fontChars[19][6] = "(__)(__) ";
fontChars[20][0] = " _ _ ";
fontChars[20][1] = "| ||\"| ";
fontChars[20][2] = "| || |_ ";
fontChars[20][3] = "|__ _| ";
fontChars[20][4] = " /|_|\\ ";
fontChars[20][5] = " u_|||_u ";
fontChars[20][6] = " (__)__) ";
fontChars[21][0] = " ____ ";
fontChars[21][1] = "U|\"___|u ";
fontChars[21][2] = "\\|___ \\/ ";
fontChars[21][3] = " ___) | ";
fontChars[21][4] = " |____/ ";
fontChars[21][5] = ",-,>>\\,-. ";
fontChars[21][6] = " \\ ) (_/ ";
fontChars[22][0] = " __ ";
fontChars[22][1] = "U /\"/_ u ";
fontChars[22][2] = "\\| '_ \\/ ";
fontChars[22][3] = " | (_) | ";
fontChars[22][4] = " \\___/ ";
fontChars[22][5] = " _// \\\\_ ";
fontChars[22][6] = "(__) (__) ";
fontChars[23][0] = " _____ ";
fontChars[23][1] = " |___ \"| ";
fontChars[23][2] = " / / ";
fontChars[23][3] = " u// /\\ ";
fontChars[23][4] = " /_/ U ";
fontChars[23][5] = " <<>>_ ";
fontChars[23][6] = "(__)__) ";
fontChars[24][0] = " ___ ";
fontChars[24][1] = "U( \" ) u ";
fontChars[24][2] = "\\/ \\/ ";
fontChars[24][3] = "| ( ) | ";
fontChars[24][4] = " \\___/>> ";
fontChars[24][5] = " )( (__) ";
fontChars[24][6] = " (__) ";
fontChars[25][0] = " ___ ";
fontChars[25][1] = " / _\"\\ ";
fontChars[25][2] = " | (_) | ";
fontChars[25][3] = " /\\__, |\\ ";
fontChars[25][4] = "U<< |_/ u ";
fontChars[25][5] = "(__) )( ";
fontChars[25][6] = " (__) ";
fontChars[26][0] = " ";
fontChars[26][1] = " _ ";
fontChars[26][2] = "(\") ";
fontChars[26][3] = " ";
fontChars[26][4] = " _ ";
fontChars[26][5] = "(\") ";
fontChars[26][6] = " ";
fontChars[27][0] = ";";
fontChars[27][1] = " ";
fontChars[27][2] = " ";
fontChars[27][3] = " ";
fontChars[27][4] = " ";
fontChars[27][5] = " ";
fontChars[27][6] = " ";
fontChars[28][0] = "<";
fontChars[28][1] = " ";
fontChars[28][2] = " ";
fontChars[28][3] = " ";
fontChars[28][4] = " ";
fontChars[28][5] = " ";
fontChars[28][6] = " ";
fontChars[29][0] = "=";
fontChars[29][1] = " ";
fontChars[29][2] = " ";
fontChars[29][3] = " ";
fontChars[29][4] = " ";
fontChars[29][5] = " ";
fontChars[29][6] = " ";
fontChars[30][0] = ">";
fontChars[30][1] = " ";
fontChars[30][2] = " ";
fontChars[30][3] = " ";
fontChars[30][4] = " ";
fontChars[30][5] = " ";
fontChars[30][6] = " ";
fontChars[31][0] = " ___ ";
fontChars[31][1] = " |__\"\\ ";
fontChars[31][2] = "U / /u ";
fontChars[31][3] = " \\|_|/ ";
fontChars[31][4] = " (_) ";
fontChars[31][5] = " _//\\,-. ";
fontChars[31][6] = "(__)( / ";
fontChars[32][0] = "@";
fontChars[32][1] = " ";
fontChars[32][2] = " ";
fontChars[32][3] = " ";
fontChars[32][4] = " ";
fontChars[32][5] = " ";
fontChars[32][6] = " ";
fontChars[33][0] = " _ ";
fontChars[33][1] = "U /\"\\ u ";
fontChars[33][2] = " \\/ _ \\/ ";
fontChars[33][3] = " / ___ \\ ";
fontChars[33][4] = "/_/ \\_\\ ";
fontChars[33][5] = " \\\\ >> ";
fontChars[33][6] = "(__) (__) ";
fontChars[34][0] = " ____ ";
fontChars[34][1] = "U | __\")u ";
fontChars[34][2] = " \\| _ \\/ ";
fontChars[34][3] = " | |_) | ";
fontChars[34][4] = " |____/ ";
fontChars[34][5] = " _|| \\\\_ ";
fontChars[34][6] = "(__) (__) ";
fontChars[35][0] = " ____ ";
fontChars[35][1] = "U /\"___| ";
fontChars[35][2] = "\\| | u ";
fontChars[35][3] = " | |/__ ";
fontChars[35][4] = " \\____| ";
fontChars[35][5] = " _// \\\\ ";
fontChars[35][6] = "(__)(__) ";
fontChars[36][0] = " ____ ";
fontChars[36][1] = " | _\"\\ ";
fontChars[36][2] = "/| | | | ";
fontChars[36][3] = "U| |_| |\\ ";
fontChars[36][4] = " |____/ u ";
fontChars[36][5] = " |||_ ";
fontChars[36][6] = " (__)_) ";
fontChars[37][0] = "U _____ u ";
fontChars[37][1] = "\\| ___\"|/ ";
fontChars[37][2] = " | _|\" ";
fontChars[37][3] = " | |___ ";
fontChars[37][4] = " |_____| ";
fontChars[37][5] = " << >> ";
fontChars[37][6] = "(__) (__) ";
fontChars[38][0] = " _____ ";
fontChars[38][1] = " |\" ___| ";
fontChars[38][2] = "U| |_ u ";
fontChars[38][3] = "\\| _|/ ";
fontChars[38][4] = " |_| ";
fontChars[38][5] = " )(\\\\,- ";
fontChars[38][6] = "(__)(_/ ";
fontChars[39][0] = " ____ ";
fontChars[39][1] = "U /\"___|u ";
fontChars[39][2] = "\\| | _ / ";
fontChars[39][3] = " | |_| | ";
fontChars[39][4] = " \\____| ";
fontChars[39][5] = " _)(|_ ";
fontChars[39][6] = " (__)__) ";
fontChars[40][0] = " _ _ ";
fontChars[40][1] = " |'| |'| ";
fontChars[40][2] = "/| |_| |\\ ";
fontChars[40][3] = "U| _ |u ";
fontChars[40][4] = " |_| |_| ";
fontChars[40][5] = " // \\\\ ";
fontChars[40][6] = "(_\") (\"_) ";
fontChars[41][0] = " ";
fontChars[41][1] = " ___ ";
fontChars[41][2] = " |_\"_| ";
fontChars[41][3] = " | | ";
fontChars[41][4] = " U/| |\\u ";
fontChars[41][5] = ".-,_|___|_,-. ";
fontChars[41][6] = " \\_)-' '-(_/ ";
fontChars[42][0] = " _ ";
fontChars[42][1] = " U |\"| u ";
fontChars[42][2] = " _ \\| |/ ";
fontChars[42][3] = "| |_| |_,-. ";
fontChars[42][4] = " \\___/-(_/ ";
fontChars[42][5] = " _// ";
fontChars[42][6] = " (__) ";
fontChars[43][0] = " _ __ ";
fontChars[43][1] = " |\"|/ / ";
fontChars[43][2] = " | ' / ";
fontChars[43][3] = "U/| . \\\\u ";
fontChars[43][4] = " |_|\\_\\ ";
fontChars[43][5] = ",-,>> \\\\,-. ";
fontChars[43][6] = " \\.) (_/ ";
fontChars[44][0] = " _ ";
fontChars[44][1] = " |\"| ";
fontChars[44][2] = "U | | u ";
fontChars[44][3] = " \\| |/__ ";
fontChars[44][4] = " |_____| ";
fontChars[44][5] = " // \\\\ ";
fontChars[44][6] = " (_\")(\"_) ";
fontChars[45][0] = " __ __ ";
fontChars[45][1] = "U|' \\/ '|u ";
fontChars[45][2] = "\\| |\\/| |/ ";
fontChars[45][3] = " | | | | ";
fontChars[45][4] = " |_| |_| ";
fontChars[45][5] = "<<,-,,-. ";
fontChars[45][6] = " (./ \\.) ";
fontChars[46][0] = " _ _ ";
fontChars[46][1] = " | \\ |\"| ";
fontChars[46][2] = "<| \\| |> ";
fontChars[46][3] = "U| |\\ |u ";
fontChars[46][4] = " |_| \\_| ";
fontChars[46][5] = " || \\\\,-. ";
fontChars[46][6] = " (_\") (_/ ";
fontChars[47][0] = " U ___ u ";
fontChars[47][1] = " \\/\"_ \\/ ";
fontChars[47][2] = " | | | | ";
fontChars[47][3] = ".-,_| |_| | ";
fontChars[47][4] = " \\_)-\\___/ ";
fontChars[47][5] = " \\\\ ";
fontChars[47][6] = " (__) ";
fontChars[48][0] = " ____ ";
fontChars[48][1] = "U| _\"\\ u ";
fontChars[48][2] = "\\| |_) |/ ";
fontChars[48][3] = " | __/ ";
fontChars[48][4] = " |_| ";
fontChars[48][5] = " ||>>_ ";
fontChars[48][6] = "(__)__) ";
fontChars[49][0] = " ___ ";
fontChars[49][1] = " / \" \\ ";
fontChars[49][2] = " | |\"| | ";
fontChars[49][3] = "/| |_| |\\ ";
fontChars[49][4] = "U \\__\\_\\u ";
fontChars[49][5] = " \\\\// ";
fontChars[49][6] = " (_(__) ";
fontChars[50][0] = " ____ ";
fontChars[50][1] = "U | _\"\\ u ";
fontChars[50][2] = " \\| |_) |/ ";
fontChars[50][3] = " | _ < ";
fontChars[50][4] = " |_| \\_\\ ";
fontChars[50][5] = " // \\\\_ ";
fontChars[50][6] = " (__) (__) ";
fontChars[51][0] = " ____ ";
fontChars[51][1] = " / __\"| u ";
fontChars[51][2] = "<\\___ \\/ ";
fontChars[51][3] = " u___) | ";
fontChars[51][4] = " |____/>> ";
fontChars[51][5] = " )( (__) ";
fontChars[51][6] = " (__) ";
fontChars[52][0] = " _____ ";
fontChars[52][1] = " |_ \" _| ";
fontChars[52][2] = " | | ";
fontChars[52][3] = " /| |\\ ";
fontChars[52][4] = " u |_|U ";
fontChars[52][5] = " _// \\\\_ ";
fontChars[52][6] = "(__) (__) ";
fontChars[53][0] = " _ _ ";
fontChars[53][1] = "U |\"|u| | ";
fontChars[53][2] = " \\| |\\| | ";
fontChars[53][3] = " | |_| | ";
fontChars[53][4] = " <<\\___/ ";
fontChars[53][5] = "(__) )( ";
fontChars[53][6] = " (__) ";
fontChars[54][0] = " __ __ ";
fontChars[54][1] = " \\ \\ /\"/u ";
fontChars[54][2] = " \\ \\ / // ";
fontChars[54][3] = " /\\ V /_,-. ";
fontChars[54][4] = " U \\_/-(_/ ";
fontChars[54][5] = " // ";
fontChars[54][6] = " (__) ";
fontChars[55][0] = " ";
fontChars[55][1] = " __ __ ";
fontChars[55][2] = " \\\"\\ /\"/ ";
fontChars[55][3] = " /\\ \\ /\\ / /\\ ";
fontChars[55][4] = "U \\ V V / U";
fontChars[55][5] = ".-,_\\ /\\ /_,-.";
fontChars[55][6] = " \\_)-' '-(_/ ";
fontChars[56][0] = " __ __ ";
fontChars[56][1] = " \\ \\/\"/ ";
fontChars[56][2] = " /\\ /\\ ";
fontChars[56][3] = " U / \\ u ";
fontChars[56][4] = " /_/\\_\\ ";
fontChars[56][5] = ",-,>> \\\\_ ";
fontChars[56][6] = " \\_) (__) ";
fontChars[57][0] = " __ __ ";
fontChars[57][1] = " \\ \\ / / ";
fontChars[57][2] = " \\ V / ";
fontChars[57][3] = " U_|\"|_u ";
fontChars[57][4] = " |_| ";
fontChars[57][5] = ".-,//|(_ ";
fontChars[57][6] = " \\_) (__) ";
fontChars[58][0] = " _____ ";
fontChars[58][1] = " |\"_ /u ";
fontChars[58][2] = " U / // ";
fontChars[58][3] = " \\/ /_ ";
fontChars[58][4] = " /____| ";
fontChars[58][5] = " _//<<,- ";
fontChars[58][6] = "(__) (_/ ";
fontChars[59][0] = "[";
fontChars[59][1] = " ";
fontChars[59][2] = " ";
fontChars[59][3] = " ";
fontChars[59][4] = " ";
fontChars[59][5] = " ";
fontChars[59][6] = " ";
fontChars[60][0] = "\\";
fontChars[60][1] = " ";
fontChars[60][2] = " ";
fontChars[60][3] = " ";
fontChars[60][4] = " ";
fontChars[60][5] = " ";
fontChars[60][6] = " ";
fontChars[61][0] = "]";
fontChars[61][1] = " ";
fontChars[61][2] = " ";
fontChars[61][3] = " ";
fontChars[61][4] = " ";
fontChars[61][5] = " ";
fontChars[61][6] = " ";
fontChars[62][0] = "U _ u ";
fontChars[62][1] = "\\/\"\\/ ";
fontChars[62][2] = "|/`\\| ";
fontChars[62][3] = " ";
fontChars[62][4] = " ";
fontChars[62][5] = " ";
fontChars[62][6] = " ";
fontChars[63][0] = "_";
fontChars[63][1] = " ";
fontChars[63][2] = " ";
fontChars[63][3] = " ";
fontChars[63][4] = " ";
fontChars[63][5] = " ";
fontChars[63][6] = " ";
fontChars[64][0] = " ___ ";
fontChars[64][1] = "(\" / ";
fontChars[64][2] = " )/ ";
fontChars[64][3] = " ";
fontChars[64][4] = " ";
fontChars[64][5] = " ";
fontChars[64][6] = " ";
fontChars[65][0] = " _ ";
fontChars[65][1] = "U /\"\\ u ";
fontChars[65][2] = " \\/ _ \\/ ";
fontChars[65][3] = " / ___ \\ ";
fontChars[65][4] = "/_/ \\_\\ ";
fontChars[65][5] = " \\\\ >> ";
fontChars[65][6] = "(__) (__) ";
fontChars[66][0] = " ____ ";
fontChars[66][1] = "U | __\")u ";
fontChars[66][2] = " \\| _ \\/ ";
fontChars[66][3] = " | |_) | ";
fontChars[66][4] = " |____/ ";
fontChars[66][5] = " _|| \\\\_ ";
fontChars[66][6] = "(__) (__) ";
fontChars[67][0] = " ____ ";
fontChars[67][1] = "U /\"___| ";
fontChars[67][2] = "\\| | u ";
fontChars[67][3] = " | |/__ ";
fontChars[67][4] = " \\____| ";
fontChars[67][5] = " _// \\\\ ";
fontChars[67][6] = "(__)(__) ";
fontChars[68][0] = " ____ ";
fontChars[68][1] = " | _\"\\ ";
fontChars[68][2] = "/| | | | ";
fontChars[68][3] = "U| |_| |\\ ";
fontChars[68][4] = " |____/ u ";
fontChars[68][5] = " |||_ ";
fontChars[68][6] = " (__)_) ";
fontChars[69][0] = "U _____ u ";
fontChars[69][1] = "\\| ___\"|/ ";
fontChars[69][2] = " | _|\" ";
fontChars[69][3] = " | |___ ";
fontChars[69][4] = " |_____| ";
fontChars[69][5] = " << >> ";
fontChars[69][6] = "(__) (__) ";
fontChars[70][0] = " _____ ";
fontChars[70][1] = " |\" ___| ";
fontChars[70][2] = "U| |_ u ";
fontChars[70][3] = "\\| _|/ ";
fontChars[70][4] = " |_| ";
fontChars[70][5] = " )(\\\\,- ";
fontChars[70][6] = "(__)(_/ ";
fontChars[71][0] = " ____ ";
fontChars[71][1] = "U /\"___|u ";
fontChars[71][2] = "\\| | _ / ";
fontChars[71][3] = " | |_| | ";
fontChars[71][4] = " \\____| ";
fontChars[71][5] = " _)(|_ ";
fontChars[71][6] = " (__)__) ";
fontChars[72][0] = " _ _ ";
fontChars[72][1] = " |'| |'| ";
fontChars[72][2] = "/| |_| |\\ ";
fontChars[72][3] = "U| _ |u ";
fontChars[72][4] = " |_| |_| ";
fontChars[72][5] = " // \\\\ ";
fontChars[72][6] = "(_\") (\"_) ";
fontChars[73][0] = " ";
fontChars[73][1] = " ___ ";
fontChars[73][2] = " |_\"_| ";
fontChars[73][3] = " | | ";
fontChars[73][4] = " U/| |\\u ";
fontChars[73][5] = ".-,_|___|_,-. ";
fontChars[73][6] = " \\_)-' '-(_/ ";
fontChars[74][0] = " _ ";
fontChars[74][1] = " U |\"| u ";
fontChars[74][2] = " _ \\| |/ ";
fontChars[74][3] = "| |_| |_,-. ";
fontChars[74][4] = " \\___/-(_/ ";
fontChars[74][5] = " _// ";
fontChars[74][6] = " (__) ";
fontChars[75][0] = " _ __ ";
fontChars[75][1] = " |\"|/ / ";
fontChars[75][2] = " | ' / ";
fontChars[75][3] = "U/| . \\\\u ";
fontChars[75][4] = " |_|\\_\\ ";
fontChars[75][5] = ",-,>> \\\\,-. ";
fontChars[75][6] = " \\.) (_/ ";
fontChars[76][0] = " _ ";
fontChars[76][1] = " |\"| ";
fontChars[76][2] = "U | | u ";
fontChars[76][3] = " \\| |/__ ";
fontChars[76][4] = " |_____| ";
fontChars[76][5] = " // \\\\ ";
fontChars[76][6] = " (_\")(\"_) ";
fontChars[77][0] = " __ __ ";
fontChars[77][1] = "U|' \\/ '|u ";
fontChars[77][2] = "\\| |\\/| |/ ";
fontChars[77][3] = " | | | | ";
fontChars[77][4] = " |_| |_| ";
fontChars[77][5] = "<<,-,,-. ";
fontChars[77][6] = " (./ \\.) ";
fontChars[78][0] = " _ _ ";
fontChars[78][1] = " | \\ |\"| ";
fontChars[78][2] = "<| \\| |> ";
fontChars[78][3] = "U| |\\ |u ";
fontChars[78][4] = " |_| \\_| ";
fontChars[78][5] = " || \\\\,-. ";
fontChars[78][6] = " (_\") (_/ ";
fontChars[79][0] = " U ___ u ";
fontChars[79][1] = " \\/\"_ \\/ ";
fontChars[79][2] = " | | | | ";
fontChars[79][3] = ".-,_| |_| | ";
fontChars[79][4] = " \\_)-\\___/ ";
fontChars[79][5] = " \\\\ ";
fontChars[79][6] = " (__) ";
fontChars[80][0] = " ____ ";
fontChars[80][1] = "U| _\"\\ u ";
fontChars[80][2] = "\\| |_) |/ ";
fontChars[80][3] = " | __/ ";
fontChars[80][4] = " |_| ";
fontChars[80][5] = " ||>>_ ";
fontChars[80][6] = "(__)__) ";
fontChars[81][0] = " ___ ";
fontChars[81][1] = " / \" \\ ";
fontChars[81][2] = " | |\"| | ";
fontChars[81][3] = "/| |_| |\\ ";
fontChars[81][4] = "U \\__\\_\\u ";
fontChars[81][5] = " \\\\// ";
fontChars[81][6] = " (_(__) ";
fontChars[82][0] = " ____ ";
fontChars[82][1] = "U | _\"\\ u ";
fontChars[82][2] = " \\| |_) |/ ";
fontChars[82][3] = " | _ < ";
fontChars[82][4] = " |_| \\_\\ ";
fontChars[82][5] = " // \\\\_ ";
fontChars[82][6] = " (__) (__) ";
fontChars[83][0] = " ____ ";
fontChars[83][1] = " / __\"| u ";
fontChars[83][2] = "<\\___ \\/ ";
fontChars[83][3] = " u___) | ";
fontChars[83][4] = " |____/>> ";
fontChars[83][5] = " )( (__) ";
fontChars[83][6] = " (__) ";
fontChars[84][0] = " _____ ";
fontChars[84][1] = " |_ \" _| ";
fontChars[84][2] = " | | ";
fontChars[84][3] = " /| |\\ ";
fontChars[84][4] = " u |_|U ";
fontChars[84][5] = " _// \\\\_ ";
fontChars[84][6] = "(__) (__) ";
fontChars[85][0] = " _ _ ";
fontChars[85][1] = "U |\"|u| | ";
fontChars[85][2] = " \\| |\\| | ";
fontChars[85][3] = " | |_| | ";
fontChars[85][4] = " <<\\___/ ";
fontChars[85][5] = "(__) )( ";
fontChars[85][6] = " (__) ";
fontChars[86][0] = " __ __ ";
fontChars[86][1] = " \\ \\ /\"/u ";
fontChars[86][2] = " \\ \\ / // ";
fontChars[86][3] = " /\\ V /_,-. ";
fontChars[86][4] = " U \\_/-(_/ ";
fontChars[86][5] = " // ";
fontChars[86][6] = " (__) ";
fontChars[87][0] = " ";
fontChars[87][1] = " __ __ ";
fontChars[87][2] = " \\\"\\ /\"/ ";
fontChars[87][3] = " /\\ \\ /\\ / /\\ ";
fontChars[87][4] = "U \\ V V / U";
fontChars[87][5] = ".-,_\\ /\\ /_,-.";
fontChars[87][6] = " \\_)-' '-(_/ ";
fontChars[88][0] = " __ __ ";
fontChars[88][1] = " \\ \\/\"/ ";
fontChars[88][2] = " /\\ /\\ ";
fontChars[88][3] = " U / \\ u ";
fontChars[88][4] = " /_/\\_\\ ";
fontChars[88][5] = ",-,>> \\\\_ ";
fontChars[88][6] = " \\_) (__) ";
fontChars[89][0] = " __ __ ";
fontChars[89][1] = " \\ \\ / / ";
fontChars[89][2] = " \\ V / ";
fontChars[89][3] = " U_|\"|_u ";
fontChars[89][4] = " |_| ";
fontChars[89][5] = ".-,//|(_ ";
fontChars[89][6] = " \\_) (__) ";
fontChars[90][0] = " _____ ";
fontChars[90][1] = " |\"_ /u ";
fontChars[90][2] = " U / // ";
fontChars[90][3] = " \\/ /_ ";
fontChars[90][4] = " /____| ";
fontChars[90][5] = " _//<<,- ";
fontChars[90][6] = "(__) (_/ ";
fontChars[91][0] = " __ ";
fontChars[91][1] = "u /\"/U ";
fontChars[91][2] = " \\| |/ ";
fontChars[91][3] = " < < ";
fontChars[91][4] = " | | ";
fontChars[91][5] = " <<\\_\\ ";
fontChars[91][6] = "(__)_) ";
fontChars[92][0] = "|";
fontChars[92][1] = " ";
fontChars[92][2] = " ";
fontChars[92][3] = " ";
fontChars[92][4] = " ";
fontChars[92][5] = " ";
fontChars[92][6] = " ";
fontChars[93][0] = "__ ";
fontChars[93][1] = "\\\"\\ u ";
fontChars[93][2] = " | |/ ";
fontChars[93][3] = "/ > > ";
fontChars[93][4] = "U| | ";
fontChars[93][5] = "/_/>>_ ";
fontChars[93][6] = " (_(__) ";
fontChars[94][0] = "~";
fontChars[94][1] = " ";
fontChars[94][2] = " ";
fontChars[94][3] = " ";
fontChars[94][4] = " ";
fontChars[94][5] = " ";
fontChars[94][6] = " ";
// this variable lets us know the last page the user clicked
// this is useful when changing colors of the display (background / text color)
// 0 = output page
// 1 = author page
// 2 = test all page
function convert_to_boolean(str)
{
var ret = false;
if (str == "true")
{
ret = true;
}
return ret;
}
function loadFont(fontText)
{
var retData =fontText;
var retArray = retData.split("\n");
var retIndex = 0;
theFontName = retArray[retIndex++];
fontFileExt = retArray[retIndex++];
fontPointSize = retArray[retIndex++];
fontFace = retArray[retIndex++];
initials = retArray[retIndex++];
hardblank = retArray[retIndex++];
printDirection = retArray[retIndex++];
hFullWidth = convert_to_boolean(retArray[retIndex++]);
hFitting = convert_to_boolean(retArray[retIndex++]);
hSmush1 = convert_to_boolean(retArray[retIndex++]);
hSmush2 = convert_to_boolean(retArray[retIndex++]);
hSmush3 = convert_to_boolean(retArray[retIndex++]);
hSmush4 = convert_to_boolean(retArray[retIndex++]);
hSmush5 = convert_to_boolean(retArray[retIndex++]);
hSmush6 = convert_to_boolean(retArray[retIndex++]);
var numChars = retArray[retIndex++];
charHeight = retArray[retIndex++];
//alert(hFitting + "," + hFullWidth + "," + hSmush1 + "," + hSmush2 + "," + hSmush3);
//alert(fontFileExt + "," + fontPointSize + "," +fontFace + "," + initials + "," + hardblank);
fontChars = null;
fontChars = new Array(numChars);
for (var i = 0; i < numChars; i++)
{
fontChars[i] = new Array(charHeight);
}
var inLoop = 0;
for (i = 0; i < numChars; i++)
{
for (var i2 = 0; i2 < charHeight; i2++)
{
if ( fontFileExt == "aol" )
{
fontChars[i][i2] = text_decode(retArray[retIndex]);
}
else
{
fontChars[i][i2] = retArray[retIndex];
}
// replace escape sequences
fontChars[i][i2] = fontChars[i][i2].replace(//g, ">");
fontChars[i][i2] = fontChars[i][i2].replace(/\\"/g, "\"");
fontChars[i][i2] = fontChars[i][i2].replace(/\\\\/g, "\\");
retIndex++;
inLoop++;
}
}
// the author's comments
authorComments = "";
for (var i2 = retIndex; i2 < retArray.length; i2++)
{
authorComments = authorComments + retArray[i2] + "\n";
}
authorComments = authorComments.replace(/\\"/g, "\"");
authorComments = authorComments.replace(/\\\\/g, "\\");
// MARAK SAYS : this should be moot now that we have some real seperation of concerns and control flow, fucking legacy code
//generateText(document.fontSettings.inputText.value);
curFontName = theFontName;
}
var defaultHorizontalSmush = true;
var hFullWidth = false;
var hUnivSmush = false;
var hFitting = false;
var hSmush1 = true;
var hSmush2 = false;
var hSmush3 = false;
var hSmush4 = false;
var hSmush5 = false;
var hSmush6 = false;
var vFullWidth = true;
var vUnivSmush = false;
var vFitting = false;
var vSmush1 = false;
var vSmush2 = false;
var vSmush3 = false;
var vSmush4 = false;
var vSmush5 = false;
var hardblank = "$";
var printDirection = 0;
var authorComments = "Author : Myflix
Date : 2003/10/18 21:37:14
Version: 1.0
-------------------------------------------------
-------------------------------------------------
This font has been created using JavE's FIGlet font export assistant.
Have a look at: http://www.jave.de
Permission is hereby given to modify this font, as long as the
modifier's name is placed on a comment line.
---
Font modified June 17, 2007 by patorjk
This was to widen the space character.
";
// trims the whites spaces in front and in back of the string
String.prototype.trim = function()
{
return this.replace(/^\s+|\s+$/g, '');
}
String.prototype.urlsToHyperlinks = function()
{
return this.replace(/\bhttp:[^ \)\n\<,]+/g, "$&");
}
// reverses a string
String.prototype.reverse = function()
{
var ret = "";
for (var i = 0; i <= this.length; i++)
{
ret = this.charAt(i) + ret;
}
return ret;
}
var fL = [];
var ii = 0;
// font count: 318
fL[ii++] = "1Row.flf";
fL[ii++] = "3-D.flf";
fL[ii++] = "3D Diagonal.flf";
fL[ii++] = "3x5.flf";
fL[ii++] = "4Max.flf";
fL[ii++] = "5 Line Oblique.flf";
fL[ii++] = "AMC 3 Line.flf";
fL[ii++] = "AMC 3 Liv1.flf";
fL[ii++] = "AMC AAA01.flf";
fL[ii++] = "AMC Neko.flf";
fL[ii++] = "AMC Razor.flf";
fL[ii++] = "AMC Razor2.flf";
fL[ii++] = "AMC Slash.flf";
fL[ii++] = "AMC Slider.flf";
fL[ii++] = "AMC Thin.flf";
fL[ii++] = "AMC Tubes.flf";
fL[ii++] = "AMC Untitled.flf";
fL[ii++] = "ASCII New Roman.flf";
fL[ii++] = "Abraxis-Big.aol";
fL[ii++] = "Abraxis-Small.aol";
fL[ii++] = "Acrobatic.flf";
fL[ii++] = "Alligator.flf";
fL[ii++] = "Alligator2.flf";
fL[ii++] = "Alpha.flf";
fL[ii++] = "Alphabet.flf";
fL[ii++] = "Arrows.flf";
fL[ii++] = "Avatar.flf";
fL[ii++] = "B1FF.flf";
fL[ii++] = "Banner.flf";
fL[ii++] = "Banner3-D.flf";
fL[ii++] = "Banner3.flf";
fL[ii++] = "Banner4.flf";
fL[ii++] = "Barbwire.flf";
fL[ii++] = "Basic.flf";
fL[ii++] = "Bear.flf";
fL[ii++] = "Bell.flf";
fL[ii++] = "Benjamin.flf";
fL[ii++] = "Bent.aol";
fL[ii++] = "Big Chief.flf";
fL[ii++] = "Big Money-ne.flf";
fL[ii++] = "Big Money-nw.flf";
fL[ii++] = "Big Money-se.flf";
fL[ii++] = "Big Money-sw.flf";
fL[ii++] = "Big.flf";
fL[ii++] = "Bigfig.flf";
fL[ii++] = "Binary.flf";
fL[ii++] = "Blest.aol";
fL[ii++] = "Block.flf";
fL[ii++] = "Blocks.flf";
fL[ii++] = "Boie.aol";
fL[ii++] = "Boie2.aol";
fL[ii++] = "Bolger.flf";
fL[ii++] = "Bone's Font.aol";
fL[ii++] = "Braced.flf";
fL[ii++] = "Bright.flf";
fL[ii++] = "Broadway KB.flf";
fL[ii++] = "Broadway.flf";
fL[ii++] = "Bubble.flf";
fL[ii++] = "Bulbhead.flf";
fL[ii++] = "CaMiZ.aol";
fL[ii++] = "Caligraphy.flf";
fL[ii++] = "Caligraphy2.flf";
fL[ii++] = "Cards.flf";
fL[ii++] = "Catwalk.flf";
fL[ii++] = "CeA.aol";
fL[ii++] = "CeA2.aol";
fL[ii++] = "Cheese.aol";
fL[ii++] = "Chiseled.flf";
fL[ii++] = "Chunky.flf";
fL[ii++] = "Coinstak.flf";
fL[ii++] = "Cola.flf";
fL[ii++] = "Colossal.flf";
fL[ii++] = "Computer.flf";
fL[ii++] = "Contessa.flf";
fL[ii++] = "Contrast.flf";
fL[ii++] = "Cosmike.flf";
fL[ii++] = "Crawford.flf";
fL[ii++] = "Crawford2.flf";
fL[ii++] = "Crazy.flf";
fL[ii++] = "Cricket.flf";
fL[ii++] = "Cursive.flf";
fL[ii++] = "Cyberlarge.flf";
fL[ii++] = "Cybermedium.flf";
fL[ii++] = "Cybersmall.flf";
fL[ii++] = "Cygnet.flf";
fL[ii++] = "DANC4.flf";
fL[ii++] = "DWhistled.flf";
fL[ii++] = "DaiR.aol";
fL[ii++] = "Dancing Font.flf";
fL[ii++] = "Decimal.flf";
fL[ii++] = "Def Leppard.flf";
fL[ii++] = "Diamond.flf";
fL[ii++] = "Diet Cola.flf";
fL[ii++] = "Digital.flf";
fL[ii++] = "Doh.flf";
fL[ii++] = "Doom.flf";
fL[ii++] = "Dot Matrix.flf";
fL[ii++] = "Double Shorts.flf";
fL[ii++] = "Double.flf";
fL[ii++] = "Dr Pepper.flf";
fL[ii++] = "Efti Chess.flf";
fL[ii++] = "Efti Font.flf";
fL[ii++] = "Efti Italic.flf";
fL[ii++] = "Efti Piti.flf";
fL[ii++] = "Efti Robot.flf";
fL[ii++] = "Efti Wall.flf";
fL[ii++] = "Efti Water.flf";
fL[ii++] = "Epic.flf";
fL[ii++] = "Fender.flf";
fL[ii++] = "Filter.flf";
fL[ii++] = "Filth.aol";
fL[ii++] = "Fire Font-k.flf";
fL[ii++] = "Fire Font-s.flf";
fL[ii++] = "Flipped.flf";
fL[ii++] = "Flower Power.flf";
fL[ii++] = "FoGG.aol";
fL[ii++] = "Four Tops.flf";
fL[ii++] = "Fraktur.flf";
fL[ii++] = "Fun Face.flf";
fL[ii++] = "Fun Faces.flf";
fL[ii++] = "Fuzzy.flf";
fL[ii++] = "Galactus.aol";
fL[ii++] = "Georgi16.flf";
fL[ii++] = "Georgia11.flf";
fL[ii++] = "Ghost.flf";
fL[ii++] = "Ghoulish.flf";
fL[ii++] = "Glenyn.flf";
fL[ii++] = "Glue.aol";
fL[ii++] = "Goofy.flf";
fL[ii++] = "Gothic.flf";
fL[ii++] = "Graceful.flf";
fL[ii++] = "Gradient.flf";
fL[ii++] = "Graffiti.flf";
fL[ii++] = "Greek.flf";
fL[ii++] = "HeX's Font.aol";
fL[ii++] = "Heart Left.flf";
fL[ii++] = "Heart Right.flf";
fL[ii++] = "Hellfire.aol";
fL[ii++] = "Henry 3D.flf";
fL[ii++] = "Hex.flf";
fL[ii++] = "Hieroglyphs.flf";
fL[ii++] = "Hollywood.flf";
fL[ii++] = "Horizontal Left.flf";
fL[ii++] = "Horizontal Right.flf";
fL[ii++] = "ICL-1900.flf";
fL[ii++] = "Impossible.flf";
fL[ii++] = "Invita.flf";
fL[ii++] = "Isometric1.flf";
fL[ii++] = "Isometric2.flf";
fL[ii++] = "Isometric3.flf";
fL[ii++] = "Isometric4.flf";
fL[ii++] = "Italic.flf";
fL[ii++] = "Ivrit.flf";
fL[ii++] = "JS Block Letters.flf";
fL[ii++] = "JS Bracket Letters.flf";
fL[ii++] = "JS Capital Curves.flf";
fL[ii++] = "JS Cursive.flf";
fL[ii++] = "JS Stick Letters.flf";
fL[ii++] = "Jacky.flf";
fL[ii++] = "Jazmine.flf";
fL[ii++] = "Jerusalem.flf";
fL[ii++] = "Katakana.flf";
fL[ii++] = "Kban.flf";
fL[ii++] = "Keyboard.flf";
fL[ii++] = "Knob.flf";
fL[ii++] = "Konto Slant.flf";
fL[ii++] = "Konto.flf";
fL[ii++] = "LCD.flf";
fL[ii++] = "Larry 3D.flf";
fL[ii++] = "Lean.flf";
fL[ii++] = "Letters.flf";
fL[ii++] = "Lil Devil.flf";
fL[ii++] = "Line Blocks.flf";
fL[ii++] = "Linux.flf";
fL[ii++] = "Lockergnome.flf";
fL[ii++] = "Madrid.flf";
fL[ii++] = "Marquee.flf";
fL[ii++] = "Maxfour.flf";
fL[ii++] = "MeDi.aol";
fL[ii++] = "Mer.aol";
fL[ii++] = "Merlin1.flf";
fL[ii++] = "Merlin2.flf";
fL[ii++] = "Mike.flf";
fL[ii++] = "Mini.flf";
fL[ii++] = "Mirror.flf";
fL[ii++] = "Mnemonic.flf";
fL[ii++] = "Modular.flf";
fL[ii++] = "Morse.flf";
fL[ii++] = "Morse2.flf";
fL[ii++] = "Moscow.flf";
fL[ii++] = "Mshebrew210.flf";
fL[ii++] = "Muzzle.flf";
fL[ii++] = "NScript.flf";
fL[ii++] = "NT Greek.flf";
fL[ii++] = "NV Script.flf";
fL[ii++] = "Nancyj-Fancy.flf";
fL[ii++] = "Nancyj-Improved.flf";
fL[ii++] = "Nancyj-Underlined.flf";
fL[ii++] = "Nancyj.flf";
fL[ii++] = "Nipples.flf";
fL[ii++] = "O8.flf";
fL[ii++] = "OS2.flf";
fL[ii++] = "Octal.flf";
fL[ii++] = "Ogre.flf";
fL[ii++] = "Old Banner.flf";
fL[ii++] = "Pawp.flf";
fL[ii++] = "Peaks Slant.flf";
fL[ii++] = "Peaks.flf";
fL[ii++] = "Pebbles.flf";
fL[ii++] = "Pepper.flf";
fL[ii++] = "Poison.flf";
fL[ii++] = "PsY.aol";
fL[ii++] = "PsY2.aol";
fL[ii++] = "Puffy.flf";
fL[ii++] = "Puzzle.flf";
fL[ii++] = "Pyramid.flf";
fL[ii++] = "Rammstein.flf";
fL[ii++] = "Rectangles.flf";
fL[ii++] = "Red Phoenix.flf";
fL[ii++] = "Reeko Font 1.aol";
fL[ii++] = "Relief.flf";
fL[ii++] = "Relief2.flf";
fL[ii++] = "Reverse.flf";
fL[ii++] = "Ribbit.aol";
fL[ii++] = "Ribbit2.aol";
fL[ii++] = "Ribbit3.aol";
fL[ii++] = "Roman.flf";
fL[ii++] = "Rot13.flf";
fL[ii++] = "Rotated.flf";
fL[ii++] = "Rounded.flf";
fL[ii++] = "Rowan Cap.flf";
fL[ii++] = "Rozzo.flf";
fL[ii++] = "Runic.flf";
fL[ii++] = "Runyc.flf";
fL[ii++] = "S Blood.flf";
fL[ii++] = "SL Script.flf";
fL[ii++] = "Santa Clara.flf";
fL[ii++] = "Script.flf";
fL[ii++] = "Serifcap.flf";
fL[ii++] = "Shadow.flf";
fL[ii++] = "Shimrod.flf";
fL[ii++] = "Short.flf";
fL[ii++] = "Slant Relief.flf";
fL[ii++] = "Slant.flf";
fL[ii++] = "Slide.flf";
fL[ii++] = "Small Caps.flf";
fL[ii++] = "Small Isometric1.flf";
fL[ii++] = "Small Keyboard.flf";
fL[ii++] = "Small Poison.flf";
fL[ii++] = "Small Script.flf";
fL[ii++] = "Small Shadow.flf";
fL[ii++] = "Small Slant.flf";
fL[ii++] = "Small Tengwar.flf";
fL[ii++] = "Small.flf";
fL[ii++] = "Soft.flf";
fL[ii++] = "Sony.aol";
fL[ii++] = "Speed.flf";
fL[ii++] = "Spliff.flf";
fL[ii++] = "Stacey.flf";
fL[ii++] = "Stampate.flf";
fL[ii++] = "Stampatello.flf";
fL[ii++] = "Standard.flf";
fL[ii++] = "Star Strips.flf";
fL[ii++] = "Star Wars.flf";
fL[ii++] = "Stellar.flf";
fL[ii++] = "Stforek.flf";
fL[ii++] = "Stick Letters.flf";
fL[ii++] = "Stop.flf";
fL[ii++] = "Straight.flf";
fL[ii++] = "Sub-Zero.flf";
fL[ii++] = "Swamp Land.flf";
fL[ii++] = "Swan.flf";
fL[ii++] = "Sweet.flf";
fL[ii++] = "TRaC Mini.aol";
fL[ii++] = "TRaC Tiny.aol";
fL[ii++] = "TRaC's Old School Font.aol";
fL[ii++] = "TRaC.aol";
fL[ii++] = "Tanja.flf";
fL[ii++] = "Tengwar.flf";
fL[ii++] = "Term.flf";
fL[ii++] = "Test1.flf";
fL[ii++] = "Thick.flf";
fL[ii++] = "Thin.flf";
fL[ii++] = "Thorned.flf";
fL[ii++] = "Three Point.flf";
fL[ii++] = "Ticks Slant.flf";
fL[ii++] = "Ticks.flf";
fL[ii++] = "Tiles.flf";
fL[ii++] = "Tinker-Toy.flf";
fL[ii++] = "Tombstone.flf";
fL[ii++] = "Train.flf";
fL[ii++] = "Trek.flf";
fL[ii++] = "Tsalagi.flf";
fL[ii++] = "Tubular.flf";
fL[ii++] = "Twiggy.aol";
fL[ii++] = "Twisted.flf";
fL[ii++] = "Two Point.flf";
fL[ii++] = "USA Flag.flf";
fL[ii++] = "Univers.flf";
fL[ii++] = "Varsity.flf";
fL[ii++] = "Wavy.flf";
fL[ii++] = "Weird.flf";
fL[ii++] = "Wet Letter.flf";
fL[ii++] = "Whimsy.flf";
fL[ii++] = "Wow.flf";
fL[ii++] = "X-Pose.aol";
fL[ii++] = "X99.aol";
fL[ii++] = "X992.aol";
fL[ii++] = "Zodi.aol";
/**
* Function: overlapCompare(str1, str2)
*
* About: This function compares two lines from a the text array to see at what point they differ
* when the two letters are placed next to each other.
*
**/
function overlapCompare(inputTxt1, inputTxt2)
{
var str1 = inputTxt1.reverse(); // the character that comes before
var str2 = inputTxt2; // the character that comes after
var theOverlap = 0;
var shouldBreak = false;
if (hFullWidth == true)
{
return 0;
}
var str1CompIndex = 0;
var shouldSmush = true;
for (var i = 0; i < str1.length; i++)
{
if (str1.substr(i, 1) == " ")
{
str1CompIndex++;
theOverlap++;
}
else
{
// for control smushing, see if this character can be smushed
if (smushChar_GetClassVal(str1.substr(i, 1)) == -1)
{
shouldSmush = false;
}
break;
}
}
//alert("start overlap: " + str1CompIndex + "," + "'" + str1 + "'");
if (str1CompIndex == str1.length)
{
return Math.min(str1.length, str2.length);
}
for (var i = 0; i < Math.min(str1.length, str2.length); i++)
{
if (str2.substr(i, 1) == hardblank)
{
// smush rule 6 + hFitting fix
if ((hSmush6 == true && str1.substr(str1CompIndex, 1) == hardblank) )
{
theOverlap++;
}
break;
}
else if (str2.substr(i, 1) != " " && str1.substr(str1CompIndex, 1) == hardblank)
{
break;
}
else if (str2.substr(i, 1) != " ")
{
if ( smushChar_GetClassVal(str2.substr(i, 1)) == -1 )
{
shouldSmush = false;
}
if (shouldSmush == true && (hFitting == false && defaultHorizontalSmush == true))
{
theOverlap++;
}
break;
}
theOverlap++;
}
return theOverlap;
}
/**
* Function: smushAmount(s1, currPos)
*
* About: This function looks at two letters and seeing how much they should be "smushed".
*
**/
function smushAmount(prevPos, currPos)
{
if (prevPos == -1)
{
return 0;
}
var smushed = false;
var smushedAmount = 10000; // a value so big, it will be replaced with the first return of overlapCompare
for (var i = 0; i < charHeight; i++)
{
val = overlapCompare(fontChars[prevPos][i], fontChars[currPos][i]);
if (val < smushedAmount)
{
smushedAmount = val;
}
}
return smushedAmount;
}
/**
* Function: smushChar_GetClassVal(inputVal)
*
* About: Gets class of given char.
*
**/
function smushChar_GetClassVal(inputVal)
{
var ret = -1;
switch( inputVal )
{
case ("|"):
ret = 1;
break;
case (String.fromCharCode(92)):
ret = 2;
break;
case ("/"):
ret = 2;
break;
case ("["):
ret = 3;
break;
case ("]"):
ret = 3;
break;
case ("{"):
ret = 4;
break;
case ("}"):
ret = 4;
break;
case ("("):
ret = 5;
break;
case (")"):
ret = 5;
break;
case ("<"):
ret = 6;
break;
case (">"):
ret = 6;
break;
}
return ret;
}
/**
* Function: smushTxt(txt1, txt2)
*
* About: This function "smushes" two strings together
*
**/
function smushTxt(txt1, txt2, theSmushAmount)
{
var txt1Offset = txt1.length - theSmushAmount;
var ret = txt1.substr(0, txt1Offset);
for (var i = 0; i < theSmushAmount; i++)
{
var txt1_char = txt1.substr(txt1Offset + i, 1);
var txt2_char = txt2.substr(i, 1);
var txt1_smushClass = smushChar_GetClassVal(txt1_char);
var txt2_smushClass = smushChar_GetClassVal(txt2_char);
if (hSmush1 == true && txt2_char == txt1_char)
{
ret = ret + txt1_char;
}
else if (hSmush2 == true && txt1_char == "_" && txt2_smushClass != -1)
{
ret = ret + txt2_char;
}
else if (hSmush2 == true && txt2_char == "_" && txt1_smushClass != -1)
{
ret = ret + txt1_char;
}
else if (hSmush3 == true && txt1_smushClass != -1 && txt2_smushClass != -1 && txt2_smushClass != txt1_smushClass)
{
if (txt1_smushClass > txt2_smushClass)
{
ret = ret + txt1_char;
}
else
{
ret = ret + txt2_char;
}
}
// rule 5 needs to come before rule 4, because of how rule 4 is written here
else if (hSmush5 == true && txt2_char == String.fromCharCode(92) && txt1_char == "/" )
{
ret = ret + "|";
}
else if (hSmush5 == true && txt2_char == "/" && txt1_char == String.fromCharCode(92) )
{
ret = ret + "Y";
}
else if (hSmush5 == true && txt2_char == "<" && txt1_char == ">")
{
ret = ret + "X";
}
else if (hSmush4 == true && txt2_smushClass != -1 && txt2_smushClass == txt1_smushClass && txt2_char != txt1_char)
{
ret = ret + "|";
}
// for smush rule 6, see the overlapCompare function
else if (txt1_char == " ")
{
ret = ret + txt2_char;
}
else
{
ret = ret + txt1_char;
}
}
ret = ret + txt2.substr(theSmushAmount);
return ret;
}
function simpleEncrypt(txt)
{
var encryptedText="", charSet1, charSet2, i, pos, encryptedChar;
charSet1 = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
charSet2 = " nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM";
for(i = 0; i < txt.length; i++)
{
pos = charSet1.indexOf(txt.substring(i, i+1), 0);
if (pos >= 0)
{
encryptedChar = charSet2.substring(pos, pos+1);
encryptedText = encryptedText + encryptedChar;
} else {
encryptedText = encryptedText + txt.substring(i, i+1);
}
}
return encryptedText
}
function createLargeText(txt)
{
var largeText = "";
// now lets handle creating the ascii art text
var filteredTxt = txt; // filterText( txt );
// direction is important for fonts like Mirror
if (printDirection == 1)
{
filteredTxt = filteredTxt.reverse();
}
var filteredTxtLines = filteredTxt.split("\n"); // ß
for (lines = 0; lines < filteredTxtLines.length; lines++)
{
var alphabet = null;
if (fontFileExt == "aol" || fontFileExt == "txt")
{
alphabet = " abcdefghijklmnopqrstuvwxyz";
filteredTxtLines[lines] = filteredTxtLines[lines].toLowerCase();
}
else if (fontFileExt == "flf")
{
alphabet = " !" + String.fromCharCode(34) + "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[" + String.fromCharCode(92) + "]^_`abcdefghijklmnopqrstuvwxyz{|}~";
}
var outputString = "";
var finalText = "";
var prevPos = -1;
var smushAmountArray;
if (fontFileExt == "flf")
{
// find the smush amount for each character in the line
smushAmountArray = new Array();
for (var i = 0; i < filteredTxtLines[lines].length; i++)
{
var pos = alphabet.indexOf(filteredTxtLines[lines].substr(i,1));
if (pos != -1)
{
var theSmushAmount = smushAmount(prevPos, pos);
smushAmountArray[i] = theSmushAmount;
}
prevPos = pos;
}
}
prePos = -1;
for (var height = 0; height < charHeight; height++)
{
for (var i = 0; i < filteredTxtLines[lines].length; i++)
{
var pos = alphabet.indexOf(filteredTxtLines[lines].substr(i,1));
if (pos != -1)
{
if (fontFileExt == "aol" || fontFileExt == "txt")
{
outputString = outputString + fontChars[pos][height];
}
else if (fontFileExt == "flf")
{
var theSmushAmount = smushAmountArray[i]; //smushAmount(prevPos, pos);
outputString = smushTxt(outputString, fontChars[pos][height], theSmushAmount);
}
}
prevPos = pos;
}
if ((lines < (filteredTxtLines.length-1)) || (height < (charHeight-1)))
{
finalText = finalText + outputString + "\n";
}
else
{
finalText = finalText + outputString;
}
prevPos = -1;
outputString = "";
}
if (fontFileExt == "flf")
{
// remove the hardblanks
finalText = finalText.split(hardblank).join(" "); // replace all, we have to do it this way since hardblank could be a special character (for reg expressions)
}
// print the final text
largeText = largeText + finalText;
if (lines != (filteredTxtLines.length-1))
{
largeText = largeText + "\n";
}
}
return largeText;
}
// ---------------------------------------------------------- Above is code for generation
/**
* Function: displayAuthorInfo()
*
* About: This function displays the comments inside of the flf font file.
*
**/
function displayAuthorInfo()
{
// if we're on the "test all" page, just return
if (userLastClicked == 2)
{
return;
}
noteThatFooterIsNotVisible();
// the last thing the user did was click for info on the author
userLastClicked = 1;
var hyperlinkedComments = authorComments.urlsToHyperlinks();
// figure out how to align the text
var aIndex = 0;
for (var i = 0; i < 3; i++)
{
if (document.fontSettings.tAlignment[i].checked == true)
{
aIndex = i;
}
}
var textAlignment = document.fontSettings.tAlignment[aIndex].value;
}
function text_decode(str)
{
var strChars = str.split("%");
var retStr = "";
var decNum = "";
// first index in the array will be blank since input strings have the format:
// "%XX%XX%XX"
for (var i = 1; i < strChars.length; i++)
{
if (strChars[i] == "GG")
{
retStr = retStr + "‘";
}
else if (strChars[i] == "II")
{
retStr = retStr + "‚";
}
else if (strChars[i] == "JJ")
{
retStr = retStr + "˜";
}
else if (strChars[i] == "LL")
{
retStr = retStr + "—";
}
else if (strChars[i] == "MM")
{
retStr = retStr + "–";
}
else if (strChars[i] == "NN")
{
retStr = retStr + "“";
}
else if (strChars[i] == "PP")
{
retStr = retStr + "™";
}
else if (strChars[i] == "QQ")
{
retStr = retStr + "›";
}
else if (strChars[i] == "RR")
{
retStr = retStr + "‹";
}
else if (strChars[i] == "SS")
{
retStr = retStr + "’";
}
else if (strChars[i] == "TT")
{
retStr = retStr + "”";
}
else if (strChars[i] == "UU")
{
retStr = retStr + "”";
}
else
{
decNum = parseInt(strChars[i], 16);
retStr = retStr + String.fromCharCode(decNum);
}
}
return retStr;
}