Lines Matching defs:fti
251 \param fti pointer to the FT_INFO structure, may be modified if alternate font is added
255 int TR_find_alternate_font(FT_INFO *fti, FNT_SPECS **efsp, uint32_t wc){
266 if(!fti || !efsp || !*efsp)return(0);
269 fsp2 = &fti->fonts[fsp->alts[i].fi_idx]; /* these are in order of descending previous usage */
300 fi_idx = ftinfo_find_loaded_by_src(fti, (uint8_t *) filename);
303 fi_idx = ftinfo_load_fontname(fti, newfontspec);
314 *efsp = &(fti->fonts[fi_idx]);
326 \param fti pointer to the FT_INFO structure, may be modified if alternate font is required
338 int TR_getadvance(FT_INFO *fti, FNT_SPECS *fsp, uint32_t wc, uint32_t pc, int load_flags, int kern_mode, int *ymin, int *ymax){
348 glyph_index = TR_find_alternate_font(fti, &fsp, wc);
451 FT_INFO *fti=tri->fti;
458 fsp = &(fti->fonts[tpi->chunks[trec].fi_idx]);
472 fsp = &(fti->fonts[tpi->chunks[trec].fi_idx]);
574 FT_INFO *fti = NULL;
576 fti = (FT_INFO *)calloc(1,sizeof(FT_INFO));
577 if(fti){
578 if(!FT_Init_FreeType( &(fti->library))){
579 fti->space=0;
580 fti->used=0;
582 if(ftinfo_make_insertable(fti)){
583 FT_Done_FreeType(fti->library);
584 free(fti);
585 fti=NULL;
589 free(fti);
590 fti=NULL;
593 if(!fti)FcFini();
595 return(fti);
600 \param fti pointer to the FT_INFO structure
603 int ftinfo_make_insertable(FT_INFO *fti){
606 if(!fti)return(2);
607 if(fti->used >= fti->space){
608 fti->space += ALLOCINFO_CHUNK;
609 tmp = (FNT_SPECS *) realloc(fti->fonts, fti->space * sizeof(FNT_SPECS) );
611 fti->fonts = tmp;
612 memset(&fti->fonts[fti->used],0,(fti->space - fti->used)*sizeof(FNT_SPECS));
624 \param fti pointer to the FT_INFO structure.
628 int ftinfo_insert(FT_INFO *fti, FNT_SPECS *fsp){
630 if(!fti)return(2);
632 if(!(status = ftinfo_make_insertable(fti))){
633 memcpy(&(fti->fonts[fti->used]),fsp,sizeof(FNT_SPECS));
634 fti->used++;
644 \param fti pointer to the FT_INFO structure.
647 FT_INFO *ftinfo_release(FT_INFO *fti){
648 (void) ftinfo_clear(fti);
659 \param fti pointer to the FT_INFO structure.
662 FT_INFO *ftinfo_clear(FT_INFO *fti){
665 if(fti){
666 for(i=0;i<fti->used;i++){
667 fsp = &(fti->fonts[i]);
675 free(fti->fonts);
676 FT_Done_FreeType(fti->library); /* release all other FreeType memory */
677 free(fti);
690 int ftinfo_find_loaded_by_spec(const FT_INFO *fti, const uint8_t *fontspec){
694 for(i=0;i<fti->used;i++){
695 if(0==strcmp((char *) fti->fonts[i].fontspec, (char *)fontspec)){
710 int ftinfo_find_loaded_by_src(const FT_INFO *fti, const uint8_t *filename){
714 for(i=0;i<fti->used;i++){
715 if(0==strcmp((char *) fti->fonts[i].file, (char *) filename)){
727 \param fti pointer to the FT_INFO structure.
732 int ftinfo_load_fontname(FT_INFO *fti, const char *fontspec){
743 if(!fti)return(-1);
746 status = ftinfo_find_loaded_by_spec(fti, (uint8_t *) fontspec);
750 ftinfo_make_insertable(fti);
751 fi_idx = fti->used;
765 fsp = &(fti->fonts[fti->used]);
784 if(FT_New_Face( fti->library, (const char *) fsp->file, 0, &(fsp->face) )){ return(-8); }
796 status = TR_getadvance(fti, fsp,' ',0,FT_LOAD_NO_SCALE | FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP, FT_KERNING_UNSCALED, NULL, NULL);
800 fti->used++;
827 void ftinfo_dump(const FT_INFO *fti){
830 printf("fti space: %d\n",fti->space);
831 printf("fti used: %d\n",fti->used);
832 for(i=0; i< fti->used; i++){
833 fsp = &(fti->fonts[i]);
834 printf("fti font: %6d space: %6d used: %6d spcadv %8f fsize %8f \n",i,fsp->space,fsp->used,fsp->spcadv,fsp->fsize);
846 \param fti pointer to the FT_INFO structure
1521 !(tri->fti = ftinfo_init()) ||
1554 if(tri->fti)tri->fti=ftinfo_release(tri->fti);
1575 if(tri->fti)tri->fti=ftinfo_clear(tri->fti);
1734 FT_INFO *fti;
1746 fti = tri->fti;
1751 if(!fti->used)return(4);
1752 if(idx <0 || idx >= (int) fti->used)return(5);
1753 fsp = &(fti->fonts[idx]);
1796 status = TR_getadvance(fti, fsp, *tptr, (tri->use_kern ? prev: 0), tri->load_flags, tri->kern_mode, &ymin, &ymax);
1924 FT_INFO *fti=tri->fti; /* Font info storage */
2013 cutat=strcspn((char *)fti->fonts[tsp->fi_idx].fontspec,":");
2014 sprintf(obuf,"font-family:%.*s;",cutat,fti->fonts[tsp->fi_idx].fontspec);
2156 cutat=strcspn((char *)fti->fonts[tsp->fi_idx].fontspec,":");
2157 sprintf(obuf,"font-family:%.*s;",cutat,fti->fonts[tsp->fi_idx].fontspec);
2235 cutat=strcspn((char *)fti->fonts[tsp->fi_idx].fontspec,":");
2236 sprintf(obuf,"font-family:%.*s;\"",cutat,fti->fonts[tsp->fi_idx].fontspec);
2274 FT_INFO *fti;
2295 if(!tri->fti)return(-5);
2299 fti=tri->fti;
2305 ftinfo_dump(fti);
2318 spcadv = fti->fonts[tspi->fi_idx].spcadv * tspi->fs/32.0; /* spcadv was always FT_LOAD_NO_SCALE */
2330 spcadv = fti->fonts[tspj->fi_idx].spcadv * tspj->fs/32.0; /* spcadv was always FT_LOAD_NO_SCALE */
2356 spcadv = fti->fonts[tspj->fi_idx].spcadv * tspj->fs/32.0; /* spcadv was always FT_LOAD_NO_SCALE */
2383 spcadv = fti->fonts[tspi->fi_idx].spcadv * tspi->fs/32.0;
2386 spcadv = fti->fonts[tspj->fi_idx].spcadv * tspj->fs/32.0;
2473 spcadv = fti->fonts[tspj->fi_idx].spcadv * tspj->fs/32.0;
2817 if((tsp.fi_idx = ftinfo_load_fontname(tri->fti, fontspec)) < 0 )boom("Font load failed",lineno);