Merge pull request #1636 from nyanmisaka/fonts

Add options to use multiple custom fonts for subtitle rendering
This commit is contained in:
Anthony Lavado 2020-11-08 10:27:16 -05:00 committed by GitHub
commit 9603d2bb5e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 73 additions and 4 deletions

View file

@ -1030,15 +1030,21 @@ function tryRemoveElement(elem) {
* @private
*/
renderSsaAss(videoElement, track, item) {
const avaliableFonts = [];
const attachments = this._currentPlayOptions.mediaSource.MediaAttachments || [];
attachments.map(function (i) {
// embedded font url
return avaliableFonts.push(i.DeliveryUrl);
});
const apiClient = window.connectionManager.getApiClient(item);
const fallbackFontList = apiClient.getUrl('/FallbackFont/Fonts', {
api_key: apiClient.accessToken()
});
const htmlVideoPlayer = this;
const options = {
video: videoElement,
subUrl: getTextTrackUrl(track, item),
fonts: attachments.map(function (i) {
return apiClient.getUrl(i.DeliveryUrl);
}),
fonts: avaliableFonts,
workerUrl: `${appRouter.baseUrl()}/libraries/subtitles-octopus-worker.js`,
legacyWorkerUrl: `${appRouter.baseUrl()}/libraries/subtitles-octopus-worker-legacy.js`,
onError() {
@ -1059,7 +1065,21 @@ function tryRemoveElement(elem) {
renderAhead: 90
};
import('JavascriptSubtitlesOctopus').then(({default: SubtitlesOctopus}) => {
this.#currentSubtitlesOctopus = new SubtitlesOctopus(options);
apiClient.getNamedConfiguration('encoding').then((config) => {
if (config.EnableFallbackFont) {
apiClient.getJSON(fallbackFontList).then((fontFiles) => {
(fontFiles || []).map(function (font) {
const fontUrl = apiClient.getUrl(`/FallbackFont/Fonts/${font.Name}`, {
api_key: apiClient.accessToken()
});
return avaliableFonts.push(fontUrl);
});
this.#currentSubtitlesOctopus = new SubtitlesOctopus(options);
});
} else {
this.#currentSubtitlesOctopus = new SubtitlesOctopus(options);
}
});
});
}