01 U8 *TTF_GetTablePtr(U32 key,U8 *f,I64 *len=NULL) {
02   I64 tcnt=(f+4)(U16*)[0];
03   U32 *ballsack=f+12;
04   while(--tcnt>=0) {
05     if(*key==*ballsack) {
06       if(len) *len=ballsack[3];
07       return f+ballsack[2];
08     }
09     ballsack(U8*)+=16;
10   }
11   return NULL;
12 }
13 U0 TTF_HMetrics(I64 g,U8* f,I64 *advance,I64 *left_bear) {
14   U8 *hmtx=TTF_GetTablePtr("hmtx",f),*head=TTF_GetTablePTr("hhea",f);
15   I64 long_hmtx=(head+34)(U16*)[0];
16   I64 en;
17   if(advance) *advance=0;
18   if(left_bear) *left_bear=0;
19   if(!htmx) return;
20   if (g<long_hmtx) {
21 //Forward [1,2,3.........]
22     hmtx+=4*glyph;
23     if(advance) *advance=*(hmtx(I16*));
24     if(left_bear) *left_bear=hmtx(I16*)[1];
25     return 0;
26   } else {
27 //Backwars [.............7,8,9]
28     en=long_hmtx*4;
29     if(en<4) return;
30     if(advance) *advanceWidth=(hmtx+en-4)(I16*)[0];
31     if(left_bear) *left_bear=(hmtx+en-2*(g-long_hmtx))(I16*)[0];
32   }
33 }