This commit is contained in:
Vicente Ferrari Smith 2026-01-22 19:54:40 +01:00
parent 7aa05887d5
commit fd71b631c4
2 changed files with 33 additions and 33 deletions

View File

@ -224,7 +224,7 @@ pub const Font = struct {
return; return;
} }
kb.kbts_ShapeBegin(Context, kb.KBTS_DIRECTION_DONT_KNOW, kb.KBTS_LANGUAGE_ENGLISH); kb.kbts_ShapeBegin(Context, kb.KBTS_DIRECTION_DONT_KNOW, kb.KBTS_LANGUAGE_DONT_KNOW);
kb.kbts_ShapeUtf8(Context, text.ptr, @intCast(text.len), kb.KBTS_USER_ID_GENERATION_MODE_CODEPOINT_INDEX); kb.kbts_ShapeUtf8(Context, text.ptr, @intCast(text.len), kb.KBTS_USER_ID_GENERATION_MODE_CODEPOINT_INDEX);
kb.kbts_ShapeEnd(Context); kb.kbts_ShapeEnd(Context);
@ -243,7 +243,7 @@ pub const Font = struct {
var g : [*c]kb.kbts_glyph = null; var g : [*c]kb.kbts_glyph = null;
while (kb.kbts_GlyphIteratorNext(&Run.Glyphs, &g) != 0) { while (kb.kbts_GlyphIteratorNext(&Run.Glyphs, &g) != 0) {
const RunGlyph : *kb.kbts_glyph = g.?; // assert non-null const RunGlyph : *kb.kbts_glyph = g.?;
const CodepointIndex : i32 = RunGlyph.UserIdOrCodepointIndex; const CodepointIndex : i32 = RunGlyph.UserIdOrCodepointIndex;
var ShapeCodepoint : kb.kbts_shape_codepoint = undefined; var ShapeCodepoint : kb.kbts_shape_codepoint = undefined;
if (kb.kbts_ShapeGetShapeCodepoint(Context, CodepointIndex, &ShapeCodepoint) == 0) { if (kb.kbts_ShapeGetShapeCodepoint(Context, CodepointIndex, &ShapeCodepoint) == 0) {
@ -258,11 +258,9 @@ pub const Font = struct {
if (self.glyphs.getPtr(RunGlyph.Id)) |glyph| { if (self.glyphs.getPtr(RunGlyph.Id)) |glyph| {
var v0 = rl.Vector2.zero(); var v0 = rl.Vector2.zero();
var v1 = rl.Vector2.zero(); var v1 = rl.Vector2.zero();
// const bx = @as(f32, @floatFromInt(glyph.bearing_x));
const by = glyph.dpi_bearing_y;
v0 = render_pos.add(.{ .x = x_offset + glyph.dpi_bearing_x, v0 = render_pos.add(.{ .x = x_offset + glyph.dpi_bearing_x,
.y = y_offset - by }); .y = y_offset - glyph.dpi_bearing_y });
v1 = v0.add(rl.Vector2{ .x = glyph.dpi_width, .y = glyph.dpi_height }); v1 = v0.add(rl.Vector2{ .x = glyph.dpi_width, .y = glyph.dpi_height });
const p0 : rl.Vector4 = .{ .x = v0.x, .y = v0.y, .z = 0.0, .w = 1.0 }; const p0 : rl.Vector4 = .{ .x = v0.x, .y = v0.y, .z = 0.0, .w = 1.0 };

View File

@ -35,7 +35,6 @@ pub fn main() !void {
std.log.info("Hello Client!", .{}); std.log.info("Hello Client!", .{});
try init(); try init();
defer _ = dbg_allocator.deinit();
try znet.init(); try znet.init();
defer znet.deinit(); defer znet.deinit();
rl.setConfigFlags(.{ .window_highdpi = true }); rl.setConfigFlags(.{ .window_highdpi = true });
@ -49,23 +48,23 @@ pub fn main() !void {
18, 20, 22, 18, 20, 22,
}; };
var inconsolata: [sizes.len]font.Font = undefined;
var vollkorn: [sizes.len]font.Font = undefined; var vollkorn: [sizes.len]font.Font = undefined;
var arabic: [sizes.len]font.Font = undefined; // var inconsolata: [sizes.len]font.Font = undefined;
var japanese: [sizes.len]font.Font = undefined; // var arabic: [sizes.len]font.Font = undefined;
// var japanese: [sizes.len]font.Font = undefined;
for (sizes, 0..) |pt, i| { for (sizes, 0..) |pt, i| {
inconsolata[i] = try font.Font.init("assets/fonts/Inconsolata/static/Inconsolata-Regular.ttf", @intCast(pt), allocator);
vollkorn[i] = try font.Font.init("assets/fonts/Vollkorn/static/Vollkorn-Regular.ttf", @intCast(pt), allocator); vollkorn[i] = try font.Font.init("assets/fonts/Vollkorn/static/Vollkorn-Regular.ttf", @intCast(pt), allocator);
arabic[i] = try font.Font.init("assets/fonts/Noto_Sans_Arabic/static/NotoSansArabic-Regular.ttf", @intCast(pt), allocator); // inconsolata[i] = try font.Font.init("assets/fonts/Inconsolata/static/Inconsolata-Regular.ttf", @intCast(pt), allocator);
japanese[i] = try font.Font.init("assets/fonts/Noto_Sans_JP/static/NotoSansJP-Regular.ttf", @intCast(pt), allocator); // arabic[i] = try font.Font.init("assets/fonts/Noto_Sans_Arabic/static/NotoSansArabic-Regular.ttf", @intCast(pt), allocator);
// japanese[i] = try font.Font.init("assets/fonts/Noto_Sans_JP/static/NotoSansJP-Regular.ttf", @intCast(pt), allocator);
} }
defer { defer {
for (&inconsolata) |*f| f.deinit(allocator);
for (&vollkorn) |*f| f.deinit(allocator); for (&vollkorn) |*f| f.deinit(allocator);
for (&arabic) |*f| f.deinit(allocator); // for (&inconsolata) |*f| f.deinit(allocator);
for (&japanese) |*f| f.deinit(allocator); // for (&arabic) |*f| f.deinit(allocator);
// for (&japanese) |*f| f.deinit(allocator);
} }
font.shader = try rl.loadShader(null, "assets/text.frag"); font.shader = try rl.loadShader(null, "assets/text.frag");
@ -220,22 +219,22 @@ pub fn main() !void {
y += dpi_font_ascent; y += dpi_font_ascent;
} }
for (&inconsolata) |*f| { // for (&inconsolata) |*f| {
f.render_text( // f.render_text(
"Whereas, disregard and contempt for human rights have resulted!fi", // "Whereas, disregard and contempt for human rights have resulted!fi",
rl.Vector2{ .x = 0, .y = y}, // rl.Vector2{ .x = 0, .y = y},
true, // true,
.white, // .white,
.blank, // .blank,
false, // false,
true // true
); // );
const font_ascent : f32 = @floatFromInt(f.face.size().metrics().ascender >> 6); // const font_ascent : f32 = @floatFromInt(f.face.size().metrics().ascender >> 6);
const dpi_font_ascent = font_ascent / rl.getWindowScaleDPI().y; // const dpi_font_ascent = font_ascent / rl.getWindowScaleDPI().y;
y += dpi_font_ascent; // y += dpi_font_ascent;
} // }
// for (&japanese) |*f| { // for (&japanese) |*f| {
// f.render_text( // f.render_text(
@ -257,16 +256,16 @@ pub fn main() !void {
// for (&arabic) |*f| { // for (&arabic) |*f| {
// f.render_text( // f.render_text(
// "الليل طويل وبارد في الخارج", // "الليل طويل وبارد في الخارج",
// c.Vector2{ .x = 0, .y = y}, // rl.Vector2{ .x = 0, .y = y},
// true, // true,
// c.WHITE, // .white,
// c.BLANK, // .blank,
// false, // false,
// true // true
// ); // );
// const font_ascent : f32 = @floatFromInt(f.face.size().metrics().ascender >> 6); // const font_ascent : f32 = @floatFromInt(f.face.size().metrics().ascender >> 6);
// const dpi_font_ascent = font_ascent / c.GetWindowScaleDPI().y; // const dpi_font_ascent = font_ascent / rl.getWindowScaleDPI().y;
// y += dpi_font_ascent; // y += dpi_font_ascent;
// } // }
@ -378,6 +377,9 @@ pub fn main() !void {
rl.swapScreenBuffer(); rl.swapScreenBuffer();
} }
const deinit_status = dbg_allocator.deinit();
if (deinit_status == .leak) std.testing.expect(false) catch @panic("TEST FAIL");
} }
fn init() !void { fn init() !void {