diff --git a/app.py b/app.py
index 96c61d581651ca4ec7787676ba4859f65e687df2..f53cdfb08a914c317b535c0e5ab8be3dfd2c9547 100644
--- a/app.py
+++ b/app.py
@@ -413,18 +413,31 @@ def resizeSVG (m):
 
     return f'<svg xmlns="http://www.w3.org/2000/svg" viewbox="{viewbox}" width="{newWidth}mm" height="{newHeight}mm" class="svgbob">'
 
-# @app.route('/svg/<id>')
-# def svg (id):
-#     params = {
-#         'pad': id or 'default',
-#         'weight': request.args.get('w') or '2',
-#     }
-#     params['pad-full'] = etherpad + prefix + params['pad']
-
-#     # get pad content
-#     print('  getting ' + params['pad-full'])
-#     pad_export = requests.get(params['pad-full'] + '/export/txt')
-#     ascii = pad_export.text
+@app.route('/svg/<id>')
+def svg (id):
+    params = {
+        'pad': id or 'default',
+        'weight': request.args.get('w') or '2',
+    }
+    params['pad-full'] = etherpad + prefix + params['pad']
+
+    # get pad content
+    print('  getting ' + params['pad-full'])
+    pad_export = requests.get(params['pad-full'] + '/export/txt')
+    ascii = pad_export.text
+
+    # to SVG
+    svg = simplifySVG(ascii2svg(ascii, params['weight']))
+    # Remove background rect inserted by SVG Bob
+    svg = re.sub(r'\<rect class="backdrop" x="\d+" y="\d+" width="\d+" height="\d+">\<\/rect\>', '', svg, flags=re.M)
+    svg = re.sub(r'<svg xmlns="http://www.w3.org/2000/svg" width="(\d+)" height="(\d+)" class="svgbob">', resizeSVG,svg)
+
+    r = Response(svg, mimetype='application/svg')
+    r.headers.extend({
+        'Content-Disposition': f'attachment; filename="cobbled-paths-{id}.svg"'
+    })
+
+    return r
 
 
 @app.route('/hpgl/<id>')
diff --git a/static/css/interface.css b/static/css/interface.css
index 93c632bf58c2622dbfee3d90cb28b2405abbb356..64e50619be2050edb23a3b2f25c04002219ef7b8 100644
--- a/static/css/interface.css
+++ b/static/css/interface.css
@@ -302,6 +302,11 @@ details[open] > summary{
     color: white;
 }
 
+#current-figfont,
+.category{
+    width: 15em;
+}
+
 .collection-menu{
     position: relative;
 }
@@ -348,7 +353,7 @@ summary + div{
     max-height: calc(100vh - 1px - var(--bar-h));
     overflow: auto;
     
-    width: calc(100vw - 24rem);
+    width: calc(100vw - 30rem);
     display: grid;
     grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
     gap: 1px;
@@ -394,6 +399,14 @@ summary + div{
     mix-blend-mode: darken;
     display: block;
 }
+
+
+
+.legend{
+    width: 24rem;
+    font-size: 0.825rem;
+    margin-top: 1em;
+}
 .legend::before{
     content: '';
     width: 0.75rem;
diff --git a/templates/base.html b/templates/base.html
index 366b933787d7b99711472367d361c34ba67b679b..d84eadb5116dd41e5b5bbd2717c99a748cab1e8f 100644
--- a/templates/base.html
+++ b/templates/base.html
@@ -29,8 +29,8 @@
       <ul>
           <li><a {% if request.url_rule.endpoint == "index" %}class="active"{% endif %} href="/">about</a></li>
           <li><a {% if request.url_rule.endpoint == "draw" %}class="active"{% endif %} href="/draw.html">ASCII draw</a></li>
-          <li><a {% if request.url_rule.endpoint == "font" %}class="active"{% endif %} href="/font.html">FIGfont make</a></li>
           <li><a {% if request.url_rule.endpoint == "catalogue" %}class="active"{% endif %} href="/catalogue.html">FIGfont catalogue</a></li>
+          <li><a {% if request.url_rule.endpoint == "font" %}class="active"{% endif %} href="/font.html">FIGfont make</a></li>
           <!-- <li><a {% if request.url_rule.endpoint == "image" %}class="active"{% endif %} href="/image.html">image</a></li> -->
           <li><a {% if request.url_rule.endpoint == "gallery" %}class="active"{% endif %} href="/gallery.html">gallery</a></li>
       </ul>
diff --git a/templates/catalogue.html b/templates/catalogue.html
index 4039f368063831cd1850a36f38bccfc33f4621e2..c0b3d70117f61a2e4e112436e99497b5e5c26adb 100644
--- a/templates/catalogue.html
+++ b/templates/catalogue.html
@@ -22,7 +22,7 @@
               </div>
             {% endfor %}
           {% endfor %}
-          <a class="specimen-link" href="/specimen/{{type}}" target="_blank">see all {{type}}</a>
+          <!-- <a class="specimen-link" href="/specimen/{{type}}" target="_blank">see all {{type}}</a> -->
 
           </div>
         </details>
diff --git a/templates/drawing.html b/templates/drawing.html
index 84c5289044854a730c736f56ee64e88c9dbf91ba..59c30ce1e67f88e95c5eb698e660f5d559048e22 100644
--- a/templates/drawing.html
+++ b/templates/drawing.html
@@ -41,18 +41,23 @@
     </script>
 
     <script>
-      let save_button = document.getElementById('save-svg');
-
-      save_button.addEventListener('click', function(){
-        //get svg element.
-        let svg = document.getElementsByTagName("svg")[0];
-
-        //get svg source.
-        let serializer = new XMLSerializer();
-        let source = serializer.serializeToString(svg);
-
-        let blob = new Blob([source], {type: "text/plain;charset=utf-8"});
-        saveAs(blob, 'cobbled-paths.svg');
+      let save_button_svg = document.getElementById('save-svg');
+      save_button_svg.addEventListener('click', function(){
+        let url = document.URL,
+        parts = url.split('/'),
+        name = parts[parts.length-1],
+        svg_url = '/svg/' + name,
+        a = document.createElement('a');
+        a.href = svg_url;
+        a.setAttribute('download', 'download');
+        if (document.createEvent) {
+          const event = document.createEvent('MouseEvents');
+          event.initEvent('click', true, true);
+          a.dispatchEvent(event);
+        }
+        else {
+          a.click();
+        }
       });
 
       let save_button_hpgl = document.getElementById('save-hpgl');
diff --git a/templates/writing.html b/templates/writing.html
index ab8b4eeaa674844ef793077ab071c13e53378451..6c77f9ad985638e8b4e0438bbc95a7c30d6ed4f7 100644
--- a/templates/writing.html
+++ b/templates/writing.html
@@ -45,18 +45,23 @@
     </script>
 
     <script>
-      let save_button = document.getElementById('save-svg');
-
-      save_button.addEventListener('click', function(){
-        //get svg element.
-        let svg = document.getElementsByTagName("svg")[0];
-
-        //get svg source.
-        let serializer = new XMLSerializer();
-        let source = serializer.serializeToString(svg);
-
-        let blob = new Blob([source], {type: "text/plain;charset=utf-8"});
-        saveAs(blob, 'cobbled-paths.svg');
+      let save_button_svg = document.getElementById('save-svg');
+      save_button_svg.addEventListener('click', function(){
+        let url = document.URL,
+        parts = url.split('/'),
+        name = parts[parts.length-1],
+        svg_url = '/svg/' + name,
+        a = document.createElement('a');
+        a.href = svg_url;
+        a.setAttribute('download', 'download');
+        if (document.createEvent) {
+          const event = document.createEvent('MouseEvents');
+          event.initEvent('click', true, true);
+          a.dispatchEvent(event);
+        }
+        else {
+          a.click();
+        }
       });
 
       let save_button_hpgl = document.getElementById('save-hpgl');