diff options
Diffstat (limited to 'scripts/FontGlyphCreation.coffee')
| -rw-r--r-- | scripts/FontGlyphCreation.coffee | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/scripts/FontGlyphCreation.coffee b/scripts/FontGlyphCreation.coffee new file mode 100644 index 0000000..d334b76 --- /dev/null +++ b/scripts/FontGlyphCreation.coffee @@ -0,0 +1,178 @@ +# This work code was used to create the rendered font glyphs + +game.vaquitas.splice(0) + +@view.coffeecharniaConsole.style.setProperty("opacity", 0.5) + +false then document.head.appendChild do(document)@> + el = document.createElement "link" + el.rel = "stylesheet" + el.href = "Simonetta.css" + el.type = "text/css" + el + +# document.head.lastChild.src +# window.canvaz = null + +canvaz = window.canvaz ?= do(document)@> + el = document.createElement "canvas" + el.setAttribute "style", "bottom:0;position:absolute;background:red" + document.body.appendChild el + el + +canvaz.setAttribute "style", "bottom:0;position:absolute;background:#09f" + +retroScaling = (c)-> + c.imageSmoothingEnabled = false + c.webkitImageSmoothingEnabled = false + c.mozImageSmoothingEnabled = false + + +# throw canvaz + +ctx = canvaz.getContext "2d" +ctx.clearRect 0, 0, 300, 150 + +retroScaling ctx + +fontRenderer = + ctx: ctx + put: (t, x, y, c)@> + @ctx.fillStyle = c + @ctx.fillText t, x, y + + colors: [ "black", "white" ] + + put_b: (t, x, y)@> + # [ m, n ] = [ "black", "white" ] + [ m, n ] = @colors + + @put t, x-1, y+0, m + @put t, x+0, y+1, m + @put t, x+1, y+0, m + @put t, x+0, y-1, m + + if true + @ctx.globalAlpha = 0.3 + @put t, x-1, y-1, m + @put t, x+1, y-1, m + @put t, x-1, y+1, m + @put t, x+1, y+1, m + @ctx.globalAlpha = 1.0 + + @put t, x, y, n + @put t, x, y, n + @ctx.globalAlpha = 0.3 + @put t, x, y, n + @ctx.globalAlpha = 1.0 + + put_m: (t, x, y)@> + { width } = @ctx.measureText(t) + # @ctx.fillStyle = "blue" + # width++ + # @ctx.globalAlpha = 0.2 + # @ctx.fillRect x, 0, width, @lineHeight + # @ctx.globalAlpha = 1 + @put_b t, x, y + + chars: " abcdefghijklmnopqrstuvwxyzñçABCDEFGHIJKLMNOPQRSTUVWXYZ!?,.@/:;0123456789áéíóúàèìòù" + + measure: (c)@> @ctx.measureText(c).width + + fontHeight: 8 + + document: document + + drawingContext: (w,h)@> + el = @document.createElement "canvas" + el.width = w + el.height = h + el.getContext '2d' + + id2dc: (id)@> + c = @drawingContext(id.width, id.height) + c.putImageData(id, 0, 0) + c + + renderChars: @> + fontHeight = @fontHeight + @lineHeight = lineHeight = fontHeight + (fontHeight / 2 | 0) + + ctx.font = font = "bold #{fontHeight}px Simonetta" + + false then for x in @chars + @put_m x, 2, 1+fontHeight + + tw = 0 + @charMap = { } + for x in @chars + cw = @measure(x) + @charMap[x] = { w: cw, o: tw } + tw += cw + 4 + + @glyphs = @drawingContext ((tw+15) >> 4) << 4, lineHeight + + @glyphs.font = font + + cc = + ctx: @glyphs + __proto__: @ + + for ch in @chars + p = @charMap[ch] + cc.put_m ch, p.o + 2, 1+fontHeight + + @ctx.drawImage @glyphs.canvas, 0, 0, 150, lineHeight, 0, 0, 300, lineHeight * 2 + + @glyphsConv 'toImageData' + @glyphsConv 'toDrawingContext' + @glyphsConv 'toDataUrl' + @glyphsConv 'fromDataUrl' + # @drawTextSpaced @chars, 0, lineHeight * 2 # For testing + @ + test: @> + { lineHeight } = @ + @drawText "Vilma, the Happy Vaquita!", 30, lineHeight * 2 + + getFont: @> + + + drawTextSpaced: (t, x, y)@> + { charmap, lineHeight } = @ + scale = 2 + g = @glyphs.canvas + for c in t + p = @charMap[c] + { w, o } = p + # throw o + @ctx.drawImage g, o, 0, w + 4, lineHeight, x, y * scale, (w + 4) * scale, lineHeight * scale + x += (w + 4) * scale + + drawText: (t, x, y)@> + { charmap, lineHeight } = @ + scale = 2 + g = @glyphs.canvas + for c in t + p = @charMap[c] + { w, o } = p + # throw o + @ctx.drawImage g, o, 0, w + 4, lineHeight, x, y * scale, (w + 4) * scale, lineHeight * scale + x += (w + 1) * scale + + glyphsConv: (format)@> + @glyphs = ((f)-> f[format]()) + toImageData: => + g = @glyphs + c = g.canvas + g.getImageData(0, 0, c.width, c.height) + toDrawingContext: => + @id2dc(@glyphs) + toDataUrl: => @glyphs.canvas.toDataURL() + fromDataUrl: => + el = @document.createElement "img" + el.src = @glyphs + el + +fontRenderer.renderChars() # finaly + # ctx.drawImage canvaz, 0, 0, 50, 100, 50, 100, 100, 200 + # ctx.drawImage canvaz, 0, 0, 25, 50, 25, 50, 100, 200 |
