Video Maker: resolve the DejaVu bold font from real candidate paths (Alpine vs Debian) instead of relying on ffmpeg's fallback
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+17
-1
@@ -59,6 +59,22 @@ function dt(s) {
|
||||
// Linux (no colons), required on Windows drive letters when testing locally.
|
||||
function dtPath(p) { return String(p || '').replace(/\\/g, '/').replace(/:/g, '\\:'); }
|
||||
|
||||
// Alpine puts DejaVu in /usr/share/fonts/dejavu; Debian uses truetype/dejavu.
|
||||
// Pick a real file rather than trusting ffmpeg's undefined fallback.
|
||||
let _font = null;
|
||||
function pickFont() {
|
||||
if (_font) return _font;
|
||||
const cands = [
|
||||
'/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf',
|
||||
'/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf',
|
||||
'/usr/share/fonts/dejavu/DejaVuSans.ttf',
|
||||
'/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf'
|
||||
];
|
||||
for (const c of cands) { try { if (fs.existsSync(c)) { _font = c; return c; } } catch (e) {} }
|
||||
_font = cands[0];
|
||||
return _font;
|
||||
}
|
||||
|
||||
function ffmpegBin() { return process.env.FFMPEG_BIN || 'ffmpeg'; }
|
||||
|
||||
function render(opts) {
|
||||
@@ -74,7 +90,7 @@ function render(opts) {
|
||||
const out = path.join(outDir(), id + '-' + angle + '.mp4');
|
||||
try { writeQrPpm(link, qrFile, 10, 4); } catch (e) { return reject(new Error('Could not build your QR code.')); }
|
||||
|
||||
const font = process.env.FF_FONT || '/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf';
|
||||
const font = process.env.FF_FONT || pickFont();
|
||||
const shortLink = link.replace(/^https?:\/\//, '');
|
||||
const headline = name ? (name + ' invited you') : 'You were invited';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user