You are reading a single comment by @Gordon and its replies. Click here to read the full conversation.
  • Hmm. Maybe a stroked font is the best bet. I just had a play - it's slow, but quite interesting:

    font = new Uint16Array(E.toArrayBuffer(atob("EIAKgA­VFhQjFSQQKRQoGCsUJEIAERcQGDEXMBhWAC0QEDB­FECgxER1IHw0jRCBSACERICwxETAvRRU8FDAUIBU­UFwwVDBsQGBQdHB80HDwhQCNEIkQkPCkwKSAoFCo­MJGIAVRUMKCEWKBQoGiQbHBsUGQwbDBUQFBgUIBU­oFjQWQBVMFFQWRSM8ITgnOCVAKUgoUCpUJFQmTCJ­EIGoBXRxcH1gbVBhQHkwfRCI8JDQpLCkcKBQrECU­MJwwhECAUIDAfNBk4GzgVNBQsFSQXIBUgGCQfLB5­AJEgpUClYKFwrXCQqAhUVEBQUFRgXGBUUGhAYOgA­tEiQRHBUUGhAeECMUJxwqJCwsMDoADRIUERwVJBo­oHigjJCccKhQsDDBCAiEaICUNHzQhNR8MIGoDNRU­0KBEgWCAiARUmECUMJBAlFCcUJQwoagARIFggIgA­RJQwmECUUJBAkWgBREAgwUgAlFRgUEBkMHAwhECQ­YKSQpLCg4KUAkRCFEHEAZOBQsFCQUUgAZGyAULBU­sKFIBERgQGhQVGBQgFDAVOBY8FEAaQBg8HzQdDCl­EKFIAFRRAFCgcNB08HkAdRCNEIkAkOCksKSAoFCs­QJQwkUgA1FgwiSCA1FTQoUgA9FBQVEBwUHyAbLBg­4HkAdRCNEIkAkOCksKSAoFCsQJQwkUgNBFTwUMBQ­oFRwUFBkQHhAiFCQcKSgpLCg4KkAnRCJEI0AdOBw­sHCgdHB8UHhAgUgBFFRwoDRREFFIAIRUUFxAVEBs­UGBwdLB44HEAiRCFEJ0AkPCkwKSAoFCsQJQwmDCA­QIhgdJBw0HzwZQBtAFTwUMBQgFFIDQRo8HDQhKCE­kIBgiEB8MGgwbEBUYFCQUKBU0FzwXQBhAITwkNCk­oKSAoFCoQJCIBER4MHxAeFB0QHBElDCYQJRQkECQ­iAREeDB8QHhQdEB0VJhAlDCQQJRQnFCUMKGIDURQ­QIVAoagERHVgfESNYIGIDERRQIRAoSgENGAwaEBU­UFBwULBU0FjgUPBo8GDgdNB8kHiQjJSQgKSQoKCs­kJG4ASR5EGTwZMBooGyQaIB0gIyQgLCQ4J0AhRCE­xGygaJB0kIyggLCVJGUQjRCBMJFQmXCNgHWAeXBh­YGlAVSBQ8FDAVJBYcFBQaEBkMHAwjECEUJxwkJCk­wKTwoSCtQJlQlTRlII0ggTCRKACUVBCglFUQqESI­4IFYAERUQKBEUNBVAFkQUSBpIGEQdQB40HhEeNB9­AHEQiSCFIJ0QkQCk0KRAoVgFJG0QVPBQ0FCQVHBc­UFRAYDB0MIBAmFCQcKSQpNCg8KkQkSCRWABEVECg­RFCwVOBdAFUQYSB1IIEQmQCQ4KSwpEChOABEVECg­RFEQWER4wHREpRChKABEVECgRFEQWER4wHFYBSRt­EFTwUNBQkFRwXFBUQGAwdDCAQJhQkHCkkKTQoPCp­EJEglSCE1IUggWgARFRAoSRVIKhEeSBwiABEVECh­CADEUMCcsJCgpICkYKBArDCQIJgggVgARFRAoSRY­QISUdSChGABEVECkRKUAoYgARFRAoERUwKFEVMCh­RFVAoWgARFRAoERVIKEkVSChaACUVHBcUFRAYDB0­MIBAmFCQcKSQpNCg8KkQkSCVMIEwdSBtEFTwUNBQ­kFFYAERUQKBEUNBVAFkQUSBtIGUQeQB80HxAcWgA­lFRwXFBUQGAwdDCAQJhQkHCkkKTQoPCpEJEglTCB­MHUgbRBU8FDQUJBUxJ0goVgARFRAoERQ0FUAWRBR­IGkgYRB1AHjQeEB4tHUgoUgNFFTwUMBQgFRQXDBU­MGxAYFB0cHzQcPCFAI0QiRCQ8KTApICgUKgwkQgA­hFSAoBRQ8FFoAERcQIhQkHCkoKTAoPCpEJ0ggSBR­KAAUVJChFFSQoYgAJFRwoMRUcKDEVRChZFUQoUgA­NFUQoRRUMKEoABRYkHSQoRRYkHFIARRUMKA0URBU­NKUQoOgAREBAwFRAUMBEQLBARMCwwOgABFDgsOgA­lECQwKRAoMA0QKBANMCgwQgIhEAAiIRBAIEoAATB­IMCIBFRsMGQweEB0UHBAdDBxOAz0ZPCo9HDQfLBs­gGBgeEB0MIwwiECQYKSApLCg0KjwkTgARFRAqERw­YHyAbLBg0HjwdQCNAIjwkNCksKSAoGCoQJEoCPRw­0HywbIBgYHhAdDCMMIhAkGCkgKSwoNCo8JE4APRU­8Kj0cNB8sGyAYGB4QHQwjDCIQJBgpICksKDQqPCR­KAQ0hPCM8HTgcNB8sGyAYGB4QHQwjDCIQJBgpICk­sKDQqPCQyACkUIBUYFBQZFCsJGyQYTgM9GzwqOC8­0LCwwIDMYLj0cNB8sGyAYGB4QHQwjDCIQJBgpICk­sKDQqPCROABEVECsRHBwfJBswGDgfPB08KCIADRU­QFBQXEBAMFxEZECgqABUVGBQcFxgQFBcZGBgvFCw­MMAQwRgARFRArORkQJSEhPCgiABEVECh6AxEZECs­RHBwfJBswGDgfPB08Kz0cSB9QG1wYZB9oHWgoTgM­RGRArERwcHyQbMBg4HzwdPChOAyEYGB4QHQwjDCI­QJBgpICksKDQqPCdAIUAiPBw0HywbIBhOAxEYEDI­RHBgfIBssGDQePB1AI0AiPCQ0KSwpICgYKhAkTgM­9GDwyPRw0HywbIBgYHhAdDCMMIhAkGCkgKSwoNCo­8JDYDERkQKREiFBwcHyQbMBhGAjkcNB8oGxwYEB4­MHBAhGCIsIzQhOCY4JDQpKCkcKBAqDCQyABUVFCQ­YKSApKCsJGyQYTgMRGRAkFCkcKSgoMCk8Jz0ZPCh­CAwkZICs5GSAoWgMNGRwrLRkcKy0ZPCtNGTwoRgM­NGTgrORkMKEIDCRkgKzkZICkYLxAsCDAEMEYDORk­MKw0bOBkNKTgoOgAlERwSGBAUFhQUGBkcGyAZIB8­YHR0TGBEYFxwUIBokGCQeIBwQIiAgJCYkJCApHCs­YKRgvHC0ZIyAhICccJBgqFCgULhgvHCwkMCIAERA­QMDoAFREcEiAQJBYkFCAZHBsYGRgfIB0dEyARIBc­cFBgaFBgUHhgcKCIYIBQmFCQYKRwrICkgLxwtISM­YIRgnHCQgKiQoJC4gLxwsFDBiAw0hDCIQHRgdIB4­oHTgiQCJIIVAjVB0NIxAeGB4gHygeOCNAI0giUCN­UHVQcQgABFQApBCgEFAgVCCkMKAwUEBUQKRQoFBQ­YFRgpHCgcFCAVICkkKCQUKBUoKSwoLBQwFTApNCg­0FDgVOCk8KDwUQBVAKAIA=")));
    
    function drawChar(c,ox,oy,s) {
      c-=32;
      if (c<0 || c>95) return 0; // no char
      var i = 0;
      while (c)if(font[++i]&32768) c--;
      var width = font[i++]&63;
      var f;
      while (!((f=font[i++])&32768)) {
        var x = (f&63)*s + ox;
        var y = ((f>>6)&63)*s + oy;
        if (f&16384) g.moveTo(x,y); else g.lineTo(x,y);
      }
      return width*s;
    }
    function drawString(str,x,y,s) {
      x=x||0;
      y=y||0;
      s=s?(s/22):1;
      str=""+str;
      y -= 20*s;
      for (var i=0;i<str.length;i++)
        x+=drawChar(str.charCodeAt(i),x,y,s);
    }
    g.clear();drawString("Hello",0,0,10);g.f­lip();
    

    It uses half the space of the current vector font, and it scales down really well:

     #   #      # #
     #   #      # #
     ##### #### # #  ####
     #   # #### # # #   #
     #   # #    # # #   #
     #   # ## # # #  # ##
     #   #  ##  # #   ##
     
     #      #           #   #
     #      #           #   #
     #      #           #   #
     #      #    ####   #   #    ####
     ########   #    #  #   #   #    #
     #      #   #    #  #   #   #     #
     #      #  #######  #   #   #     #
     #      #  #        #   #   #     #
     #      #   #    #  #   #   #    #
     #      #    ####   #   #    ####
    

    It's just a matter of making the lines bigger when the text is rendered bigger.

About

Avatar for Gordon @Gordon started