mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-11 16:45:48 -04:00
Webclient: Make system fonts render closer to how they are rendered on desktop/mobile
This commit is contained in:
parent
465771e2ec
commit
cfb6f11dfe
@ -696,7 +696,7 @@ void Font_GetNames(struct StringsBuffer* buffer) {
|
|||||||
cc_result Font_Make(struct FontDesc* desc, const cc_string* fontName, int size, int flags) {
|
cc_result Font_Make(struct FontDesc* desc, const cc_string* fontName, int size, int flags) {
|
||||||
desc->size = size;
|
desc->size = size;
|
||||||
desc->flags = flags;
|
desc->flags = flags;
|
||||||
desc->height = size;
|
desc->height = Drawer2D_AdjHeight(size);
|
||||||
|
|
||||||
desc->handle = Mem_TryAlloc(fontName->length + 1, 1);
|
desc->handle = Mem_TryAlloc(fontName->length + 1, 1);
|
||||||
if (!desc->handle) return 0;
|
if (!desc->handle) return 0;
|
||||||
@ -738,6 +738,9 @@ static void Font_SysTextDraw(struct DrawTextArgs* args, struct Bitmap* bmp, int
|
|||||||
char buffer[NATIVE_STR_LEN];
|
char buffer[NATIVE_STR_LEN];
|
||||||
int len = Platform_EncodeUtf8(buffer, &args->text);
|
int len = Platform_EncodeUtf8(buffer, &args->text);
|
||||||
|
|
||||||
|
/* adjust y position to more closely match FreeType drawn text */
|
||||||
|
y += (args->font->height - args->font->size) / 2;
|
||||||
|
|
||||||
interop_SetFont(font->handle, font->size, font->flags);
|
interop_SetFont(font->handle, font->size, font->flags);
|
||||||
interop_TextDraw(buffer, len, bmp, x, y, shadow);
|
interop_TextDraw(buffer, len, bmp, x, y, shadow);
|
||||||
}
|
}
|
||||||
|
@ -828,6 +828,7 @@ mergeInto(LibraryManager.library, {
|
|||||||
|
|
||||||
var prefix = '';
|
var prefix = '';
|
||||||
if (flags & 1) prefix += 'Bold ';
|
if (flags & 1) prefix += 'Bold ';
|
||||||
|
size += 4; // adjust font size so text appears more like FreeType
|
||||||
|
|
||||||
var font = UTF8ToString(fontStr);
|
var font = UTF8ToString(fontStr);
|
||||||
var ctx = window.FONT_CONTEXT;
|
var ctx = window.FONT_CONTEXT;
|
||||||
@ -891,11 +892,12 @@ mergeInto(LibraryManager.library, {
|
|||||||
{
|
{
|
||||||
var xx = x + dstX;
|
var xx = x + dstX;
|
||||||
if (xx < 0 || xx >= dst_width) continue;
|
if (xx < 0 || xx >= dst_width) continue;
|
||||||
|
var I = src_pixels[src_row + (x<<2)+3], invI = 255 - I|0;
|
||||||
|
|
||||||
HEAPU8[dst_row + (x<<2)+0] = src_pixels[src_row + (x<<2)+0];
|
HEAPU8[dst_row + (x<<2)+0] = ((src_pixels[src_row + (x<<2)+0] * I) >> 8) + ((HEAPU8[dst_row + (x<<2)+0] * invI) >> 8);
|
||||||
HEAPU8[dst_row + (x<<2)+1] = src_pixels[src_row + (x<<2)+1];
|
HEAPU8[dst_row + (x<<2)+1] = ((src_pixels[src_row + (x<<2)+1] * I) >> 8) + ((HEAPU8[dst_row + (x<<2)+1] * invI) >> 8);
|
||||||
HEAPU8[dst_row + (x<<2)+2] = src_pixels[src_row + (x<<2)+2];
|
HEAPU8[dst_row + (x<<2)+2] = ((src_pixels[src_row + (x<<2)+2] * I) >> 8) + ((HEAPU8[dst_row + (x<<2)+2] * invI) >> 8);
|
||||||
HEAPU8[dst_row + (x<<2)+3] = src_pixels[src_row + (x<<2)+3];
|
HEAPU8[dst_row + (x<<2)+3] = I + ((HEAPU8[dst_row + (x<<2)+3] * invI) >> 8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user