From 4348fc08dfdb199cfb3b603243bbc3cf9eadbb09 Mon Sep 17 00:00:00 2001 From: Matt Juggins <32675386+mattjuggins@users.noreply.github.com> Date: Tue, 20 Feb 2024 13:28:37 +0000 Subject: [PATCH] Documentation: Advanced Features > DVB Font Downloading (#4390) * Add initial text and assets for dvb-font-downloading exaplanation * Suggested changes to documentation * Clearer wording and diagram change * Apply suggestions from Nigel * Change version of imsc referenced * Page structure changes and suggestions from Daniel --- assets/images/font-download-flowchart.png | Bin 0 -> 53083 bytes .../sources/font-download-flowchart.drawio | 88 ++++++++++++ .../dvb-font-downloading.md | 136 ++++++++++++++++++ .../advanced/subtitles-and-captions/index.md | 11 ++ pages/advanced/subtitles.md | 7 - 5 files changed, 235 insertions(+), 7 deletions(-) create mode 100644 assets/images/font-download-flowchart.png create mode 100644 assets/images/sources/font-download-flowchart.drawio create mode 100644 pages/advanced/subtitles-and-captions/dvb-font-downloading.md create mode 100644 pages/advanced/subtitles-and-captions/index.md delete mode 100644 pages/advanced/subtitles.md diff --git a/assets/images/font-download-flowchart.png b/assets/images/font-download-flowchart.png new file mode 100644 index 0000000000000000000000000000000000000000..6817822c8d4e8f8256e72024e6f3e6bea03eb44a GIT binary patch literal 53083 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pages/advanced/subtitles-and-captions/dvb-font-downloading.md b/pages/advanced/subtitles-and-captions/dvb-font-downloading.md new file mode 100644 index 0000000000..e31d894ad1 --- /dev/null +++ b/pages/advanced/subtitles-and-captions/dvb-font-downloading.md @@ -0,0 +1,136 @@ +--- +layout: default +title: DVB Font Downloading +parent: Subtitles & Captions +grand_parent: Advanced Features +--- + +
+ + Table of contents + + {: .text-delta } +1. TOC +{:toc} +
+ +# DVB Font Downloading + +dash.js supports the mechanism described in the DVB DASH profile ([ETSI TS 103 285](https://www.etsi.org/deliver/etsi_ts/103200_103299/103285/01.03.01_60/ts_103285v010301p.pdf) Section 7.2 Downloadable Fonts) for signalling downloadable fonts using descriptors within an MPD. +This is intended for use with [EBU-TT-D](https://tech.ebu.ch/publications/tech3380) (compatible with [IMSC1](https://www.w3.org/TR/ttml-imsc1.0.1/) Text Profile) subtitles. +The key details of the mechanism and how to use it are covered here. + +## Usage + +As a content provider, you may choose to specify fonts within your TTML subtitles that the subtitles should be rendered with. +This could be for accessibility, language, or stylistic reasons. +However this will only work if the specified fonts are available on the device or browser where the dash player is being used, which may not always be under the control of the content provider. + +To assist with this, the DVB font download mechanism allows you to [signal font resources for download in an MPD](#signalling-downloadable-fonts), and associate them with specific font family names used within the TTML. +This is achieved by including Supplemental or Essential Property descriptors with the specified scheme in the MPD. + +Reference media which signals fonts for download can be found in the [dash.js reference player](http://reference.dashif.org/dash.js/nightly/samples/dash-if-reference-player/). + +This functionality is always available and does not need to be enabled through player settings. +If a downloadable font is correctly signalled, the download will be attempted. + +## Signalling Downloadable Fonts + +Downloadable fonts are signalled in an MPD by using a `` descriptor, or a `` descriptor, within an ``. +The descriptor used must have a `schemeIdUri` attribute set to `"urn:dvb:dash:fontdownload:2014"` and a `value` attribute set to `"1"`. + +### DVB Attributes + +Additional attributes are required on the descriptors to signal information about the downloadable font. + +These attributes are defined in the DVB namespace `urn:dvb:dash-extensions:2014-1`. +Below gives an example of mapping the namespace to a `dvb:` prefix in an MPD. + +```xml + +``` + +The table below details the attributes themselves. + +| Name | Type | Description | +|:---------------- |:-------|:---------------------------------------------------------------------------------------| +| `dvb:url` | URI | The URL of the font to download. Can be absolute or can make use of relative BaseURLs. | +| `dvb:fontFamily` | String | The font family used in EBU-TT-D documents, within the [`tts:fontFamily`](https://www.w3.org/TR/ttml1/#style-attribute-fontFamily) style attribute. | +| `dvb:mimeType` | String | The mimeType of the font available from the URL. | + +### Property Descriptor Example + +```xml + +``` + +### Mimetype Support + +The DVB DASH specification denotes support for two mimeTypes: + +* `application/font-sfnt` - This covers `.ttf` and `.otf` fonts. +* `application/font-woff` - Covering `.woff` fonts. + +No further support for unspecified mimeTypes has been provided. + +### Supplemental vs Essential Property Descriptors + +SupplementalProperty descriptors are used when it is acceptable to show the subtitles in another font if the download fails. +EssentialProperty descriptors are used when the subtitles must not be shown at all if the download fails. + +As such the player acts based on what kind of property descriptor was used to describe the downloadable font. +If a `` descriptor was used and download fails, then the `` containing the descriptor continues to be presented as if the `` descriptor was not present. + +If an `` descriptor was used and download fails, then the `` containing the descriptor is not be presented at all. + +What this looks like on a client is [described in a later section](#download-process). + +## Using the Downloaded Fonts + +### TTML Font Family Attribute + +The EBU-TT-D subtitles need to indicate that they want to use the downloaded font. +To do this, they must include the font family name within the comma-separated list of fonts in the [`tts:fontFamily`](https://www.w3.org/TR/ttml1/#style-attribute-fontFamily) attribute, and the name must match the value of the `dvb:fontFamily` attribute in the MPD. + +So, for example, if we have this attribute in an MPD, + +```xml + +``` + +we would need to ensure this is present in the subtitle TTML documents to put the font to use. + +```xml +