Trouble with vendor:stb/truetype

I am trying to render text with the help of stb_truetype library.
And I am very confused by the types for the vertices

here are the types in odin from: Odin/vendor/stb/truetype/stb_truetype.odin at master · odin-lang/Odin · GitHub

vmove :: enum c.int {
	none,
	vmove=1,
	vline,
	vcurve,
	vcubic,
}

vertex_type :: distinct c.short // can't use stbtt_int16 because that's not visible in the header file
vertex :: struct {
	x, y, cx, cy, cx1, cy1: vertex_type,
	type, padding:          byte,
}

here are the types in c from: stb/stb_truetype.h at master · nothings/stb · GitHub

#ifndef STBTT_vmove // you can predefine these to use different values (but why?)
   enum {
      STBTT_vmove=1,
      STBTT_vline,
      STBTT_vcurve,
      STBTT_vcubic
   };
#endif

#ifndef stbtt_vertex // you can predefine this to use different values
                   // (we share this with other code at RAD)
   #define stbtt_vertex_type short // can't use stbtt_int16 because that's not visible in the header file
   typedef struct
   {
      stbtt_vertex_type x,y,cx,cy,cx1,cy1;
      unsigned char type,padding;
   } stbtt_vertex;
#endif

the stbtt_vertex struct has a field type, that is of type unsigned char
and x,y of type stbtt_vertex_type

Shouldn’t the vertex.type field have the type: sttbtt_vertex_type? This is very confusing for me, am I missing something here?

Also, the vmove enum is a c.int, but in the library the, STBTT_vmove, STBTT_vcurve, … values are unsigned char, or u8 int odin values.

All the bindings I see here are correct. So you are missing or confusing something, but what that is I really don’t know. Maybe you can rephrase?

What I wanted to say is that the naming of the fields, and types in the vertex struct is very confusing to me.
I don’t understand why the vertex.type has type: byte, and the x, y, cx, cy,… coordinates have the type: vertex_type.

when in the code, the vertex.type is compared to the values from the vmove enum
here’s an example from the code
source: stb/stb_truetype.h at 5c205738c191bcb0abc65c4febfa9bd25ff35234 · nothings/stb · GitHub

switch (vertices[i].type) {
            case STBTT_vmove:
               // ...
            case STBTT_vline:
               // ...
            case STBTT_vcurve:
               // ...
}

what would make more sense to me, is something like:

vertex_type :: enum u8 {
   none,
   vmove,
   vline,
   vcurve,
   vcubic,
}
vertex :: struct {
   x, y, cx, cy, cx1, cy1: c.short,
   type:          vertex_type,
   padding:    byte,
}

Am I missing some concept that the current types in the vertex struct are so confusing to me?