<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Font tester</title>
</head>
<body>
    <canvas id="cvs" width="1000">
        Your browser doesn't support canvas.
    </canvas>
    <input type="text" id="txtinput">
    <script>
        // Inspired by https://github.com/PaulBGD/PixelFont


const fntA = [
    [, , 1, 1, 1, 1], 
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, 1, 1, 1, 1], 
    [, 1, 1, , , 1, 1], 
    [, 1, 1, , , 1, 1], 
];

const fntB = [
    [, 1, 1, 1, 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, 1, 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1], 
    [, 1, 1, 1, 1, 1], 
    
];

const fntC = [
    [, , 1, 1, 1, 1], 
    [, 1, 1, , , 1, 1],
    [, 1, 1],
    [, 1, 1],
    [, 1, 1],
    [, 1, 1, , , 1, 1],
    [, , 1, 1, 1, 1]
    
];

const fntD = [
    [, 1, 1, 1, 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, 1, 1, 1] 
    
];

const fntE = [
    
    [, , 1, 1, 1, 1, 1], 
    [, 1, 1, 1, 1, 1, 1],
    [, 1, 1],
    [, 1, 1, 1, 1, 1],
    [, 1, 1],
    [, 1, 1, 1, 1, 1, 1], 
    [, , 1, 1, 1, 1, 1], 
    
];

const fntF = [
    
    [, , 1, 1, 1, 1, 1], 
    [, 1, 1, 1, 1, 1, 1],
    [, 1, 1],
    [, 1, 1, 1, 1, 1],
    [, 1, 1],
    [, 1, 1],
    [, 1, 1],
    
];

const fntG = [
    [, , 1, 1, 1, 1, 1], 
    [, 1, 1, 1, 1, 1, 1], , 
    [, 1, 1],
    [, 1, 1, , 1, 1, 1], 
    [, 1, 1, , , 1, 1], 
    [, 1, 1, 1, 1, 1, 1],
    [, , 1, 1, 1, 1]
    
];

const fntH = [
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1,1,1, 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1],
    
];

const fntI = [
    
    [, 1, 1, 1, 1, 1, 1],
    [, , , 1, 1],
    [, , , 1, 1],
    [, , , 1, 1],
    [, , , 1, 1],
    [, , , 1, 1],
    [, 1, 1, 1, 1, 1, 1],
];

const fntJ = [
    
    [, , 1, 1, 1, 1, 1],  
    [, , , , , 1, 1],
    [, , , , , 1, 1],
    [, , , , , 1, 1],
    [, , , , , 1, 1],
    [, 1, 1, , , 1, 1],
    [, , 1, 1, 1, 1],
    
 ];

 const fntK = [

    [, 1, 1, , , 1],
    [, 1, 1, , , 1],
    [, 1, 1, , 1],
    [, 1, 1, 1],
    [, 1, 1, , 1],
    [, 1, 1, , , 1], 
    [, 1, 1, , , 1],
    
 ];

 const fntL = [

    [, 1, 1],
    [, 1, 1],
    [, 1, 1],
    [, 1, 1],
    [, 1, 1],
    [, 1, 1, 1, 1, 1, 1], 
    [, 1, 1, 1, 1, 1, 1], 
    
 ];

 const fntM = [

    [, 1, 1, , , , 1], 
    [, 1, 1, 1, , 1, 1],
    [, 1, 1, , 1, , 1],
    [, 1, 1, , , , 1],
    [, 1, 1, , , , 1],
    [, 1, 1, , , , 1], 
    [, 1, 1, , , , 1],

 ];

 const fntN = [

    [, 1, 1, , , , 1], 
    [, 1, 1, , , , 1], 
    [, 1, 1, 1, , , 1], 
    [, 1, 1, 1, 1, , 1], 
    [, 1, 1, , 1, 1, 1], 
    [, 1, 1, , , 1, 1], 
    [, 1, 1, , , , 1],
    
 ];

 const fntO = [

    [, , 1, 1, 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1], 
    [, 1, 1, , , 1, 1], 
    [, 1, 1, , , 1, 1], 
    [, 1, 1, , , 1, 1], 
    [, , 1, 1, 1, 1], 
    
 ];

 const fntP = [
    [, 1, 1, 1, 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, 1, 1, 1],
    [, 1, 1],
    [, 1, 1],
    [, 1, 1],
    
 ];

 const fntQ = [

    [, , 1, 1, 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , 1, 1, 1],
    [, 1, 1, , , 1, 1], 
    [, , 1, 1, 1, 1, , 1], 
    
 ];

 const fntR = [

    [, 1, 1, 1, 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, 1, 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1],
    [, 1, 1, , , 1, 1],
    
 ];

 const fntS = [

    [, , 1, 1, 1, 1], 
    [, 1, 1, , , , 1], 
    [, 1, 1],
    [, , 1, 1, 1, 1], 
    [, , , , , , 1], 
    [, 1, 1, , , , 1], 
    [, , 1, 1, 1, 1],
    
 ];

 const fntT = [

    [, 1, 1, 1, 1, 1, 1], 
    [, 1, 1, 1, 1, 1, 1],
    [, , , 1, 1],
    [, , , 1, 1], 
    [, , , 1, 1],
    [, , , 1, 1],
    [, , , 1, 1],
    
 ];

 const fntU = [

    [, 1, 1, , , 1, 1], 
    [, 1, 1, , , 1, 1], 
    [, 1, 1, , , 1, 1], 
    [, 1, 1, , , 1, 1], 
    [, 1, 1, , , 1, 1], 
    [, 1, 1, 1, 1, 1, 1], 
    [, , 1, 1, 1, 1],
    
 ];

 const fntV = [

    [, 1, 1, , , , 1], 
    [, 1, 1, , , , 1], 
    [, 1, 1, , , , 1],  
    [, 1, 1, , , , 1],  
    [, 1, 1, , , , 1],  
    [, , 1, 1, , 1],  
    [, , , 1, 1],
    
 ];

 const fntW = [

    [, 1, 1, , , , 1],  
    [, 1, 1, , , , 1],  
    [, 1, 1, , , , 1],  
    [, 1, 1, , 1, , 1],  
    [, 1, 1, , 1, , 1],  
    [, 1, 1, , 1, , 1],
    [, , , 1, , 1], 
    
 ];

 const fntX = [

    [, 1, , , , , 1], 
    [, 1, 1, , , 1, 1],  
    [, , 1, 1, 1, 1],  
    [, , , 1, 1],  
    [, , 1, 1, 1, 1],  
    [, 1, 1, , , 1, 1],  
    [, 1, , , , , 1],  
    
 ];

 const fntY = [

    [, 1, 1, , , 1, 1],  
    [, 1, 1, , , 1, 1],  
    [, 1, 1, , , 1, 1],  
    [, , 1, 1, 1, 1, 1],  
    [, , , , , 1, 1],  
    [, 1, 1, , , 1, 1],  
    [, , 1, 1, 1, 1], 
    
 ];

 const fntZ = [

    [1, 1, 1, 1, 1, 1],
    [, , , , , 1, 1],
    [, , , , 1, 1],
    [, , , 1, 1],
    [, , 1, 1],
    [, 1, 1],
    [, 1, 1, 1, 1, 1, 1], , 
    
 ];

 const fntTalt = [
 
     [, 1, 1, 1, 1, 1, 1],
     [, 1, 1, , , 1, 1],
     [, 1, 1, , , 1, 1],
     [, 1, 1, , , 1, 1],
     [, 1, 1, , , 1, 1],
     [, 1, 1, , , 1, 1],
     [, 1, 1, , , 1, 1],
 
     ];

 const fntINDEX = {
    'A': fntA, 'B': fntB, 'C': fntC, 'D': fntD, 'E': fntE, 'F': fntF,
    'G': fntG, 'H': fntH, 'I': fntI, 'J': fntJ, 'K': fntK, 'L': fntL,
    'M': fntM, 'N': fntN, 'O': fntO, 'P': fntP, 'Q': fntQ, 'R': fntR,
    'S': fntS, 'T': fntT, 'U': fntU, 'V': fntV, 'W': fntW, 'X': fntX,
    'Y': fntY, 'Z': fntZ, '1': fntTalt
}


    </script>
    <script>

            console.log(fntINDEX);

            var canvas = document.getElementById("cvs");
            var ctx = canvas.getContext("2d");
            var text = "";
            var txtinput = document.getElementById("txtinput");
            text = txtinput.value;
            var letters = fntINDEX;
            var size = 6;

            txtinput.addEventListener("keyup", function(event) {
                var needed = [];
                 text =  text.toUpperCase(); // because I only did uppercase letters
                for (var i = 0; i <  text.length; i++) {
                    var letter = letters[ text.charAt(i)];
                    if (letter) { // because there's letters I didn't do
                        needed.push(letter);
                    }
                }

                 ctx.fillStyle = 'black';
                var currX = 0;
                for (i = 0; i < needed.length; i++) {
                    letter = needed[i];
                    var currY = 0;
                    var addX = 0;
                    for (var y = 0; y < letter.length; y++) {
                        var row = letter[y];
                        for (var x = 0; x < row.length; x++) {
                            if (row[x]) {
                                 ctx.fillRect(currX + x * size, currY, size, size);
                            }
                        }
                        addX = Math.max(addX, row.length * size);
                        currY += size;
                    }
                    currX += size + addX;

                    needed.splice(i)
                }
            });


    </script>
</body>
</html>