Loading strings/uca-dump.c +56 −24 Original line number Diff line number Diff line Loading @@ -23,13 +23,14 @@ struct uca_item_st #define MY_UCA_PSHIFT 8 #endif static char *pname[]= {"", "2", "3"}; int main(int ac, char **av) { char str[256]; char *weights[64]; struct uca_item_st uca[64*1024]; size_t code, page, w; int pagemaxlen[MY_UCA_NPAGES]; size_t code, w; int pageloaded[MY_UCA_NPAGES]; bzero(uca, sizeof(uca)); Loading Loading @@ -155,14 +156,20 @@ int main(int ac, char **av) printf("#define MY_UCA_CMASK %d\n",MY_UCA_CMASK); printf("#define MY_UCA_PSHIFT %d\n",MY_UCA_PSHIFT); for (w=0; w<1; w++) for (w=0; w<3; w++) { size_t page; int pagemaxlen[MY_UCA_NPAGES]; for (page=0; page < MY_UCA_NPAGES; page++) { size_t offs; size_t maxnum= 0; size_t nchars= 0; size_t mchars; size_t ndefs= 0; pagemaxlen[page]= 0; /* Skip this page if no weights were loaded Loading @@ -183,15 +190,37 @@ int main(int ac, char **av) code= page*MY_UCA_NCHARS+offs; /* Calculate only non-zero weights */ num=0; for (i=0; i < uca[code].num; i++) for (num=0, i=0; i < uca[code].num; i++) if (uca[code].weight[w][i]) num++; maxnum= maxnum < num ? num : maxnum; /* Check if default weight */ if (w == 1 && num == 1) { /* 0020 0000 ... */ if (uca[code].weight[w][0] == 0x0020) ndefs++; } else if (w == 2 && num == 1) { /* 0002 0000 ... */ if (uca[code].weight[w][0] == 0x0002) ndefs++; } } maxnum++; /* If the page have only default weights then no needs to dump it, skip. */ if (ndefs == MY_UCA_NCHARS) { printf("/* Don't dump w=%d pg=%3X: ndefs=%d */\n",w, page, ndefs); continue; } switch (maxnum) { case 0: mchars= 8; break; Loading @@ -210,8 +239,8 @@ int main(int ac, char **av) */ printf("uint16 page%03Xdata[]= { /* %04X (%d weights per char) */\n", page, page*MY_UCA_NCHARS, maxnum); printf("uint16 page%03Xdata%s[]= { /* %04X (%d weights per char) */\n", page, pname[w], page*MY_UCA_NCHARS, maxnum); for (offs=0; offs < MY_UCA_NCHARS; offs++) { Loading Loading @@ -251,9 +280,8 @@ int main(int ac, char **av) } printf("};\n\n"); } } printf("uchar ucal[%d]={\n",MY_UCA_NPAGES); printf("uchar ucal%s[%d]={\n", pname[w], MY_UCA_NPAGES); for (page=0; page < MY_UCA_NPAGES; page++) { printf("%d%s%s",pagemaxlen[page],page<MY_UCA_NPAGES-1?",":"",(page+1) % 16 ? "":"\n"); Loading @@ -261,15 +289,19 @@ int main(int ac, char **av) printf("};\n"); printf("uint16 *ucaw[%d]={\n",MY_UCA_NPAGES); printf("uint16 *ucaw%s[%d]={\n", pname[w], MY_UCA_NPAGES); for (page=0; page < MY_UCA_NPAGES; page++) { if (!pageloaded[page]) printf("NULL %s%s",page<MY_UCA_NPAGES-1?",":"", (page+1) % 4 ? "":"\n"); const char *comma= page < MY_UCA_NPAGES-1 ? "," : ""; const char *nline= (page+1) % 4 ? "" : "\n"; if (!pagemaxlen[page]) printf("NULL %s%s", comma , nline); else printf("page%03Xdata%s%s",page,page<MY_UCA_NPAGES-1?",":"", (page+1) % 4 ? "":"\n"); printf("page%03Xdata%s%s%s", page, pname[w], comma, nline); } printf("};\n"); } printf("int main(void){ return 0;};\n"); return 0; Loading Loading
strings/uca-dump.c +56 −24 Original line number Diff line number Diff line Loading @@ -23,13 +23,14 @@ struct uca_item_st #define MY_UCA_PSHIFT 8 #endif static char *pname[]= {"", "2", "3"}; int main(int ac, char **av) { char str[256]; char *weights[64]; struct uca_item_st uca[64*1024]; size_t code, page, w; int pagemaxlen[MY_UCA_NPAGES]; size_t code, w; int pageloaded[MY_UCA_NPAGES]; bzero(uca, sizeof(uca)); Loading Loading @@ -155,14 +156,20 @@ int main(int ac, char **av) printf("#define MY_UCA_CMASK %d\n",MY_UCA_CMASK); printf("#define MY_UCA_PSHIFT %d\n",MY_UCA_PSHIFT); for (w=0; w<1; w++) for (w=0; w<3; w++) { size_t page; int pagemaxlen[MY_UCA_NPAGES]; for (page=0; page < MY_UCA_NPAGES; page++) { size_t offs; size_t maxnum= 0; size_t nchars= 0; size_t mchars; size_t ndefs= 0; pagemaxlen[page]= 0; /* Skip this page if no weights were loaded Loading @@ -183,15 +190,37 @@ int main(int ac, char **av) code= page*MY_UCA_NCHARS+offs; /* Calculate only non-zero weights */ num=0; for (i=0; i < uca[code].num; i++) for (num=0, i=0; i < uca[code].num; i++) if (uca[code].weight[w][i]) num++; maxnum= maxnum < num ? num : maxnum; /* Check if default weight */ if (w == 1 && num == 1) { /* 0020 0000 ... */ if (uca[code].weight[w][0] == 0x0020) ndefs++; } else if (w == 2 && num == 1) { /* 0002 0000 ... */ if (uca[code].weight[w][0] == 0x0002) ndefs++; } } maxnum++; /* If the page have only default weights then no needs to dump it, skip. */ if (ndefs == MY_UCA_NCHARS) { printf("/* Don't dump w=%d pg=%3X: ndefs=%d */\n",w, page, ndefs); continue; } switch (maxnum) { case 0: mchars= 8; break; Loading @@ -210,8 +239,8 @@ int main(int ac, char **av) */ printf("uint16 page%03Xdata[]= { /* %04X (%d weights per char) */\n", page, page*MY_UCA_NCHARS, maxnum); printf("uint16 page%03Xdata%s[]= { /* %04X (%d weights per char) */\n", page, pname[w], page*MY_UCA_NCHARS, maxnum); for (offs=0; offs < MY_UCA_NCHARS; offs++) { Loading Loading @@ -251,9 +280,8 @@ int main(int ac, char **av) } printf("};\n\n"); } } printf("uchar ucal[%d]={\n",MY_UCA_NPAGES); printf("uchar ucal%s[%d]={\n", pname[w], MY_UCA_NPAGES); for (page=0; page < MY_UCA_NPAGES; page++) { printf("%d%s%s",pagemaxlen[page],page<MY_UCA_NPAGES-1?",":"",(page+1) % 16 ? "":"\n"); Loading @@ -261,15 +289,19 @@ int main(int ac, char **av) printf("};\n"); printf("uint16 *ucaw[%d]={\n",MY_UCA_NPAGES); printf("uint16 *ucaw%s[%d]={\n", pname[w], MY_UCA_NPAGES); for (page=0; page < MY_UCA_NPAGES; page++) { if (!pageloaded[page]) printf("NULL %s%s",page<MY_UCA_NPAGES-1?",":"", (page+1) % 4 ? "":"\n"); const char *comma= page < MY_UCA_NPAGES-1 ? "," : ""; const char *nline= (page+1) % 4 ? "" : "\n"; if (!pagemaxlen[page]) printf("NULL %s%s", comma , nline); else printf("page%03Xdata%s%s",page,page<MY_UCA_NPAGES-1?",":"", (page+1) % 4 ? "":"\n"); printf("page%03Xdata%s%s%s", page, pname[w], comma, nline); } printf("};\n"); } printf("int main(void){ return 0;};\n"); return 0; Loading