The GPU path
daegun hands you data instead of drawing, because owning a device needs unsafe and the engine does not.
use daegun::GpuBatch;
let mut batch = GpuBatch::new();
let slot = font.gpu_glyph(&mut batch, gid, &[])?;
// batch.curves(), batch.bands(), batch.band_curves(), batch.hulls() go to the GPU
// slot.instance(offset, scale, em_pixels, tint) makes one GlyphInstanceShader source for GLSL, HLSL and MSL ships with the crate. Backends for Metal, Vulkan, D3D11 and D3D12 are there too if you would rather daegun drove the device.