forked from FOSS/BangleApps
59 lines
1.9 KiB
JavaScript
59 lines
1.9 KiB
JavaScript
|
#!/bin/node
|
||
|
/*
|
||
|
Takes language files that have been written with unicode chars that Bangle.js cannot render
|
||
|
with its built-in fonts, and pre-render them.
|
||
|
*/
|
||
|
|
||
|
const FONT_SIZE = 18;
|
||
|
|
||
|
var createCanvas;
|
||
|
try {
|
||
|
createCanvas = require("canvas").createCanvas;
|
||
|
} catch(e) {
|
||
|
console.log("ERROR: needc canvas library");
|
||
|
console.log("Try: npm install canvas");
|
||
|
process.exit(1);
|
||
|
}
|
||
|
// we could use registerFont here to ensure a consitent experience?
|
||
|
|
||
|
var imageconverter = require(__dirname+"/../webtools/imageconverter.js");
|
||
|
|
||
|
const canvas = createCanvas(200, 20)
|
||
|
const ctx = canvas.getContext('2d')
|
||
|
|
||
|
function renderText(txt) {
|
||
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
||
|
ctx.font = FONT_SIZE+'px Sans';
|
||
|
ctx.fillStyle = "white";
|
||
|
ctx.fillText(txt, 0, FONT_SIZE);
|
||
|
var str = imageconverter.canvastoString(canvas, { autoCrop:true, output:"raw", mode:"1bit", transparent:true } );
|
||
|
// for testing:
|
||
|
//console.log("g.drawImage(",imageconverter.canvastoString(canvas, { autoCrop:true, output:"string", mode:"1bit" } ),");");
|
||
|
//process.exit(1);
|
||
|
return "\0"+str;
|
||
|
}
|
||
|
|
||
|
function renderLangFile(file) {
|
||
|
var fileIn = __dirname + "/../lang/unicode-based/"+file;
|
||
|
var fileOut = __dirname + "/../lang/"+file;
|
||
|
console.log("Reading",fileIn);
|
||
|
var inJSON = JSON.parse(require("fs").readFileSync(fileIn));
|
||
|
var outJSON = { "// created with bin/language_render.js" : ""};
|
||
|
for (var categoryName in inJSON) {
|
||
|
if (categoryName.includes("//")) continue;
|
||
|
var category = inJSON[categoryName];
|
||
|
outJSON[categoryName] = {};
|
||
|
for (var english in category) {
|
||
|
if (english.includes("//")) continue;
|
||
|
var translated = category[english];
|
||
|
//console.log(english,"=>",translated);
|
||
|
outJSON[categoryName][english] = renderText(translated);
|
||
|
}
|
||
|
}
|
||
|
require("fs").writeFileSync(fileOut, JSON.stringify(outJSON,null,2));
|
||
|
console.log("Written",fileOut);
|
||
|
}
|
||
|
|
||
|
|
||
|
renderLangFile("ja_JA.json");
|