           (doseq [[row line] (map-indexed vector (reverse @character-map))
                   [col c]    (map-indexed vector line)]
             ;;(log/info "row" row "col" col "c" c)
-            (let [chr        (or (get c :fx-character) (get c :character))
+            (let [chr        (char (or (get c :fx-character) (get c :character)))
                   chr        (if (and (= layer-id base-layer-id)
                                       (= chr (char 0)))
                                  \space

           u-bg
           font-size
           term-dim
           font-tex-dim]  (with-gl-context gl-lock (mapv #(GL20/glGetUniformLocation pgm-id %)
                                                         ["glyphTextureDimensions"
                                                          "uMVMatrix"
                                                          "uPMatrix"

          [fbo-id fbo-texture]
                           (with-gl-context gl-lock (fbo-texture screen-width screen-height))
          ; init shaders
          [^int pgm-id
           ^int fb-pgm-id]      (with-gl-context gl-lock (init-shaders (get fx-shader :name)))
          pos-vertex-attribute            (with-gl-context gl-lock (GL20/glGetAttribLocation pgm-id "aVertexPosition"))
          texture-coords-vertex-attribute (with-gl-context gl-lock (GL20/glGetAttribLocation pgm-id "aTextureCoord"))
          fb-pos-vertex-attribute            (with-gl-context gl-lock (GL20/glGetAttribLocation fb-pgm-id "aVertexPosition"))
