Created
December 5, 2018 19:28
-
-
Save MaBecker/dfcd3908005f3cafa2b9a5ab5156e3d8 to your computer and use it in GitHub Desktop.
Espruino: store FontHaxorNarrow7x17 in storage and print single and double size without using any RAM for font and widths
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var s = require('Storage'); | |
/* use this code only once to save font and widths in Storage | |
s.write('fHN7x17',atob("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AAAf+AACEAEQAIH/gAAAf+CACIAEIAIn/gAAAf+CACAAEIAIH/gAAAcAAGAED8QYAHAAAAAQAAgAR//CAAEAAAAAP/AgABEECIIDoQAPAAAAH+AEABQAEgAAgAAAACcAJEBSIEkgA/gAAACcApECSICkgA/gAAACcBJEBSIEkgA/gAAACcApEASICkgA/gAAAACFAET/4AAQAAgAAAD8AIEBQIEgQAhAAAAD8AIEAQOAgSAhAAAAD8BIEBQIEgQAhAAAAD8AJEBSIEkQA5AAAAD8AJEASOAkSA5AAAAD8ApEASICkQA5AAAAD8BJEBSIEkQA5AAAAACAIEBf4EAQAAgAAAACAoECf4CAQAAgAAAH8AQEAgIAggv/hgAAAAAH4AQIAgQEhAf/AQAAAAAf4AQAFAASAAD+AAAAf4EQAFAASAAD+AAAAPwAgQFAgSBAD8AAAAPwCgQJAgKBAD8AAAAPwCgQJAgKBAj8AAAAPwCgQBAgKBAD8AAAAf4EQAFAASAACAAAAAfwEAQUAgQCAH+AAAAfwAAQEAgQCAH+AAAAfwCAQIAgICAn+AAAAfwCAQAAgICAH+AAAAeDADYEBAQMAHgAAAAQAH/gBAkCBwECAAAA")); | |
s.write('wHN7x17',atob("AwIGCAgICAMFBQYIAwYDBwcFBgYHBgYGBgYDAwYHBgcHBgYGBgYGBgYEBgYGBgYGBgYGBgYGBggGBgYEBwQGBwQGBgYGBgYHBgYGBgYGBgYGBgYGBgYGBgYGBgQCBAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHCAYGBgAGBgYGAAYGBQYABgMGBgQABgYHBgAGBgYGBgYGBgYGBgYGBgYEBAYGBgYGBgYGAAYGBgYGBgYHBgYGBgYGBgYGBgYGBgYGBwcGBgYGBgYABgYGBgYGBg==")); | |
*/ | |
Graphics.prototype.setFontHN7x17 = function() { | |
var fHN7x17 = require('Storage').read('fHN7x17'); | |
var wHN7x17 = require('Storage').read('wHN7x17'); | |
this.setFontCustom(fHN7x17, 32, wHN7x17, 17); | |
}; | |
Graphics.prototype.drawStringDbl = (txt,px,py,h)=>{ | |
var g2 = Graphics.createArrayBuffer(128,h,2,{msb:true}); | |
// set your custom font here if you need to | |
g2.setFontHN7x17(); | |
var w = g2.stringWidth(txt); | |
var c = (w+3)>>2; | |
g2.drawString(txt); | |
var img = {width:w*2,height:1,transparent:0,buffer:new ArrayBuffer(c)}; | |
var a = new Uint8Array(img.buffer); | |
for (var y=0;y<h;y++) { | |
a.set(new Uint8Array(g2.buffer,32*y,c)); | |
this.drawImage(img,px,py+y*2); | |
this.drawImage(img,px,py+1+y*2); | |
} | |
}; | |
function ds(text){ | |
g.clear(); | |
g.setFontHN7x17(); | |
g.drawString(text,0,0); | |
g.drawStringDbl(text,0,20,17); | |
g.flip(); | |
} | |
function start(){ | |
ds('01234äüöß'); | |
g.flip(); | |
} | |
I2C1.setup({sda:NodeMCU.D1,scl:NodeMCU.D2}); | |
var g = require("SSD1306").connect(I2C1,start); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment