Skip to content

SSA/ASS embedded fonts don’t work unless ass_set_fonts is called after they’re parsed #266

@astiob

Description

@astiob

Embedded fonts are set aside during parsing and imported into fontselect later in process_fontdata, called only from ass_embedded_fonts_add_provider, called only from ass_fontselect_init, called only from ass_set_fonts. So embedded fonts are unavailable until ass_set_fonts is called. But it’s usually called before embedded fonts are parsed, so embedded fonts don’t work!

This breaks embedded fonts in external subtitle files in VLC and FFmpeg’s vf_subtitles (which use ass_process_codec_private to parse the whole file except Dialogue lines: VLC, FFmpeg), Kodi, MPlayer, mplayer2 (which use ass_read_memory to read the whole file), FFmpeg’s vf_ass and our test utility (which use ass_read_file to read the whole file). (Note: MPlayer’s internal copy of libass, which is used if a system libass is not found or is too old, is a copy from 2013. I don’t know how it behaves.)

Embedded fonts work in mpv, because it calls ass_set_fonts after calling ass_process_codec_private to parse the whole file except Dialogue lines (as parsed by FFmpeg).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions