I’m trying to render subtitles with color emojis using FFmpeg’s libass subtitles filter. I have bundled fonts in my app directory and I’m passing fontsdir=/path/to/app/fonts to the subtitles filter, but libass is still using system fontconfig instead of my bundled fonts.
What I have:
-
app/fonts/NotoColorEmoji.ttf (color emoji font)
-
app/fonts/OpenSans-Bold.ttf (base font)
-
Code that conditionally passes fontsdir when emoji font exists
What’s happening:
-
Logs show: “Using font provider fontconfig” (system fonts)
-
Logs show: “fontselect: (Arial Bold, 400, 0) → Arial-BoldMT” (system Arial)
-
Emojis render as missing glyphs (black boxes)
-
No “Using bundled fonts” message in logs
Environment:
-
Deployed on Render (Linux)
-
FFmpeg with libass support
-
Python ffmpeg-python library
Question:
Why is libass ignoring the fontsdir parameter and falling back to system fonts? How can I force libass to use my bundled fonts directory for subtitle rendering?