Hello, I am experiencing an issue when creating an image from text with lime.text.Font.renderGlyph. Namely, the created image is distorted when certain values for the parameter fontSize are given.
Here are two images visualizing the result, first being the correct image, e.g. when using a size of 32:

And the result with font size 64:

Most other sizes look similar, but it seems arbitrary; E.g. 25, 26, 27 look fine while 24 or 28 do not.
This is the code I am using to create the image:
font = Font.fromFile("assets/DejaVuSansMono.ttf");
var image = font.renderGlyph(font.getGlyph("a"), 32);
Am I doing something wrong, or is this an internal issue with freetype?
The rest of the test application is almost the same as the TextRendering sample.
var vertices = new Array<Float>();
var indices = new Array<Int>();
var left, top, right, bottom;
var buffer = image.buffer;
var left = 0;
var top = 0;
var right = 1;
var bottom = 1;
var pointLeft = x + image.x;
var pointTop = y - image.y;
var pointRight = pointLeft + image.width;
var pointBottom = pointTop + image.height;
vertices.push (pointRight);
vertices.push (pointBottom);
vertices.push (right);
vertices.push (bottom);
vertices.push (pointLeft);
vertices.push (pointBottom);
vertices.push (left);
vertices.push (bottom);
vertices.push (pointRight);
vertices.push (pointTop);
vertices.push (right);
vertices.push (top);
vertices.push (pointLeft);
vertices.push (pointTop);
vertices.push (left);
vertices.push (top);
var i = Std.int(indices.length / 6) * 4;
indices.push (i);
indices.push (i + 1);
indices.push (i + 2);
indices.push (i + 1);
indices.push (i + 2);
indices.push (i + 3);
trinum = indices.length;
textvbo = context.createBuffer ();
context.bindBuffer (ARRAY_BUFFER, textvbo);
context.bufferData (ARRAY_BUFFER, new Float32Array (vertices), STATIC_DRAW);
indexBuffer = context.createBuffer ();
context.bindBuffer (ELEMENT_ARRAY_BUFFER, indexBuffer);
context.bufferData (ELEMENT_ARRAY_BUFFER, new UInt8Array (indices), STATIC_DRAW);
var format = (buffer.bitsPerPixel == 1 ? context.ALPHA : context.RGBA);
texttexture = context.createTexture ();
context.bindTexture (context.TEXTURE_2D, texttexture);
context.texImage2D (context.TEXTURE_2D, 0, format, buffer.width, buffer.height, 0, format, context.UNSIGNED_BYTE, buffer.data);
context.texParameteri (context.TEXTURE_2D, context.TEXTURE_MAG_FILTER, context.NEAREST);
context.texParameteri (context.TEXTURE_2D, context.TEXTURE_MIN_FILTER, context.NEAREST);
//...
//...
public override function render (renderer:Renderer):Void {
switch(renderer.context) {
case OPENGL(context):
context.clear(COLOR_BUFFER_BIT);
context.uniformMatrix4fv(matrix, false, projection);
context.activeTexture(TEXTURE0);
context.bindTexture(TEXTURE_2D, texttexture);
context.bindBuffer(ARRAY_BUFFER, textvbo);
context.vertexAttribPointer(position, 2, FLOAT, false, 4 * Float32Array.BYTES_PER_ELEMENT, 0);
context.vertexAttribPointer(texcoord, 2, FLOAT, false, 4 * Float32Array.BYTES_PER_ELEMENT, 2 * Float32Array.BYTES_PER_ELEMENT);
context.bindBuffer(ELEMENT_ARRAY_BUFFER, indexBuffer);
context.drawElements(TRIANGLES, trinum, UNSIGNED_BYTE, 0);
default:
}
}
System is OSX 10.11 with haxe 3.2.1 and lime 2.8.3 (-also tested with the latest lime from github and a more recent freetype library, with the same results).
