// The sx library ships stb_truetype: `#import "vendors/stb_truetype/ // stb_truetype.sx"` resolves through the stdlib search paths and the // implementation compiles through the object cache. Loads the system // Helvetica collection and pins INVARIANTS only (font versions vary // across macOS releases): init succeeds, the pixel-height scale is // positive, the ascender is positive and the descender negative. #import "modules/std.sx"; fs :: #import "modules/std/fs.sx"; tt :: #import "vendors/stb_truetype/stb_truetype.sx"; main :: () -> i32 { data := fs.read_file("/System/Library/Fonts/Helvetica.ttc"); if data == null { print("font missing\n"); return 1; } bytes := data!; off := tt.stbtt_GetFontOffsetForIndex(bytes.ptr, 0); print("font offset >= 0: {}\n", off >= 0); info : *void = xx context.allocator.alloc_bytes(256); ok := tt.stbtt_InitFont(info, bytes.ptr, off); print("init ok: {}\n", ok != 0); px : f32 = 32.0; scale := tt.stbtt_ScaleForPixelHeight(info, px); print("scale > 0: {}\n", scale > 0.0); ascent : i32 = 0; descent : i32 = 0; linegap : i32 = 0; tt.stbtt_GetFontVMetrics(info, @ascent, @descent, @linegap); print("ascent > 0, descent < 0: {} {}\n", ascent > 0, descent < 0); 0 }