diff options
| author | Carl Hetherington <cth@carlh.net> | 2024-06-10 01:04:16 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2024-06-10 21:38:48 +0200 |
| commit | f37099ba3e9157c3ef74ffcc87c34d3fc54ccfe5 (patch) | |
| tree | f012b597f2c467cfb959d0882fb06b0f46d006d6 | |
| parent | a76d4455bdff6df9e7b34a651e57648925726242 (diff) | |
Clarify some documentation slightly.
| -rw-r--r-- | doc/design/fonts | 17 | ||||
| -rw-r--r-- | doc/design/fonts.svg | 615 |
2 files changed, 629 insertions, 3 deletions
diff --git a/doc/design/fonts b/doc/design/fonts index c431d52e9..5d61f71a3 100644 --- a/doc/design/fonts +++ b/doc/design/fonts @@ -47,13 +47,24 @@ Passes subtitles through. * Writer -Gets all fonts, puts them in the font ID map using the font's original ID. This is OK because we -don't need uniqueness in the DCP any more. +Gets all fonts, puts them in the FontIDMap using the font's re-written ID. * Reel Writer -Gets subtitles, uses font ID map to find the ID from the Font C++ object pointer. Puts this ID in +Gets subtitles, uses FontIDMap to find the ID from the Font C++ object pointer. Puts this ID in the font and writes it to the asset. Ensures the required LoadFont is added. + +To put this all another way, we need to: + +1. Make some Content-unique ID from a random font ID. Then we can store this in the metadata.xml, and the user can change the font. + +2. Then do the same trick later, with the same result, so the decoder can receive the random font ID and go via the Content-unique +ID to get the actual font TTF from the Content. + +In both these situations a string is the easiest thing (to go in some XML, and to go in a dcp::SubtitleString). + +This whole problem really is just that a single TextContent represents multiple +DCP reels, and each reel can have a different font with the same font ID. diff --git a/doc/design/fonts.svg b/doc/design/fonts.svg new file mode 100644 index 000000000..515bc1ae3 --- /dev/null +++ b/doc/design/fonts.svg @@ -0,0 +1,615 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="210mm" + height="297mm" + viewBox="0 0 210 297" + version="1.1" + id="svg1" + inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)" + sodipodi:docname="fonts.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview1" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:showpageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#ffffff" + inkscape:document-units="mm" + inkscape:zoom="1.4218013" + inkscape:cx="-50.288319" + inkscape:cy="514.83986" + inkscape:window-width="1920" + inkscape:window-height="1043" + inkscape:window-x="0" + inkscape:window-y="0" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" + showborder="false" /> + <defs + id="defs1"> + <marker + style="overflow:visible" + id="marker43" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Concave triangle arrow" + markerWidth="1" + markerHeight="1" + viewBox="0 0 1 1" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="path7" /> + </marker> + <marker + style="overflow:visible" + id="ConcaveTriangle" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Concave triangle arrow" + markerWidth="1" + markerHeight="1" + viewBox="0 0 1 1" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="path9" /> + </marker> + <marker + style="overflow:visible" + id="ConcaveTriangle-2" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Concave triangle arrow" + markerWidth="1" + markerHeight="1" + viewBox="0 0 1 1" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="path9-2" /> + </marker> + <marker + style="overflow:visible" + id="ConcaveTriangle-0" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Concave triangle arrow" + markerWidth="1" + markerHeight="1" + viewBox="0 0 1 1" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="path9-3" /> + </marker> + <marker + style="overflow:visible" + id="ConcaveTriangle-0-5" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Concave triangle arrow" + markerWidth="1" + markerHeight="1" + viewBox="0 0 1 1" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="path9-3-4" /> + </marker> + <marker + style="overflow:visible" + id="ConcaveTriangle-0-5-6" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Concave triangle arrow" + markerWidth="1" + markerHeight="1" + viewBox="0 0 1 1" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="path9-3-4-8" /> + </marker> + <marker + style="overflow:visible" + id="ConcaveTriangle-0-5-6-0" + refX="0" + refY="0" + orient="auto-start-reverse" + inkscape:stockid="Concave triangle arrow" + markerWidth="1" + markerHeight="1" + viewBox="0 0 1 1" + inkscape:isstock="true" + inkscape:collect="always" + preserveAspectRatio="xMidYMid"> + <path + transform="scale(0.7)" + d="M -2,-4 9,0 -2,4 c 2,-2.33 2,-5.66 0,-8 z" + style="fill:context-stroke;fill-rule:evenodd;stroke:none" + id="path9-3-4-8-6" /> + </marker> + </defs> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <text + xml:space="preserve" + style="font-size:5.64444px;fill:#0000ff;stroke:#ff0000;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1" + x="19.162163" + y="23.234892" + id="text4"><tspan + sodipodi:role="line" + id="tspan4" + style="stroke-width:0.265" + x="19.162163" + y="23.234892" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.3333px;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1" + x="67.090012" + y="117.13794" + id="text6" + transform="scale(0.26458333)"><tspan + sodipodi:role="line" + id="tspan6" + x="67.090012" + y="117.13794" /></text> + <g + id="g10" + transform="translate(-124.30682,74.671989)"> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:5.64444px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="7.4588742" + y="11.577716" + id="text1"><tspan + sodipodi:role="line" + id="tspan1" + style="font-size:5.64444px;stroke-width:0.264583" + x="7.4588742" + y="11.577716">DCP</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:4.23333px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583" + x="21.397272" + y="11.577716" + id="text2"><tspan + sodipodi:role="line" + id="tspan2" + style="font-size:4.23333px;stroke-width:0.264583" + x="21.397272" + y="11.577716">imported to project</tspan></text> + <rect + style="fill:none;stroke:#ff0000;stroke-width:0.48;stroke-dasharray:none;stroke-opacity:1" + id="rect2" + width="12.201417" + height="6.364614" + x="7.0392933" + y="6.3803439" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:4.58611px;line-height:1.25;font-family:sans-serif;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-dasharray:none" + x="11.433817" + y="20.654835" + id="text3"><tspan + sodipodi:role="line" + id="tspan3" + style="font-size:4.58611px;fill:#0000ff;stroke-width:0.265;stroke-dasharray:none" + x="11.433817" + y="20.654835">Reel #1</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:4.58611px;line-height:1.25;font-family:sans-serif;fill:#0000ff;fill-opacity:1;stroke:none;stroke-width:0.265;stroke-dasharray:none" + x="10.747972" + y="40.230225" + id="text3-5"><tspan + sodipodi:role="line" + id="tspan3-3" + style="font-size:4.58611px;fill:#0000ff;stroke-width:0.265;stroke-dasharray:none" + x="10.747972" + y="40.230225">Reel #2</tspan></text> + <text + xml:space="preserve" + style="font-size:4.58611px;fill:#008000;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1" + x="14.594666" + y="27.475216" + id="text5"><tspan + sodipodi:role="line" + id="tspan5" + style="font-size:4.58611px;fill:#008000;stroke:none;stroke-width:0.265" + x="14.594666" + y="27.475216">Subtitles, font ID "FONT" (asset A)</tspan><tspan + sodipodi:role="line" + style="font-size:4.58611px;fill:#008000;stroke:none;stroke-width:0.265" + x="14.594666" + y="33.207855" + id="tspan10">Closed captions, font ID "FONT" (asset B)</tspan></text> + <text + xml:space="preserve" + style="font-size:4.58611px;fill:#008000;stroke:none;stroke-width:0.264999;stroke-dasharray:none;stroke-opacity:1" + x="14.594666" + y="46.414989" + id="text5-1"><tspan + sodipodi:role="line" + id="tspan5-8" + style="font-size:4.58611px;fill:#008000;stroke:none;stroke-width:0.265" + x="14.594666" + y="46.414989">Subtitles, font ID "FONT" (asset C)</tspan><tspan + sodipodi:role="line" + style="font-size:4.58611px;fill:#008000;stroke:none;stroke-width:0.265" + x="14.594666" + y="52.147629" + id="tspan10-7">Closed captions, font ID "FONT" (asset D)</tspan></text> + <rect + style="fill:none;stroke:#ff0000;stroke-width:0.233127;stroke-dasharray:none;stroke-opacity:1" + id="rect7" + width="101.6746" + height="52.954491" + x="4.9380584" + y="3.8663552" /> + </g> + <text + xml:space="preserve" + style="font-size:4.23333px;line-height:normal;font-family:sans-serif;text-decoration-color:#000000;fill:#000000;stroke-width:0.264999;-inkscape-stroke:none;stop-color:#000000" + x="40.912861" + y="106.03439" + id="text11"><tspan + sodipodi:role="line" + id="tspan11" + style="stroke-width:0.265" + x="40.912861" + y="106.03439"></tspan><tspan + sodipodi:role="line" + style="stroke-width:0.265" + id="tspan12" + x="40.912861" + y="111.32606" /></text> + <g + id="g9" + transform="translate(-4.5021517,-0.4039482)"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.3333px;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1" + x="175.30579" + y="385.14359" + id="text9" + transform="scale(0.26458333)"><tspan + sodipodi:role="line" + id="tspan9" + x="175.30579" + y="385.14359">Examiner</tspan></text> + <rect + style="fill:none;stroke:#0000ff;stroke-width:0.431729;stroke-dasharray:none;stroke-opacity:1" + id="rect9" + width="28.884327" + height="7.8319788" + x="44.685955" + y="95.93483" /> + </g> + <text + xml:space="preserve" + style="font-size:4.23333px;line-height:normal;font-family:sans-serif;text-align:center;text-decoration-color:#000000;text-anchor:middle;fill:#000000;stroke-width:0.264999;-inkscape-stroke:none;stop-color:#000000" + x="54.733913" + y="109.38216" + id="text13"><tspan + sodipodi:role="line" + id="tspan13" + style="text-align:center;text-anchor:middle;stroke-width:0.265" + x="54.733913" + y="109.38216">Allocator prepped with all fonts in the DCP</tspan><tspan + sodipodi:role="line" + style="text-align:center;text-anchor:middle;stroke-width:0.265" + x="54.733913" + y="114.67383" + id="tspan14">Creates ID for each font</tspan></text> + <path + style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.465;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#ConcaveTriangle);stop-color:#000000;stop-opacity:1" + d="m 100.96906,105.01559 h 18.54651" + id="path14" /> + <path + style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.465;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#ConcaveTriangle-0);stop-color:#000000" + d="M -13.193139,105.01559 H 5.3533708" + id="path14-1" /> + <path + style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.465;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#ConcaveTriangle-0-5);stop-color:#000000" + d="m -32.370275,172.28664 h 18.54651" + id="path14-1-6" /> + <path + style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.465;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#ConcaveTriangle-0-5-6);stop-color:#000000" + d="m 67.930036,172.28664 h 18.5465" + id="path14-1-6-2" /> + <path + style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.465;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#ConcaveTriangle-0-5-6-0);stop-color:#000000" + d="m 154.20122,172.28664 h 18.5465" + id="path14-1-6-2-5" /> + <path + style="font-variation-settings:normal;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.465;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;marker-end:url(#ConcaveTriangle-2);stop-color:#000000" + d="m 172.0024,105.01559 h 18.54651" + id="path14-9" /> + <text + xml:space="preserve" + style="font-size:4.23333px;line-height:normal;font-family:sans-serif;text-decoration-color:#000000;fill:#000000;stroke-width:0.264999;-inkscape-stroke:none;stop-color:#000000" + x="126.92857" + y="98.415504" + id="text15"><tspan + sodipodi:role="line" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:inconsolata;-inkscape-font-specification:inconsolata;stroke-width:0.265" + x="126.92857" + y="98.415504" + id="tspan17">FONT</tspan><tspan + sodipodi:role="line" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:inconsolata;-inkscape-font-specification:inconsolata;stroke-width:0.265" + x="126.92857" + y="103.8511" + id="tspan16">0_FONT</tspan><tspan + sodipodi:role="line" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:inconsolata;-inkscape-font-specification:inconsolata;stroke-width:0.265" + x="126.92857" + y="109.2867" + id="tspan19">1_FONT</tspan><tspan + sodipodi:role="line" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:inconsolata;-inkscape-font-specification:inconsolata;stroke-width:0.265" + x="126.92857" + y="114.72229" + id="tspan20">2_FONT</tspan><tspan + sodipodi:role="line" + style="stroke-width:0.265" + x="126.92857" + y="120.01396" + id="tspan18" /></text> + <text + xml:space="preserve" + style="font-size:4.23333px;line-height:1.29;font-family:sans-serif;text-decoration-color:#000000;fill:#008000;stroke-width:0.264999;-inkscape-stroke:none;stop-color:#000000" + x="141.02527" + y="98.415504" + id="text21"><tspan + sodipodi:role="line" + id="tspan21" + style="fill:#008000;stroke-width:0.265;line-height:1.29" + x="141.02527" + y="98.415504">Subs from A</tspan><tspan + sodipodi:role="line" + style="fill:#008000;stroke-width:0.265;line-height:1.29" + x="141.02527" + y="103.8765" + id="tspan22">Caps from B</tspan><tspan + style="fill:#008000;stroke-width:0.265;line-height:1.29" + sodipodi:role="line" + id="tspan36" + x="141.02527" + y="109.33749"><tspan + id="tspan38" + style="stroke-width:0.264999;line-height:1.29">S</tspan>ubs from C</tspan><tspan + style="fill:#008000;stroke-width:0.265;line-height:1.29" + sodipodi:role="line" + id="tspan37" + x="141.02527" + y="114.79849">Caps from D</tspan></text> + <text + xml:space="preserve" + style="font-size:4.23333px;line-height:normal;font-family:sans-serif;text-decoration-color:#000000;fill:#000000;stroke-width:0.264999;-inkscape-stroke:none;stop-color:#000000" + x="197.82054" + y="103.47042" + id="text25"><tspan + sodipodi:role="line" + id="tspan25" + style="stroke-width:0.265" + x="197.82054" + y="103.47042">Store in <tspan + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:inconsolata;-inkscape-font-specification:inconsolata" + id="tspan33">TextContent</tspan></tspan><tspan + sodipodi:role="line" + style="stroke-width:0.265" + x="197.82054" + y="108.90601" + id="tspan32">Written to <tspan + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:inconsolata;-inkscape-font-specification:inconsolata" + id="tspan34">metadata.xml</tspan></tspan><tspan + sodipodi:role="line" + style="stroke-width:0.265" + x="197.82054" + y="114.19768" + id="tspan26">Then user can change font TTF.</tspan></text> + <g + id="g28" + transform="translate(7.508606,2.5808953)"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.3333px;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000" + x="175.30579" + y="385.14359" + id="text9-2" + transform="matrix(0.26458333,0,0,0.26458333,-139.28384,58.778076)"><tspan + sodipodi:role="line" + id="tspan9-9" + x="175.30579" + y="385.14359">Decoder</tspan></text> + <rect + style="fill:none;stroke:#0000ff;stroke-width:0.405832;stroke-dasharray:none;stroke-opacity:1" + id="rect9-3" + width="25.438843" + height="7.8578768" + x="-94.181831" + y="154.63504" /> + </g> + <g + id="g45" + transform="translate(0,-0.88292437)"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.3333px;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000" + x="175.30579" + y="385.14359" + id="text9-2-5" + transform="matrix(0.26458333,0,0,0.26458333,-38.448692,62.241907)"><tspan + sodipodi:role="line" + id="tspan9-9-0" + x="175.30579" + y="385.14359">DCPDecoder</tspan></text> + <rect + style="fill:none;stroke:#0000ff;stroke-width:0.481702;stroke-dasharray:none;stroke-opacity:1" + id="rect9-3-4" + width="36.188915" + height="7.7820067" + x="6.6912527" + y="158.1368" /> + </g> + <g + id="g39" + transform="translate(-75.313631,-8.3515676)"> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.3333px;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;vector-effect:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.00157;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000" + x="175.30579" + y="385.14359" + id="text9-2-5-7" + transform="matrix(0.26458333,0,0,0.26458333,132.90091,69.710541)"><tspan + sodipodi:role="line" + id="tspan9-9-0-2" + x="175.30579" + y="385.14359">TextDecoder</tspan></text> + <rect + style="fill:none;stroke:#0000ff;stroke-width:0.481702;stroke-dasharray:none;stroke-opacity:1" + id="rect9-3-4-7" + width="36.188915" + height="7.7820067" + x="178.04085" + y="165.60544" /> + </g> + <text + xml:space="preserve" + style="font-size:4.23333px;line-height:normal;font-family:sans-serif;text-align:center;text-decoration-color:#000000;text-anchor:middle;fill:#000000;stroke-width:0.264999;-inkscape-stroke:none;stop-color:#000000" + x="-73.991905" + y="148.05048" + id="text13-2"><tspan + sodipodi:role="line" + id="tspan13-0" + style="text-align:center;text-anchor:middle;stroke-width:0.265" + x="-73.991905" + y="148.05048">Allocator prepped with all fonts in the DCP</tspan><tspan + sodipodi:role="line" + style="text-align:center;text-anchor:middle;stroke-width:0.265" + x="-73.991905" + y="153.34213" + id="tspan14-6">Creates ID for each font, <tspan + style="font-weight:bold" + id="tspan29">same IDs as before</tspan></tspan></text> + <text + xml:space="preserve" + style="font-size:4.23333px;line-height:normal;font-family:sans-serif;text-decoration-color:#000000;fill:#000000;stroke-width:0.264999;-inkscape-stroke:none;stop-color:#000000" + x="-113.201" + y="173.88472" + id="text28"><tspan + sodipodi:role="line" + id="tspan28" + style="stroke-width:0.265" + x="-113.201" + y="173.88472">Emits a subtitle with FONT from asset C</tspan></text> + <text + xml:space="preserve" + style="font-size:4.23333px;line-height:normal;font-family:sans-serif;text-decoration-color:#000000;fill:#000000;stroke-width:0.264999;-inkscape-stroke:none;stop-color:#000000" + x="-9.4808464" + y="170.79439" + id="text30"><tspan + sodipodi:role="line" + id="tspan30" + style="stroke-width:0.265" + x="-9.4808464" + y="170.79439"><tspan + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:inconsolata;-inkscape-font-specification:inconsolata" + id="tspan31">dcp::SubtitleString</tspan> re-written to use</tspan><tspan + sodipodi:role="line" + style="stroke-width:0.265" + x="-9.4808464" + y="176.22998" + id="tspan40">font ID <tspan + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:inconsolata;-inkscape-font-specification:inconsolata" + id="tspan39">1_FONT</tspan> (from allocator)</tspan></text> + <text + xml:space="preserve" + style="font-size:4.23333px;line-height:normal;font-family:sans-serif;text-decoration-color:#000000;fill:#000000;stroke-width:0.264999;-inkscape-stroke:none;stop-color:#000000" + x="93.52124" + y="171.21983" + id="text41"><tspan + sodipodi:role="line" + id="tspan41" + style="stroke-width:0.265" + x="93.52124" + y="171.21983"><tspan + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:inconsolata;-inkscape-font-specification:inconsolata" + id="tspan43">StringText</tspan> created with the</tspan><tspan + sodipodi:role="line" + style="stroke-width:0.265" + x="93.52124" + y="176.51149" + id="tspan42">actual font TTF.</tspan></text> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-dasharray:0.26458299, 0.52916598;stroke-dashoffset:0;marker-start:url(#marker43);marker-end:url(#ConcaveTriangle-0-5-6)" + d="m 192.80332,112.69695 -54.0961,41.53069" + id="path43" /> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333px;line-height:normal;font-family:inconsolata;-inkscape-font-specification:inconsolata;text-decoration-color:#000000;fill:#000000;stroke-width:0.264999;-inkscape-stroke:none;stop-color:#000000" + x="17.63851" + y="205.46201" + id="text44" + transform="rotate(-37.518172)"><tspan + sodipodi:role="line" + id="tspan44" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:inconsolata;-inkscape-font-specification:inconsolata;stroke-width:0.265" + x="17.63851" + y="205.46201">TextContent::get_font("1_FONT")</tspan></text> + <text + xml:space="preserve" + style="font-size:4.23333px;line-height:normal;font-family:sans-serif;text-decoration-color:#000000;fill:#000000;stroke-width:0.264999;-inkscape-stroke:none;stop-color:#000000" + x="178.33331" + y="173.31322" + id="text45"><tspan + sodipodi:role="line" + id="tspan45" + style="stroke-width:0.265" + x="178.33331" + y="173.31322">Output DCP</tspan></text> + </g> +</svg> |
