{% extends "_base.html" %} {% block title %}Glyphs{% endblock %} {% block style %} {{ super() }} .cell{ z-index: -100; float: left; display: block; text-align: center; padding: 5pt; margin: 5pt; width: 50pt; line-height: {{ pt_size | int * 1.5}}px; } .cell-word{ z-index: -100; float: left; display: block; text-align: center; padding: 5pt; margin: 5pt; line-height: {{ pt_size | int * 1.5}}px; } .cat-strings .cell { clear: both; position: static; float: none; text-align: left; } .box-title { clear: both; } {% endblock %} {% block content_name %} Diffenator {% endblock %} {% block content %} {% for font_class in font_styles or font_styles_old or font_styles_new %}
Tables
{% if diff.glyph_diff["glyphs"].new %}
New encoded glyphs
{% for glyph in diff.glyph_diff["glyphs"].new %}
{{ glyph.render() }}
{% endfor %}
{% endif %} {% if diff.glyph_diff["glyphs"].missing %}
Missing encoded Glyphs
{% for glyph in diff.glyph_diff["glyphs"].missing %}
{{ glyph.render() }}
{% endfor %}
{% endif %} {% if diff.glyph_diff["glyphs"].modified %}
Modified encoded Glyphs
{% for glyph in diff.glyph_diff["glyphs"].modified %}
{{ glyph.render() }}
{% endfor %}
{% endif %} {% for script in diff.glyph_diff["words"] %}
Misshapen {{ script }} words
{% for word in diff.glyph_diff["words"][script] %} {{ word.render() }} {% endfor %}
{% endfor %}
Misshapen user strings
{% for word in diff.strings %} {{ word.render() }} {% endfor %}
{% if diff.features %}
Fea
{{ diff.features }}
{% endif %} {% endfor %} {{ diff.tables.render() }} {% endblock %} {% block js %} class Table { constructor(data) { this.data = {"root": data} this.open("root") } createNode(key, label) { let childElem = document.createElement("div") let childKey = key childElem.dataset.path = childKey childElem.dataset.open = "0" childElem.innerHTML = label childElem.classList.add("node") return childElem } close(key) { let htmlParent = document.querySelector(`[data-path="${key}"]`) let label = htmlParent.childNodes[0].nodeValue htmlParent.replaceChildren() htmlParent.textContent = label htmlParent.dataset.open = "0" } open(key) { let htmlParent = document.querySelector(`[data-path="${key}"]`) htmlParent.dataset.open = "1" // traverse to correct data level based on data-path let path = key.split(".") let data = this.data for (var i=0; i prevTop) { res.push(i) } prevTop = currentTop } return res } async function insertBreaks() { switchFonts() await sleep(1) breaksBefore = wordBreaks() switchFonts() await sleep(1) breaksAfter = wordBreaks() console.log(breaksBefore.length, breaksAfter.length) if (breaksBefore.length >= breaksAfter.length) { breaks = breaksBefore } else { breaks = breaksAfter } words = document.getElementsByClassName("cell-word") breaks.forEach(function(i) { if (i != 0) { i = i } word = words[i] spacer = document.createElement("div") spacer.className = "spacer" word.parentNode.insertBefore(spacer, word) }) } function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } insertBreaks() {% endblock %}