tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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>