|  | <!DOCTYPE html> | 
|  | <meta charset="UTF-8"> | 
|  | <style> | 
|  | .parent { | 
|  | baseline-shift: 30px; | 
|  | } | 
|  | .target { | 
|  | stroke: black; | 
|  | /* | 
|  | CSS transitions and animations for baseline-shift are broken unless a | 
|  | numerical underlying value is specified. See crbug.com/304007. | 
|  | */ | 
|  | baseline-shift: 0px; | 
|  | } | 
|  | .expected { | 
|  | stroke: green; | 
|  | } | 
|  | svg:nth-child(2n) { | 
|  | margin-right: 10px; | 
|  | } | 
|  | svg { | 
|  | baseline-shift: 30px; | 
|  | } | 
|  | </style> | 
|  | <body> | 
|  | <template id="target-template"> | 
|  | <svg width="30" height="50"> | 
|  | <!-- | 
|  | We have to specify the target class on the text element because numerical | 
|  | values of baseline-shift are not inherited properly. See crbug.com/304006. | 
|  | --> | 
|  | <text x="0" y="25" font-size="10" class="target"> | 
|  | <tspan>T</tspan>T | 
|  | </text> | 
|  | </svg> | 
|  | </template> | 
|  | <script src="resources/interpolation-test.js"></script> | 
|  | <script> | 
|  | assertInterpolation({ | 
|  | property: 'baseline-shift', | 
|  | from: neutralKeyframe, | 
|  | to: '20px', | 
|  | }, [ | 
|  | {at: -0.25, is: '-5px'}, | 
|  | {at: 0, is: '0px'}, | 
|  | {at: 0.25, is: '5px'}, | 
|  | {at: 0.5, is: '10px'}, | 
|  | {at: 0.75, is: '15px'}, | 
|  | {at: 1, is: '20px'}, | 
|  | {at: 1.25, is: '25px'}, | 
|  | ]); | 
|  |  | 
|  | assertInterpolation({ | 
|  | property: 'baseline-shift', | 
|  | from: 'initial', | 
|  | to: '20px', | 
|  | }, [ | 
|  | {at: -0.25, is: '-5px'}, | 
|  | {at: 0, is: '0px'}, | 
|  | {at: 0.25, is: '5px'}, | 
|  | {at: 0.5, is: '10px'}, | 
|  | {at: 0.75, is: '15px'}, | 
|  | {at: 1, is: '20px'}, | 
|  | {at: 1.25, is: '25px'}, | 
|  | ]); | 
|  |  | 
|  | assertInterpolation({ | 
|  | property: 'baseline-shift', | 
|  | from: 'inherit', | 
|  | to: '20px', | 
|  | }, [ | 
|  | {at: -0.25, is: '32.5px'}, | 
|  | {at: 0, is: '30px'}, | 
|  | {at: 0.25, is: '27.5px'}, | 
|  | {at: 0.5, is: '25px'}, | 
|  | {at: 0.75, is: '22.5px'}, | 
|  | {at: 1, is: '20px'}, | 
|  | {at: 1.25, is: '17.5px'}, | 
|  | ]); | 
|  |  | 
|  | assertInterpolation({ | 
|  | property: 'baseline-shift', | 
|  | from: 'unset', | 
|  | to: '20px', | 
|  | }, [ | 
|  | {at: -0.25, is: '-5px'}, | 
|  | {at: 0, is: '0px'}, | 
|  | {at: 0.25, is: '5px'}, | 
|  | {at: 0.5, is: '10px'}, | 
|  | {at: 0.75, is: '15px'}, | 
|  | {at: 1, is: '20px'}, | 
|  | {at: 1.25, is: '25px'}, | 
|  | ]); | 
|  |  | 
|  | assertInterpolation({ | 
|  | property: 'baseline-shift', | 
|  | from: '-10px', | 
|  | to: '10px' | 
|  | }, [ | 
|  | {at: -0.25, is: '-15px'}, | 
|  | {at: 0, is: '-10px'}, | 
|  | {at: 0.25, is: '-5px'}, | 
|  | {at: 0.5, is: '0px'}, | 
|  | {at: 0.75, is: '5px'}, | 
|  | {at: 1, is: '10px'}, | 
|  | {at: 1.25, is: '15px'}, | 
|  | ]); | 
|  |  | 
|  | assertInterpolation({ | 
|  | property: 'baseline-shift', | 
|  | from: 'baseline', | 
|  | to: '100px', | 
|  | }, [ | 
|  | {at: -0.25, is: '-25px'}, | 
|  | {at: 0, is: '0px'}, | 
|  | {at: 0.25, is: '25px'}, | 
|  | {at: 0.5, is: '50px'}, | 
|  | {at: 0.75, is: '75px'}, | 
|  | {at: 1, is: '100px'}, | 
|  | {at: 1.25, is: '125px'}, | 
|  | ]); | 
|  | assertInterpolation({ | 
|  | property: 'baseline-shift', | 
|  | from: '100px', | 
|  | to: 'baseline', | 
|  | }, [ | 
|  | {at: -0.25, is: '125px'}, | 
|  | {at: 0, is: '100px'}, | 
|  | {at: 0.25, is: '75px'}, | 
|  | {at: 0.5, is: '50px'}, | 
|  | {at: 0.75, is: '25px'}, | 
|  | {at: 1, is: '0px'}, | 
|  | {at: 1.25, is: '-25px'}, | 
|  | ]); | 
|  | assertNoInterpolation({ | 
|  | property: 'baseline-shift', | 
|  | from: 'sub', | 
|  | to: '100px', | 
|  | }); | 
|  | assertNoInterpolation({ | 
|  | property: 'baseline-shift', | 
|  | from: '100px', | 
|  | to: 'super', | 
|  | }); | 
|  | assertInterpolation({ | 
|  | property: 'baseline-shift', | 
|  | from: '50mm', | 
|  | to: 'inherit', | 
|  | }, [ | 
|  | {at: -0.25, is: '228.720474243164px'}, | 
|  | {at: 0, is: '50mm'}, | 
|  | {at: 0.25, is: '149.232284545898px'}, | 
|  | {at: 0.75, is: '69.7440948486328px'}, | 
|  | {at: 1, is: '30px'}, | 
|  | {at: 1.25, is: '-9.74409484863281px'}, | 
|  | ]); | 
|  | assertInterpolation({ | 
|  | property: 'baseline-shift', | 
|  | from: '10px', | 
|  | to: '21em', | 
|  | }, [ | 
|  | {at: -0.25, is: '-40px'}, | 
|  | {at: 0, is: '10px'}, | 
|  | {at: 0.25, is: '60px'}, | 
|  | {at: 0.75, is: '160px'}, | 
|  | {at: 1, is: '210px'}, | 
|  | {at: 1.25, is: '260px'}, | 
|  | ]); | 
|  | assertInterpolation({ | 
|  | property: 'baseline-shift', | 
|  | from: 'inherit', | 
|  | to: '33em', | 
|  | }, [ | 
|  | {at: -0.25, is: '-45px'}, | 
|  | {at: 0, is: '30px'}, | 
|  | {at: 0.25, is: '105px'}, | 
|  | {at: 0.75, is: '255px'}, | 
|  | {at: 1, is: '330px'}, | 
|  | {at: 1.25, is: '405px'}, | 
|  | ]); | 
|  |  | 
|  | </script> | 
|  | </body> |