Adafruit Font Convert

by riaanc

HTML

<textarea id="txtIn"></textarea><br/>
<button id="btn">
Process
</button><br/>
<textarea id="txtOut"></textarea><br/>

CSS

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#banner-message {
  background: #fff;
  border-radius: 4px;
  padding: 20px;
  font-size: 25px;
  text-align: center;
  transition: all 0.2s;
  margin: 0 auto;
  width: 300px;
}

button {
  background: #0084ff;
  border: none;
  border-radius: 5px;
  padding: 8px 14px;
  font-size: 15px;
  color: #fff;
}

#banner-message.alt {
  background: #0084ff;
  color: #fff;
  margin-top: 40px;
  width: 200px;
}

#banner-message.alt button {
  background: #fff;
  color: #000;
}

JavaScript

function download(data, filename, type) {
    var file = new Blob([data], {type: type});
    if (window.navigator.msSaveOrOpenBlob) // IE10+
        window.navigator.msSaveOrOpenBlob(file, filename);
    else { // Others
        var a = document.createElement("a"),
                url = URL.createObjectURL(file);
        a.href = url;
        a.download = filename;
        document.body.appendChild(a);
        a.click();
        setTimeout(function() {
            document.body.removeChild(a);
            window.URL.revokeObjectURL(url);  
        }, 0); 
    }
}


$("#btn").on("click", function(){
	$("#txtOut").val("");
  
  const regex = /Bitmaps\[\].*?{(?<bitmaps>.*?)}.*?Glyphs\[\].*?{(?<Glyphs>.*?)};.*GFXfont\s*(?<fontName>\S*).*?{(?<FontDetails>.*?)}/gis;
  var str = $("#txtIn").val();
  var m = regex.exec(str);
  if (m == null)
  	return;
    
  var glyphs = m.groups["Glyphs"].replace(/{ /g, '[ ').replace(/}, /g, '],').replace(/} /g, '] ');
  var bitmaps = m.groups["bitmaps"];
  var fontName = m.groups["fontName"];
  var fontDetails = m.groups["FontDetails"].split(",");
  var startChar = fontDetails[2];
  var endChar = fontDetails[3];
  var yAdvance = fontDetails[4];
    
  
  var output = `//Get fonts from:
//Adafruit GFX Library: https://github.com/adafruit/Adafruit-GFX-Library/tree/master/Fonts
//SSD1306 Tools: http://oleddisplay.squix.ch/#/home
//Adafruit GFX Fontconvert: https://github.com/adafruit/Adafruit-GFX-Library/tree/master/fontconvert
//Customize fonts with: https://tchapi.github.io/Adafruit-GFX-Font-Customiser/

//Font structure here: https://github.com/adafruit/Adafruit-GFX-Library/blob/master/gfxfont.h
//To convert to .js file:
//  1.  copy the byte array inside xxxBitmaps[] [ <copy this> } to module.exports.Bitmaps
//  2.  copy everything inside xxxGlyphs[] and run a string replace so that curly braces are turned into square brackets for a javascript array
//  3.  copy the result of step 2 to module.exports.Glyphs
//  4.  At the end of the...