font-display.html (2717B)
1 <!DOCTYPE html> 2 <html class="reftest-wait"> 3 <title>Test for font-display @font-face descriptor</title> 4 <meta name="timeout" content="long"> 5 <link rel="help" href="https://drafts.csswg.org/css-fonts-4/#font-display-desc"> 6 <link rel="match" href="font-display-ref.html"> 7 <link rel="preload" href="/fonts/Ahem.ttf?pipe=trickle(d0)" as="font" crossorigin> 8 <style> 9 .hidden { display: none; } 10 </style> 11 <p>Tests how text with a font that takes <i>delay</i> seconds to load look like after <i>T</i> seconds from load start.</p> 12 <table id="container"> 13 <tr> 14 <th>T[sec]</th> 15 <th>delay[sec]</th> 16 <th>block</th> 17 <th>swap</th> 18 <th>fallback</th> 19 <th>optional</th> 20 </tr> 21 </table> 22 <script> 23 var fontDisplayValues = ['block', 'swap', 'fallback', 'optional']; 24 var configs = [{time: 0, delay: 1000}, 25 {time: 1000, delay: 0}, 26 {time: 1000, delay: 500}, 27 {time: 1000, delay: 3000}, 28 {time: 5000, delay: 2000}, 29 {time: 5000, delay: 4000}, 30 {time: 5000, delay: 8000}]; 31 32 function makeFontFaceDeclaration(family, config, display) { 33 url = '/fonts/Ahem.ttf?pipe=trickle(d' + config.delay / 1000 + ')'; 34 return '@font-face { font-family: ' + family + '; src: url("' + url + '"); font-display: ' + display + '; }'; 35 } 36 37 38 var maxTime = Math.max.apply(null, configs.map((config) => config.time)); 39 var table = document.getElementById('container'); 40 41 window.onload = function() { 42 for (var config, i = 0; config = configs[i]; i++) { 43 var tr = document.createElement('tr'); 44 tr.classList.add('hidden'); 45 var td1 = document.createElement('td'); 46 td1.textContent = config.time / 1000; 47 tr.appendChild(td1); 48 var td2 = document.createElement('td'); 49 td2.textContent = config.delay / 1000; 50 tr.appendChild(td2); 51 52 for (var display, j = 0; display = fontDisplayValues[j]; j++) { 53 var family = [display, config.time, config.delay].join('-'); 54 var rule = makeFontFaceDeclaration(family, config, display); 55 document.styleSheets[0].insertRule(rule, 0); 56 var td = document.createElement('td'); 57 td.textContent = 'a'; 58 td.style.fontFamily = family + ', Arial'; 59 tr.appendChild(td); 60 } 61 table.appendChild(tr); 62 if (config.time == 0) { 63 setTimeout((function(tr){ 64 tr.classList.remove('hidden'); 65 document.documentElement.classList.remove("reftest-wait"); 66 }).bind(null, tr), maxTime); 67 } else { 68 setTimeout((function(tr){tr.classList.remove('hidden')}).bind(null, tr), maxTime - config.time); 69 } 70 } 71 } 72 73 </script> 74 </html>