docs: function fontAdded(fontObj, url) {
        function properties(obj, list) {
          var moreInfo = document.createElement('table');
          for (var i = 0; i < list.length; i++) {
            var tr = document.createElement('tr');
            var td1 = document.createElement('td');
            td1.textContent = list[i];
            tr.appendChild(td1);
            var td2 = document.createElement('td');
            td2.textContent = obj[list[i]].toString();
            tr.appendChild(td2);
            moreInfo.appendChild(tr);
          }
          return moreInfo;
        }
        var moreInfo = properties(fontObj, ['name', 'type']);
        var fontName = fontObj.loadedName;
        var font = document.createElement('div');
        var name = document.createElement('span');
        name.textContent = fontName;
        var download = document.createElement('a');
        if (url) {
          url = /url\(['"]?([^\)"']+)/.exec(url);
          download.href = url[1];
        } else if (fontObj.data) {
          url = URL.createObjectURL(new Blob([fontObj.data], {
            type: fontObj.mimeType,
          }));
          download.href = url;
        }
        download.textContent = 'Download';
        var logIt = document.createElement('a');
        logIt.href = '';
        logIt.textContent = 'Log';
        logIt.addEventListener('click', function(event) {
          event.preventDefault();
          console.log(fontObj);
        });
        var select = document.createElement('input');
        select.setAttribute('type', 'checkbox');
        select.dataset.fontName = fontName;
        select.addEventListener('click', (function(select, fontName) {
          return (function() {
             selectFont(fontName, select.checked);
          });
        })(select, fontName));
        font.appendChild(select);
        font.appendChild(name);
        font.appendChild(document.createTextNode(' '));
        font.appendChild(download);
        font.appendChild(document.createTextNode(' '));
        font.appendChild(logIt);
        font.appendChild(moreInfo);
        fonts.appendChild(font);
        // Somewhat of a hack, should probably add a hook for when the text layer
        // is done rendering.
        setTimeout(() => {
          if (this.active) {
            resetSelection();
          }
        }, 2000);
      }