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).