diff --git a/bindings/odin/examples/clay-official-website/clay_renderer_raylib.odin b/bindings/odin/examples/clay-official-website/clay_renderer_raylib.odin index ff624aa..c3b4550 100644 --- a/bindings/odin/examples/clay-official-website/clay_renderer_raylib.odin +++ b/bindings/odin/examples/clay-official-website/clay_renderer_raylib.odin @@ -21,9 +21,17 @@ measure_text :: proc "c" (text: clay.StringSlice, config: ^clay.TextElementConfi font := raylib_fonts[config.fontId].font - for i in 0 ..< text.length { - glyph_index := text.chars[i] - 32 + byte_index := 0 + for byte_index < int(text.length) { + // handle utf-8 codepoints + codepoint_bytes: i32 = 0 + codepoint := rl.GetCodepoint( + transmute(cstring)&text.chars[byte_index], + &codepoint_bytes, + ) + byte_index += int(codepoint_bytes) + glyph_index := rl.GetGlyphIndex(font, codepoint) glyph := font.glyphs[glyph_index] if glyph.advanceX != 0 { @@ -198,4 +206,4 @@ draw_rect :: proc(x, y, w, h: f32, color: clay.Color) { @(private = "file") draw_rect_rounded :: proc(x,y,w,h: f32, radius: f32, color: clay.Color){ rl.DrawRectangleRounded({x,y,w,h},radius,8,clay_color_to_rl_color(color)) -} \ No newline at end of file +}