← back to Allnewsdaily
scripts/short/fit-caption.js
12 lines
"use strict";
const { execFileSync } = require('child_process');
function fitCaption(magick, font, textFile, box) {
const [width, height] = box.split('x').map(Number);
for (let size = 100; size >= 10; size -= 5) {
const measured = Number(execFileSync(magick, ['-background','none','-font',font,'-pointsize',String(size),'-size',`${width}x`, `caption:@${textFile}`, '-format','%h','info:'], {encoding:'utf8'}).trim());
if (Number.isFinite(measured) && measured > 0 && measured <= height) return size;
}
throw new Error('Headline cannot fit within its card; refusing to clip text');
}
module.exports = { fitCaption };