If anyone’s interested, here’s what I’m currently working on. Most of the tools in this project rely on some mixture of Perl, ImageMagick and a Java subtitle utility called BDSup2Sub. They work great, are pretty flexible, cross-platform, and all that. The fussiest one of the bunch is BDSup2Sub, and its minor shortcomings are pretty easy to work around.
However, there’s an old legacy bit underpinning this project’s entire subtitle rendering routine. It currently uses a long-discontinued utility called easySUP, using a customized long-deprecated AviSynth subtitling DLL called vsfilter. It’s Windows-only, and it has lots of pretty serious shortcomings I’ve been working around by hand, such as terrible RTL language support, reported problems with Indic scripts, not a lot of formatting flexibility, etc. Most of all, I currently do the initial render for each subtitle by hand, which wastes time and risks errors.
Now, I probably could bypass easySUP and script directly against AviSynth, but since I don’t want to prolong my troubles with the existing system, I’m now writing a Perl script that renders subtitles using ImageMagick+Pango. So far, the results are promising. And, more importantly, if this all works, I can throw out tons of kludgy workarounds for RTL scripts, render subtitles while I sleep, and so on.
All of this will take a while.