mirror of https://gitlab.com/nakst/essence
text rendering: fix bug where glyphs get rendered at wrong size
This commit is contained in:
parent
78ff15360c
commit
c2db2e2de3
|
@ -2362,6 +2362,9 @@ void DrawTextPiece(EsPainter *painter, EsTextPlan *plan, TextPiece *piece, TextL
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!entry->data) {
|
if (!entry->data) {
|
||||||
|
// EsPrint("Rendering '%c' in size %d\n", plan->string[glyphs[i].cluster], key.size);
|
||||||
|
FontSetSize(&key.font, key.size);
|
||||||
|
|
||||||
if (!FontRenderGlyph(key, entry)) {
|
if (!FontRenderGlyph(key, entry)) {
|
||||||
EsHeapFree(entry);
|
EsHeapFree(entry);
|
||||||
goto nextCharacter;
|
goto nextCharacter;
|
||||||
|
@ -2370,14 +2373,14 @@ void DrawTextPiece(EsPainter *painter, EsTextPlan *plan, TextPiece *piece, TextL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EsAssert(0 == EsMemoryCompare(&entry->key, &key, sizeof(GlyphCacheKey)));
|
||||||
|
|
||||||
if (selection->caret0 != selection->caret1 && !selection->hideCaret
|
if (selection->caret0 != selection->caret1 && !selection->hideCaret
|
||||||
&& (int32_t) glyphs[i].cluster >= selection->caret0 && (int32_t) glyphs[i].cluster < selection->caret1
|
&& (int32_t) glyphs[i].cluster >= selection->caret0 && (int32_t) glyphs[i].cluster < selection->caret1
|
||||||
&& selection->foreground) {
|
&& selection->foreground) {
|
||||||
color = selection->foreground;
|
color = selection->foreground;
|
||||||
}
|
}
|
||||||
|
|
||||||
// EsPrint("\t%c at %i.%i\n", plan->string[glyphs[i].cluster], positionX, (glyphPositions[i].x_offset + cursorX) & 0x3F);
|
|
||||||
|
|
||||||
DrawSingleCharacter(entry->width, entry->height, entry->xoff, entry->yoff,
|
DrawSingleCharacter(entry->width, entry->height, entry->xoff, entry->yoff,
|
||||||
ES_POINT(positionX, positionY + line->ascent / FREETYPE_UNIT_SCALE),
|
ES_POINT(positionX, positionY + line->ascent / FREETYPE_UNIT_SCALE),
|
||||||
painter->clip, painter->target,
|
painter->clip, painter->target,
|
||||||
|
|
Loading…
Reference in New Issue