   private var foundTextures : Set<Int> = []
   private var monospaced : Bool = false
   private(set) var aspect : Float
-  
-//  private struct TextAtlas {
-////    let texture : GLKTextureInfo
-//    let texture : Texture
-//    // What font size was this generated at?
-//    let fontSize : Int
-//    // How many characters do we hold horizontally
-//    let widthInCharacters : Int
-//    // How big is a single character in UV
-//    let uvSize : (width: GLfloat, height: GLfloat)
-//    // Physical size of a single character
-//    let texelSize : (width: GLfloat, height: GLfloat)
-//    // The collection of characters in this atlas
-//    let text : String
-//    // Location of characters
-//    let coords : [Character : (x: Int, y: Int)]
-//    let newAtlas : TextureAtlas
-//  }
+
   private var textAtlasses : [Int: TextureAtlas] = [:]
   
   /// Cleans out textures not used recently

      try! atlas.addItem(char, item: tex)
      tool.deleteTexture(tex)
    }
//    
//    // Create the CG context to build the texture from
//    UIGraphicsBeginImageContextWithOptions(textureSize, false, 1)
//    let context = UIGraphicsGetCurrentContext()
//    // We precalculated the adjustment due to screen scaling, so apply it manually
//    // Also, flip the coordinates so it is upright in texture memory
//    CGContextTranslateCTM(context, 0, textureSize.height)
//    CGContextScaleCTM(context, CGFloat(scale), -CGFloat(scale))
//    
//    // Now render every character
//    for char in 0..<atlasText.characters.count {
//      // Get the character of the text string to render
//      let renderChar = atlasText.characters[atlasText.characters.startIndex.advancedBy(char)]
//      
//      // Calculate the lookup index for this
//      let lX = char % characterCount.x
//      let lY = (char - lX) / characterCount.x
//      
//      // Work out the exact point to draw and do it
//      let point = CGPoint(x: lX*characterFullPointSize.w, y: lY*characterFullPointSize.h)
//      let drawString = (String(renderChar) as NSString)
//      drawString.drawAtPoint(point, withAttributes: attrs)
//    }
//    
//    // Now, grab this as a texture
//    let image = CGBitmapContextCreateImage(context)!
//    UIGraphicsEndImageContext()
//    do {
//      let texture = Texture(glk: try GLKTextureLoader.textureWithCGImage(image, options: nil))
//      texture.debugName(fontName + " " + String(size))
//
//      // Bind this, and generate a mipmap
//      tool.bind(texture)
//      glGenerateMipmap(GLenum(GL_TEXTURE_2D));
//
//      
//      let atlas = TextureAtlas(tools: tool, totalSize: Size2DFromCGSize(textureSize).map({UInt($0)}), itemSize: characterFullPixelSize.map({UInt($0)}))
//      
      // Build the atlas texture object
//      let charLookup : [Character : (x: Int, y: Int)] = [:]
//      let atlas = TextAtlas(texture: texture, fontSize: size, widthInCharacters: characterCount.x,
//        uvSize: (uvSize.w, uvSize.h),
//        texelSize: (width: GLfloat(characterFullPixelSize.w), height: GLfloat(characterFullPixelSize.h)),
//        text: atlasText, coords: charLookup, newAtlas: newAtlas)
//      textAtlasses[siz].append(atlas)
//      
//      return atlas
//    } catch let err as NSError {
//      fatalError("ERROR: " + err.localizedDescription)
//    }
    textAtlasses[size] = atlas
    return atlas
  }

  subscript (index: String) -> CGRect? {
    return items[index]
  }

  /** Add an item to the atlas texture.
  - parameters item     The texture to place in the atlas entry
  - parameters uvWidth  The proportion of the texture that covers the actual
                        physical size (for e.g. font fractionals) */
