pksearch P6C(char *, path, char *, file, char *, mode, halfword, dpi, char **, name_ret, int *, dpi_ret) { FILE *ret; kpse_glyph_file_type font_file; string found_name = kpse_find_pk (file, dpi, &font_file); if (found_name) { ret = fopen (found_name, mode); if (!ret) FATAL_PERROR (name); /* Free result of previous search. */ if (realnameoffile) free (realnameoffile); /* Save in `name' and `realnameoffile' because other routines access those globals. Sigh. */ realnameoffile = found_name; strcpy(name, realnameoffile); *name_ret = font_file.name; *dpi_ret = font_file.dpi; } else ret = NULL; return ret; } /* end search */
static void FontFind(struct font_entry * tfontptr) { kpse_glyph_file_type font_ret; /* tfontptr->dpi = kpse_magstep_fix (tfontptr->dpi, resolution, NULL); */ DEBUG_PRINT(DEBUG_DVI,("\n FIND FONT:\t%s %d",tfontptr->n,tfontptr->dpi)); tfontptr->name = kpse_find_vf (tfontptr->n); if (tfontptr->name!=NULL) InitVF(tfontptr); #ifdef HAVE_FT2 else if (option_flags & USE_FREETYPE) { tfontptr->psfontmap = FindPSFontMap(tfontptr->n); if (tfontptr->psfontmap!=NULL) tfontptr->name=kpse_find_t1_or_tt(tfontptr->psfontmap->psfile); else tfontptr->name=kpse_find_t1_or_tt(tfontptr->n); if (tfontptr->name!=NULL) { char* tfmname=kpse_find_file(tfontptr->n, kpse_tfm_format, false); if (tfmname!=NULL) { if (!ReadTFM(tfontptr,tfmname)) { Warning("unable to read tfm file %s", tfmname); free(tfontptr->name); tfontptr->name=NULL; } else if ((option_flags & USE_FREETYPE)==0 || !InitFT(tfontptr)) { /* if Freetype loading fails for some reason, fall back to PK font */ free(tfontptr->name); tfontptr->name=NULL; } free(tfmname); } } } #endif /* HAVE_FT2 */ if (tfontptr->name==NULL) { tfontptr->name=kpse_find_pk (tfontptr->n, tfontptr->dpi, &font_ret); if (tfontptr->name!=NULL) { if (!FILESTRCASEEQ (tfontptr->n, font_ret.name)) { page_flags |= PAGE_GAVE_WARN; Warning("font %s not found, using %s at %d dpi instead", tfontptr->n, font_ret.name, font_ret.dpi); tfontptr->c = 0; /* no checksum warning */ } else if (!kpse_bitmap_tolerance ((double)font_ret.dpi, (double) tfontptr->dpi)) { page_flags |= PAGE_GAVE_WARN; Warning("font %s at %d dpi not found, using %d dpi instead", tfontptr->n, tfontptr->dpi, font_ret.dpi); } InitPK(tfontptr); } else { page_flags |= PAGE_GAVE_WARN; Warning("font %s at %d dpi not found, characters will be left blank", tfontptr->n, tfontptr->dpi); #ifndef WIN32 tfontptr->fmmap.fd = 0; #else /* WIN32 */ tfontptr->fmmap.hFile = INVALID_HANDLE_VALUE; #endif tfontptr->magnification = 0; tfontptr->designsize = 0; } } }