diff options
Diffstat (limited to 'src/fontfile')
-rw-r--r-- | src/fontfile/bitsource.c | 28 | ||||
-rw-r--r-- | src/fontfile/bufio.c | 74 | ||||
-rw-r--r-- | src/fontfile/decompress.c | 35 | ||||
-rw-r--r-- | src/fontfile/defaults.c | 7 | ||||
-rw-r--r-- | src/fontfile/dirfile.c | 87 | ||||
-rw-r--r-- | src/fontfile/ffcheck.c | 139 | ||||
-rw-r--r-- | src/fontfile/fileio.c | 14 | ||||
-rw-r--r-- | src/fontfile/filewr.c | 11 | ||||
-rw-r--r-- | src/fontfile/fontdir.c | 233 | ||||
-rw-r--r-- | src/fontfile/fontfile.c | 194 | ||||
-rw-r--r-- | src/fontfile/fontscale.c | 43 | ||||
-rw-r--r-- | src/fontfile/gunzip.c | 36 | ||||
-rw-r--r-- | src/fontfile/printerfont.c | 113 | ||||
-rw-r--r-- | src/fontfile/register.c | 39 | ||||
-rw-r--r-- | src/fontfile/renderers.c | 71 |
15 files changed, 588 insertions, 536 deletions
diff --git a/src/fontfile/bitsource.c b/src/fontfile/bitsource.c index ac77875..0230535 100644 --- a/src/fontfile/bitsource.c +++ b/src/fontfile/bitsource.c @@ -25,6 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ +/* $XFree86: xc/lib/font/fontfile/bitsource.c,v 1.4 2001/12/14 19:56:49 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium @@ -35,8 +36,7 @@ in this Software without prior written authorization from The Open Group. BitmapSourcesRec FontFileBitmapSources; Bool -FontFileRegisterBitmapSource (fpe) - FontPathElementPtr fpe; +FontFileRegisterBitmapSource (FontPathElementPtr fpe) { FontPathElementPtr *new; int i; @@ -59,8 +59,7 @@ FontFileRegisterBitmapSource (fpe) } void -FontFileUnregisterBitmapSource (fpe) - FontPathElementPtr fpe; +FontFileUnregisterBitmapSource (FontPathElementPtr fpe) { int i; @@ -90,7 +89,7 @@ FontFileUnregisterBitmapSource (fpe) * The bitmap sources in the new path will be registered by the init_func. */ void -FontFileEmptyBitmapSource() +FontFileEmptyBitmapSource(void) { if (FontFileBitmapSources.count == 0) return; @@ -102,16 +101,15 @@ FontFileEmptyBitmapSource() } int -FontFileMatchBitmapSource (fpe, pFont, flags, entry, zeroPat, vals, format, fmask, noSpecificSize) - FontPathElementPtr fpe; - FontPtr *pFont; - int flags; - FontEntryPtr entry; - FontNamePtr zeroPat; - FontScalablePtr vals; - fsBitmapFormat format; - fsBitmapFormatMask fmask; - Bool noSpecificSize; +FontFileMatchBitmapSource (FontPathElementPtr fpe, + FontPtr *pFont, + int flags, + FontEntryPtr entry, + FontNamePtr zeroPat, + FontScalablePtr vals, + fsBitmapFormat format, + fsBitmapFormatMask fmask, + Bool noSpecificSize) { int source; FontEntryPtr zero; diff --git a/src/fontfile/bufio.c b/src/fontfile/bufio.c index 40293c5..19d61bf 100644 --- a/src/fontfile/bufio.c +++ b/src/fontfile/bufio.c @@ -27,6 +27,7 @@ other dealings in this Software without prior written authorization from The Open Group. */ +/* $XFree86: xc/lib/font/fontfile/bufio.c,v 3.10 2002/05/31 18:45:49 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium @@ -37,16 +38,13 @@ from The Open Group. #include <fontmisc.h> #include <bufio.h> #include <errno.h> -#ifdef X_NOT_STDC_ENV -extern int errno; -#endif BufFilePtr -BufFileCreate (private, io, skip, close) - char *private; - int (*io)(); - int (*skip)(); - int (*close)(); +BufFileCreate (char *private, + int (*input)(BufFilePtr), + int (*output)(int, BufFilePtr), + int (*skip)(BufFilePtr, int), + int (*close)(BufFilePtr, int)) { BufFilePtr f; @@ -56,17 +54,18 @@ BufFileCreate (private, io, skip, close) f->private = private; f->bufp = f->buffer; f->left = 0; - f->io = io; + f->input = input; + f->output = output; f->skip = skip; + f->eof = 0; f->close = close; return f; } -#define FileDes(f) ((int) (f)->private) +#define FileDes(f) ((int)(long) (f)->private) static int -BufFileRawFill (f) - BufFilePtr f; +BufFileRawFill (BufFilePtr f) { int left; @@ -81,9 +80,7 @@ BufFileRawFill (f) } static int -BufFileRawSkip (f, count) - BufFilePtr f; - int count; +BufFileRawSkip (BufFilePtr f, int count) { int curoff; int fileoff; @@ -115,8 +112,7 @@ BufFileRawSkip (f, count) } static int -BufFileRawClose (f, doClose) - BufFilePtr f; +BufFileRawClose (BufFilePtr f, int doClose) { if (doClose) close (FileDes (f)); @@ -124,16 +120,17 @@ BufFileRawClose (f, doClose) } BufFilePtr -BufFileOpenRead (fd) - int fd; +BufFileOpenRead (int fd) { - return BufFileCreate ((char *) fd, BufFileRawFill, BufFileRawSkip, BufFileRawClose); +#ifdef __UNIXOS2__ + /* hv: I'd bet WIN32 has the same effect here */ + setmode(fd,O_BINARY); +#endif + return BufFileCreate ((char *)(long) fd, BufFileRawFill, 0, BufFileRawSkip, BufFileRawClose); } static int -BufFileRawFlush (c, f) - int c; - BufFilePtr f; +BufFileRawFlush (int c, BufFilePtr f) { int cnt; @@ -148,22 +145,22 @@ BufFileRawFlush (c, f) } BufFilePtr -BufFileOpenWrite (fd) - int fd; +BufFileOpenWrite (int fd) { BufFilePtr f; - f = BufFileCreate ((char *) fd, BufFileRawFlush, 0, BufFileFlush); +#ifdef __UNIXOS2__ + /* hv: I'd bet WIN32 has the same effect here */ + setmode(fd,O_BINARY); +#endif + f = BufFileCreate ((char *)(long) fd, 0, BufFileRawFlush, 0, BufFileFlush); f->bufp = f->buffer; f->left = BUFFILESIZE; return f; } int -BufFileRead (f, b, n) - BufFilePtr f; - char *b; - int n; +BufFileRead (BufFilePtr f, char *b, int n) { int c, cnt; cnt = n; @@ -177,10 +174,7 @@ BufFileRead (f, b, n) } int -BufFileWrite (f, b, n) - BufFilePtr f; - char *b; - int n; +BufFileWrite (BufFilePtr f, char *b, int n) { int cnt; cnt = n; @@ -192,18 +186,15 @@ BufFileWrite (f, b, n) } int -BufFileFlush (f) - BufFilePtr f; +BufFileFlush (BufFilePtr f, int doClose) { if (f->bufp != f->buffer) - return (*f->io) (BUFFILEEOF, f); + return (*f->output) (BUFFILEEOF, f); return 0; } int -BufFileClose (f, doClose) - BufFilePtr f; - int doClose; +BufFileClose (BufFilePtr f, int doClose) { int ret; ret = (*f->close) (f, doClose); @@ -212,8 +203,7 @@ BufFileClose (f, doClose) } void -BufFileFree (f) - BufFilePtr f; +BufFileFree (BufFilePtr f) { xfree (f); } diff --git a/src/fontfile/decompress.c b/src/fontfile/decompress.c index aef4461..187254d 100644 --- a/src/fontfile/decompress.c +++ b/src/fontfile/decompress.c @@ -45,6 +45,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ +/* $XFree86: xc/lib/font/fontfile/decompress.c,v 1.5 2001/12/14 19:56:50 dawes Exp $ */ /* * decompress - cat a compressed file */ @@ -88,8 +89,6 @@ static char_type magic_header[] = { "\037\235" }; /* 1F 9D */ # define MAXCODE(n_bits) ((1 << (n_bits)) - 1) #endif /* COMPATIBLE */ -static code_int getcode(); - /* * the next two codes should not be changed lightly, as they must not * lie within the contiguous general code space. @@ -132,11 +131,13 @@ static int hsize_table[] = { 69001 /* 16 bits - 95% occupancy */ }; -static int BufCompressedFill(), BufCompressedSkip(), BufCompressedClose(); +static int BufCompressedClose ( BufFilePtr f, int doClose ); +static int BufCompressedFill ( BufFilePtr f ); +static code_int getcode ( CompressedFile *file ); +static int BufCompressedSkip ( BufFilePtr f, int bytes ); BufFilePtr -BufFilePushCompressed (f) - BufFilePtr f; +BufFilePushCompressed (BufFilePtr f) { int code; int maxbits; @@ -150,6 +151,8 @@ BufFilePushCompressed (f) return 0; } code = BufFileGet (f); + if (code == BUFFILEEOF) return 0; + maxbits = code & BIT_MASK; if (maxbits > BITS || maxbits < 12) return 0; @@ -184,13 +187,13 @@ BufFilePushCompressed (f) *file->stackp++ = file->finchar; return BufFileCreate ((char *) file, BufCompressedFill, + 0, BufCompressedSkip, BufCompressedClose); } static int -BufCompressedClose (f, doClose) - BufFilePtr f; +BufCompressedClose (BufFilePtr f, int doClose) { CompressedFile *file; BufFilePtr raw; @@ -203,8 +206,7 @@ BufCompressedClose (f, doClose) } static int -BufCompressedFill (f) - BufFilePtr f; +BufCompressedFill (BufFilePtr f) { CompressedFile *file; register char_type *stackp, *de_stack; @@ -300,8 +302,7 @@ BufCompressedFill (f) static char_type rmask[9] = {0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff}; static code_int -getcode(file) - CompressedFile *file; +getcode(CompressedFile *file) { register code_int code; register int r_off, bits; @@ -375,9 +376,7 @@ getcode(file) } static int -BufCompressedSkip (f, bytes) - BufFilePtr f; - int bytes; +BufCompressedSkip (BufFilePtr f, int bytes) { int c; while (bytes--) @@ -390,9 +389,8 @@ BufCompressedSkip (f, bytes) } #ifdef TEST -main (argc, argv) - int argc; - char **argv; +int +main (int argc, char *argv[]) { BufFilePtr inputraw, input, output; int c; @@ -400,9 +398,10 @@ main (argc, argv) inputraw = BufFileOpenRead (0); input = BufFilePushCompressed (inputraw); output = BufFileOpenWrite (1); - while ((c = BufFileGet (input)) != -1) + while ((c = BufFileGet (input)) != BUFFILEEOF) BufFilePut (c, output); BufFileClose (input, FALSE); BufFileClose (output, FALSE); + return 0; } #endif diff --git a/src/fontfile/defaults.c b/src/fontfile/defaults.c index 2738287..6425d20 100644 --- a/src/fontfile/defaults.c +++ b/src/fontfile/defaults.c @@ -25,6 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ +/* $XFree86: xc/lib/font/fontfile/defaults.c,v 1.8 2001/12/14 19:56:50 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium @@ -62,8 +63,10 @@ in this Software without prior written authorization from The Open Group. #define DEFAULT_SCAN_UNIT 1 #endif -FontDefaultFormat (bit, byte, glyph, scan) - int *bit, *byte, *glyph, *scan; +#include "fntfilst.h" + +void +FontDefaultFormat (int *bit, int *byte, int *glyph, int *scan) { *bit = DEFAULT_BIT_ORDER; *byte = DEFAULT_BYTE_ORDER; diff --git a/src/fontfile/dirfile.c b/src/fontfile/dirfile.c index 82f0d10..5f90501 100644 --- a/src/fontfile/dirfile.c +++ b/src/fontfile/dirfile.c @@ -25,6 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ +/* $XFree86: xc/lib/font/fontfile/dirfile.c,v 3.15 2002/05/31 18:45:50 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium @@ -41,20 +42,23 @@ in this Software without prior written authorization from The Open Group. #include <sys/types.h> #include <sys/stat.h> #include <errno.h> -#ifdef X_NOT_STDC_ENV -extern int errno; -#endif -static int ReadFontAlias(); +static Bool AddFileNameAliases ( FontDirectoryPtr dir ); +static int ReadFontAlias ( char *directory, Bool isFile, + FontDirectoryPtr *pdir ); +static int lexAlias ( FILE *file, char **lexToken ); +static int lexc ( FILE *file ); int -FontFileReadDirectory (directory, pdir) - char *directory; - FontDirectoryPtr *pdir; +FontFileReadDirectory (char *directory, FontDirectoryPtr *pdir) { char file_name[MAXFONTFILENAMELEN]; char font_name[MAXFONTNAMELEN]; char dir_file[MAXFONTFILENAMELEN]; +#ifdef FONTDIRATTRIB + char dir_path[MAXFONTFILENAMELEN]; + char *ptr; +#endif FILE *file; int count, i, @@ -64,8 +68,24 @@ FontFileReadDirectory (directory, pdir) FontDirectoryPtr dir = NullFontDirectory; +#ifdef FONTDIRATTRIB + /* Check for font directory attributes */ +#ifndef __UNIXOS2__ + if ((ptr = strchr(directory, ':'))) { +#else + /* OS/2 path might start with a drive letter, don't clip this */ + if (ptr = strchr(directory+2, ':')) { +#endif + strncpy(dir_path, directory, ptr - directory); + dir_path[ptr - directory] = '\0'; + } else { + strcpy(dir_path, directory); + } + strcpy(dir_file, dir_path); +#else strcpy(dir_file, directory); - if (directory[strlen(directory) - 1] != '/') +#endif + if (dir_file[strlen(dir_file) - 1] != '/') strcat(dir_file, "/"); strcat(dir_file, FontDirFile); file = fopen(dir_file, "r"); @@ -85,8 +105,14 @@ FontFileReadDirectory (directory, pdir) dir->dir_mtime = statb.st_mtime; if (format[0] == '\0') sprintf(format, "%%%ds %%%d[^\n]\n", - MAXFONTFILENAMELEN-1, MAXFONTNAMELEN-1); + MAXFONTFILENAMELEN-1, MAXFONTNAMELEN-1); while ((count = fscanf(file, format, file_name, font_name)) != EOF) { +#ifdef __UNIXOS2__ + /* strip any existing trailing CR */ + for (i=0; i<strlen(font_name); i++) { + if (font_name[i]=='\r') font_name[i] = '\0'; + } +#endif if (count != 2) { FontFileFreeDir (dir); fclose(file); @@ -103,7 +129,11 @@ FontFileReadDirectory (directory, pdir) } else if (errno != ENOENT) { return BadFontPath; } +#ifdef FONTDIRATTRIB + status = ReadFontAlias(dir_path, FALSE, &dir); +#else status = ReadFontAlias(directory, FALSE, &dir); +#endif if (status != Successful) { if (dir) FontFileFreeDir (dir); @@ -119,10 +149,9 @@ FontFileReadDirectory (directory, pdir) } Bool -FontFileDirectoryChanged(dir) - FontDirectoryPtr dir; +FontFileDirectoryChanged(FontDirectoryPtr dir) { - char dir_file[MAXFONTNAMELEN]; + char dir_file[MAXFONTFILENAMELEN]; struct stat statb; strcpy (dir_file, dir->directory); @@ -153,11 +182,10 @@ FontFileDirectoryChanged(dir) */ static Bool -AddFileNameAliases(dir) - FontDirectoryPtr dir; +AddFileNameAliases(FontDirectoryPtr dir) { int i; - char copy[MAXFONTNAMELEN]; + char copy[MAXFONTFILENAMELEN]; char *fileName; FontTablePtr table; FontRendererPtr renderer; @@ -198,29 +226,24 @@ AddFileNameAliases(dir) * "font name \"With Double Quotes\" \\ and \\ back-slashes" * works just fine. * - * A line beginning with a # denotes a newline-terminated comment. + * A line beginning with a ! denotes a newline-terminated comment. */ /* * token types */ -static int lexAlias(), lexc(); - #define NAME 0 #define NEWLINE 1 #define DONE 2 #define EALLOC 3 static int -ReadFontAlias(directory, isFile, pdir) - char *directory; - Bool isFile; - FontDirectoryPtr *pdir; +ReadFontAlias(char *directory, Bool isFile, FontDirectoryPtr *pdir) { char alias[MAXFONTNAMELEN]; char font_name[MAXFONTNAMELEN]; - char alias_file[MAXFONTNAMELEN]; + char alias_file[MAXFONTFILENAMELEN]; FILE *file; FontDirectoryPtr dir; int token; @@ -279,12 +302,8 @@ ReadFontAlias(directory, isFile, pdir) status = AllocError; break; case NAME: - CopyISOLatin1Lowered((unsigned char *) alias, - (unsigned char *) alias, - strlen(alias)); - CopyISOLatin1Lowered((unsigned char *) font_name, - (unsigned char *) lexToken, - strlen(lexToken)); + CopyISOLatin1Lowered(alias, alias, strlen(alias)); + CopyISOLatin1Lowered(font_name, lexToken, strlen(lexToken)); if (!FontFileAddFontAlias (dir, alias, font_name)) status = AllocError; break; @@ -305,9 +324,7 @@ ReadFontAlias(directory, isFile, pdir) static int charClass; static int -lexAlias(file, lexToken) - FILE *file; - char **lexToken; +lexAlias(FILE *file, char **lexToken) { int c; char *t; @@ -370,6 +387,8 @@ lexAlias(file, lexToken) break; case Comment: continue; + default: + break; } *t++ = c; ++count; @@ -405,8 +424,7 @@ lexAlias(file, lexToken) } static int -lexc(file) - FILE *file; +lexc(FILE *file) { int c; @@ -429,6 +447,7 @@ lexc(file) case '\t': charClass = WHITE; break; + case '\r': case '\n': charClass = NL; break; diff --git a/src/fontfile/ffcheck.c b/src/fontfile/ffcheck.c index 6f29801..4de2a4b 100644 --- a/src/fontfile/ffcheck.c +++ b/src/fontfile/ffcheck.c @@ -25,43 +25,34 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ +/* $XFree86: xc/lib/font/fontfile/ffcheck.c,v 1.15 2001/12/14 19:56:51 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium */ -/* $NCDId: @(#)fontfile.c,v 1.6 1991/07/02 17:00:46 lemke Exp $ */ +/* $NCDXorg: @(#)fontfile.c,v 1.6 1991/07/02 17:00:46 lemke Exp $ */ -#include "fntfilst.h" +#include "fntfilst.h" +#include "bitmap.h" +#ifdef LOADABLEFONTS +#include "fontmod.h" +#endif /* * Map FPE functions to renderer functions */ -extern int FontFileNameCheck(); -extern int FontFileInitFPE(); -extern int FontFileResetFPE(); -extern int FontFileFreeFPE(); -extern void FontFileCloseFont(); - /* Here we must check the client to see if it has a context attached to * it that allows us to access the printer fonts */ -int -FontFileCheckOpenFont (client, fpe, flags, name, namelen, format, fmask, - id, pFont, aliasName, non_cachable_font) - pointer client; - FontPathElementPtr fpe; - int flags; - char *name; - int namelen; - fsBitmapFormat format; - fsBitmapFormatMask fmask; - XID id; - FontPtr *pFont; - char **aliasName; - FontPtr non_cachable_font; +static int +FontFileCheckOpenFont (pointer client, FontPathElementPtr fpe, Mask flags, + char *name, int namelen, + fsBitmapFormat format, fsBitmapFormatMask fmask, + XID id, FontPtr *pFont, char **aliasName, + FontPtr non_cachable_font) { if (XpClientIsBitmapClient(client)) return (FontFileOpenFont (client, fpe, flags, name, namelen, format, @@ -69,28 +60,19 @@ FontFileCheckOpenFont (client, fpe, flags, name, namelen, format, fmask, return BadFontName; } -int -FontFileCheckListFonts (client, fpe, pat, len, max, names) - pointer client; - FontPathElementPtr fpe; - char *pat; - int len; - int max; - FontNamesPtr names; +static int +FontFileCheckListFonts (pointer client, FontPathElementPtr fpe, + char *pat, int len, int max, FontNamesPtr names) { if (XpClientIsBitmapClient(client)) return FontFileListFonts (client, fpe, pat, len, max, names); return BadFontName; } -int -FontFileCheckStartListFontsWithInfo(client, fpe, pat, len, max, privatep) - pointer client; - FontPathElementPtr fpe; - char *pat; - int len; - int max; - pointer *privatep; +static int +FontFileCheckStartListFontsWithInfo(pointer client, FontPathElementPtr fpe, + char *pat, int len, int max, + pointer *privatep) { if (XpClientIsBitmapClient(client)) return FontFileStartListFontsWithInfo(client, fpe, pat, len, @@ -98,16 +80,11 @@ FontFileCheckStartListFontsWithInfo(client, fpe, pat, len, max, privatep) return BadFontName; } -int -FontFileCheckListNextFontWithInfo(client, fpe, namep, namelenp, pFontInfo, - numFonts, private) - pointer client; - FontPathElementPtr fpe; - char **namep; - int *namelenp; - FontInfoPtr *pFontInfo; - int *numFonts; - pointer private; +static int +FontFileCheckListNextFontWithInfo(pointer client, FontPathElementPtr fpe, + char **namep, int *namelenp, + FontInfoPtr *pFontInfo, + int *numFonts, pointer private) { if (XpClientIsBitmapClient(client)) return FontFileListNextFontWithInfo(client, fpe, namep, namelenp, @@ -115,14 +92,10 @@ FontFileCheckListNextFontWithInfo(client, fpe, namep, namelenp, pFontInfo, return BadFontName; } -int -FontFileCheckStartListFontsAndAliases(client, fpe, pat, len, max, privatep) - pointer client; - FontPathElementPtr fpe; - char *pat; - int len; - int max; - pointer *privatep; +static int +FontFileCheckStartListFontsAndAliases(pointer client, FontPathElementPtr fpe, + char *pat, int len, int max, + pointer *privatep) { if (XpClientIsBitmapClient(client)) return FontFileStartListFontsAndAliases(client, fpe, pat, len, @@ -130,16 +103,11 @@ FontFileCheckStartListFontsAndAliases(client, fpe, pat, len, max, privatep) return BadFontName; } -int -FontFileCheckListNextFontOrAlias(client, fpe, namep, namelenp, resolvedp, - resolvedlenp, private) - pointer client; - FontPathElementPtr fpe; - char **namep; - int *namelenp; - char **resolvedp; - int *resolvedlenp; - pointer private; +static int +FontFileCheckListNextFontOrAlias(pointer client, FontPathElementPtr fpe, + char **namep, int *namelenp, + char **resolvedp, int *resolvedlenp, + pointer private) { if (XpClientIsBitmapClient(client)) return FontFileListNextFontOrAlias(client, fpe, namep, namelenp, @@ -147,24 +115,51 @@ FontFileCheckListNextFontOrAlias(client, fpe, namep, namelenp, resolvedp, return BadFontName; } -extern void FontFileEmptyBitmapSource(); -typedef int (*IntFunc) (); +typedef int (*IntFunc) (void); static int font_file_check_type; void -FontFileCheckRegisterFpeFunctions () +FontFileCheckRegisterFpeFunctions (void) { +#ifndef LOADABLEFONTS BitmapRegisterFontFileFunctions (); #ifndef LOWMEMFTPT #ifndef CRAY +#ifdef BUILD_SPEEDO SpeedoRegisterFontFileFunctions (); +#endif +#ifdef BUILD_TYPE1 Type1RegisterFontFileFunctions(); #endif +#endif +#ifdef BUILD_CID + CIDRegisterFontFileFunctions(); +#endif +#ifdef BUILD_FREETYPE + FreeTypeRegisterFontFileFunctions(); +#endif +#ifdef BUILD_XTRUETYPE + XTrueTypeRegisterFontFileFunctions(); +#endif #endif /* ifndef LOWMEMFTPT */ +#else + + { + int i; + + if (FontModuleList) { + for (i = 0; FontModuleList[i].name; i++) { + if (FontModuleList[i].initFunc) + FontModuleList[i].initFunc(); + } + } + } +#endif + font_file_check_type = RegisterFPEFunctions(FontFileNameCheck, FontFileInitFPE, FontFileFreeFPE, @@ -174,9 +169,9 @@ FontFileCheckRegisterFpeFunctions () FontFileCheckListFonts, FontFileCheckStartListFontsWithInfo, FontFileCheckListNextFontWithInfo, - (IntFunc) 0, - (IntFunc) 0, - (IntFunc) 0, + NULL, + NULL, + NULL, FontFileCheckStartListFontsAndAliases, FontFileCheckListNextFontOrAlias, FontFileEmptyBitmapSource); diff --git a/src/fontfile/fileio.c b/src/fontfile/fileio.c index 43c84ab..8a7cb03 100644 --- a/src/fontfile/fileio.c +++ b/src/fontfile/fileio.c @@ -25,6 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ +/* $XFree86: xc/lib/font/fontfile/fileio.c,v 3.10 2002/05/31 18:45:50 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium @@ -33,12 +34,11 @@ in this Software without prior written authorization from The Open Group. #include <fntfilio.h> #include <X11/Xos.h> #ifndef O_BINARY -#define O_BINARY 0 +#define O_BINARY O_RDONLY #endif FontFilePtr -FontFileOpen (name) - char *name; +FontFileOpen (const char *name) { int fd; int len; @@ -54,7 +54,12 @@ FontFileOpen (name) return 0; } len = strlen (name); +#ifndef __UNIXOS2__ if (len > 2 && !strcmp (name + len - 2, ".Z")) { +#else + if (len > 2 && (!strcmp (name + len - 4, ".pcz") || + !strcmp (name + len - 2, ".Z"))) { +#endif cooked = BufFilePushCompressed (raw); if (!cooked) { BufFileClose (raw, TRUE); @@ -75,8 +80,7 @@ FontFileOpen (name) } int -FontFileClose (f) - FontFilePtr f; +FontFileClose (FontFilePtr f) { return BufFileClose ((BufFilePtr) f, TRUE); } diff --git a/src/fontfile/filewr.c b/src/fontfile/filewr.c index d8ed5b5..8de8f26 100644 --- a/src/fontfile/filewr.c +++ b/src/fontfile/filewr.c @@ -25,6 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ +/* $XFree86: xc/lib/font/fontfile/filewr.c,v 3.7 2002/05/31 18:45:50 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium @@ -34,12 +35,11 @@ in this Software without prior written authorization from The Open Group. #include <X11/Xos.h> FontFilePtr -FontFileOpenWrite (name) - char *name; +FontFileOpenWrite (const char *name) { int fd; -#ifdef WIN32 +#if defined(WIN32) || defined(__UNIXOS2__) || defined(__CYGWIN__) fd = open (name, O_CREAT|O_TRUNC|O_RDWR|O_BINARY, 0666); #else fd = creat (name, 0666); @@ -50,14 +50,13 @@ FontFileOpenWrite (name) } FontFilePtr -FontFileOpenWriteFd (fd) +FontFileOpenWriteFd (int fd) { return (FontFilePtr) BufFileOpenWrite (fd); } FontFilePtr -FontFileOpenFd (fd) - int fd; +FontFileOpenFd (int fd) { return (FontFilePtr) BufFileOpenRead (fd); } diff --git a/src/fontfile/fontdir.c b/src/fontfile/fontdir.c index beca5af..a2bd411 100644 --- a/src/fontfile/fontdir.c +++ b/src/fontfile/fontdir.c @@ -25,6 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ +/* $XFree86: xc/lib/font/fontfile/fontdir.c,v 3.19 2002/05/31 18:45:50 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium @@ -34,9 +35,7 @@ in this Software without prior written authorization from The Open Group. #include <X11/keysym.h> Bool -FontFileInitTable (table, size) - FontTablePtr table; - int size; +FontFileInitTable (FontTablePtr table, int size) { if (size) { @@ -53,14 +52,14 @@ FontFileInitTable (table, size) } void -FontFileFreeEntry (entry) - FontEntryPtr entry; +FontFileFreeEntry (FontEntryPtr entry) { FontScalableExtraPtr extra; int i; if (entry->name.name) xfree(entry->name.name); + entry->name.name = NULL; switch (entry->type) { @@ -75,9 +74,11 @@ FontFileFreeEntry (entry) break; case FONT_ENTRY_BITMAP: xfree (entry->u.bitmap.fileName); + entry->u.bitmap.fileName = NULL; break; case FONT_ENTRY_ALIAS: xfree (entry->u.alias.resolved); + entry->u.alias.resolved = NULL; break; #ifdef NOTYET case FONT_ENTRY_BC: @@ -87,8 +88,7 @@ FontFileFreeEntry (entry) } void -FontFileFreeTable (table) - FontTablePtr table; +FontFileFreeTable (FontTablePtr table) { int i; @@ -98,21 +98,44 @@ FontFileFreeTable (table) } FontDirectoryPtr -FontFileMakeDir(dirName, size) - char *dirName; - int size; +FontFileMakeDir(char *dirName, int size) { FontDirectoryPtr dir; int dirlen; int needslash = 0; +#ifdef FONTDIRATTRIB + char *attrib; + int attriblen; +#endif +#ifdef FONTDIRATTRIB +#ifndef __UNIXOS2__ + attrib = strchr(dirName, ':'); +#else + /* OS/2 uses the colon in the drive letter descriptor, skip this */ + attrib = strchr(dirName+2, ':'); +#endif + if (attrib) { + dirlen = attrib - dirName; + attriblen = strlen(attrib); + } else { + dirlen = strlen(dirName); + attriblen = 0; + } +#else dirlen = strlen(dirName); +#endif if (dirName[dirlen - 1] != '/') #ifdef NCD if (dirlen) /* leave out slash for builtins */ #endif needslash = 1; +#ifdef FONTDIRATTRIB + dir = (FontDirectoryPtr) xalloc(sizeof *dir + dirlen + needslash + 1 + + (attriblen ? attriblen + 1 : 0)); +#else dir = (FontDirectoryPtr) xalloc(sizeof *dir + dirlen + needslash + 1); +#endif if (!dir) return (FontDirectoryPtr)0; if (!FontFileInitTable (&dir->scalable, 0)) @@ -129,15 +152,25 @@ FontFileMakeDir(dirName, size) dir->directory = (char *) (dir + 1); dir->dir_mtime = 0; dir->alias_mtime = 0; +#ifdef FONTDIRATTRIB + if (attriblen) + dir->attributes = dir->directory + dirlen + needslash + 1; + else + dir->attributes = NULL; + strncpy(dir->directory, dirName, dirlen); + dir->directory[dirlen] = '\0'; + if (dir->attributes) + strcpy(dir->attributes, attrib); +#else strcpy(dir->directory, dirName); +#endif if (needslash) strcat(dir->directory, "/"); return dir; } void -FontFileFreeDir (dir) - FontDirectoryPtr dir; +FontFileFreeDir (FontDirectoryPtr dir) { FontFileFreeTable (&dir->scalable); FontFileFreeTable (&dir->nonScalable); @@ -145,9 +178,7 @@ FontFileFreeDir (dir) } FontEntryPtr -FontFileAddEntry(table, prototype) - FontTablePtr table; - FontEntryPtr prototype; +FontFileAddEntry(FontTablePtr table, FontEntryPtr prototype) { FontEntryPtr entry; int newsize; @@ -175,24 +206,56 @@ FontFileAddEntry(table, prototype) return entry; } +/* + * Compare two strings just like strcmp, but preserve decimal integer + * sorting order, i.e. "2" < "10" or "iso8859-2" < "iso8859-10" < + * "iso10646-1". Strings are sorted as if sequences of digits were + * prefixed by a length indicator (i.e., does not ignore leading zeroes). + * + * Markus Kuhn <Markus.Kuhn@cl.cam.ac.uk> + */ +#define Xisdigit(c) ('\060' <= (c) && (c) <= '\071') + +static int strcmpn(const char *s1, const char *s2) +{ + int digits, predigits = 0; + const char *ss1, *ss2; + + while (1) { + if (*s1 == 0 && *s2 == 0) + return 0; + digits = Xisdigit(*s1) && Xisdigit(*s2); + if (digits && !predigits) { + ss1 = s1; + ss2 = s2; + while (Xisdigit(*ss1) && Xisdigit(*ss2)) + ss1++, ss2++; + if (!Xisdigit(*ss1) && Xisdigit(*ss2)) + return -1; + if (Xisdigit(*ss1) && !Xisdigit(*ss2)) + return 1; + } + if ((unsigned char)*s1 < (unsigned char)*s2) + return -1; + if ((unsigned char)*s1 > (unsigned char)*s2) + return 1; + predigits = digits; + s1++, s2++; + } +} + + static int -#ifdef NeedFunctionPrototypes FontFileNameCompare(const void* a, const void* b) -#else -FontFileNameCompare(a, b) - char *a, - *b; -#endif { FontEntryPtr a_name = (FontEntryPtr) a, b_name = (FontEntryPtr) b; - return strcmp(a_name->name.name, b_name->name.name); + return strcmpn(a_name->name.name, b_name->name.name); } void -FontFileSortTable (table) - FontTablePtr table; +FontFileSortTable (FontTablePtr table) { if (!table->sorted) { qsort((char *) table->entries, table->used, sizeof(FontEntryRec), @@ -202,8 +265,7 @@ FontFileSortTable (table) } void -FontFileSortDir(dir) - FontDirectoryPtr dir; +FontFileSortDir(FontDirectoryPtr dir) { FontFileSortTable (&dir->scalable); FontFileSortTable (&dir->nonScalable); @@ -225,19 +287,17 @@ FontFileSortDir(dir) */ #define isWild(c) ((c) == XK_asterisk || (c) == XK_question) +#define isDigit(c) (XK_0 <= (c) && (c) <= XK_9) static int -SetupWildMatch(table, pat, leftp, rightp, privatep) - FontTablePtr table; - FontNamePtr pat; - int *leftp, - *rightp; - int *privatep; +SetupWildMatch(FontTablePtr table, FontNamePtr pat, + int *leftp, int *rightp, int *privatep) { int nDashes; char c; char *t; char *firstWild; + char *firstDigit; int first; int center, left, @@ -248,12 +308,17 @@ SetupWildMatch(table, pat, leftp, rightp, privatep) name = pat->name; nDashes = pat->ndashes; firstWild = 0; + firstDigit = 0; t = name; while ((c = *t++)) { if (isWild(c)) { if (!firstWild) firstWild = t - 1; } + if (isDigit(c)) { + if (!firstDigit) + firstDigit = t - 1; + } } left = 0; right = table->used; @@ -266,7 +331,10 @@ SetupWildMatch(table, pat, leftp, rightp, privatep) *rightp = right; return -1; } else if (firstWild) { - first = firstWild - name; + if (firstDigit && firstDigit < firstWild) + first = firstDigit - name; + else + first = firstWild - name; while (left < right) { center = (left + right) / 2; result = strncmp(name, table->entries[center].name.name, first); @@ -283,7 +351,7 @@ SetupWildMatch(table, pat, leftp, rightp, privatep) } else { while (left < right) { center = (left + right) / 2; - result = strcmp(name, table->entries[center].name.name); + result = strcmpn(name, table->entries[center].name.name); if (result == 0) return center; if (result < 0) @@ -298,9 +366,7 @@ SetupWildMatch(table, pat, leftp, rightp, privatep) } static int -PatternMatch(pat, patdashes, string, stringdashes) - char *pat; - char *string; +PatternMatch(char *pat, int patdashes, char *string, int stringdashes) { char c, t; @@ -360,9 +426,7 @@ PatternMatch(pat, patdashes, string, stringdashes) } int -FontFileCountDashes (name, namelen) - char *name; - int namelen; +FontFileCountDashes (char *name, int namelen) { int ndashes = 0; @@ -373,8 +437,7 @@ FontFileCountDashes (name, namelen) } char * -FontFileSaveString (s) - char *s; +FontFileSaveString (char *s) { char *n; @@ -386,10 +449,8 @@ FontFileSaveString (s) } FontEntryPtr -FontFileFindNameInScalableDir(table, pat, vals) - FontTablePtr table; - FontNamePtr pat; - FontScalablePtr vals; +FontFileFindNameInScalableDir(FontTablePtr table, FontNamePtr pat, + FontScalablePtr vals) { int i, start, @@ -417,11 +478,11 @@ FontFileFindNameInScalableDir(table, pat, vals) cap = ~0; /* Calling code will have to see if true */ else cap = 0; - if (((vs & PIXELSIZE_MASK) == PIXELSIZE_ARRAY || - (vs & POINTSIZE_MASK) == POINTSIZE_ARRAY) && - !(cap & CAP_MATRIX) || - (vs & CHARSUBSET_SPECIFIED) && - !(cap & CAP_CHARSUBSETTING)) + if ((((vs & PIXELSIZE_MASK) == PIXELSIZE_ARRAY || + (vs & POINTSIZE_MASK) == POINTSIZE_ARRAY) && + !(cap & CAP_MATRIX)) || + ((vs & CHARSUBSET_SPECIFIED) && + !(cap & CAP_CHARSUBSETTING))) continue; } return &table->entries[i]; @@ -433,23 +494,15 @@ FontFileFindNameInScalableDir(table, pat, vals) } FontEntryPtr -FontFileFindNameInDir(table, pat) - FontTablePtr table; - FontNamePtr pat; +FontFileFindNameInDir(FontTablePtr table, FontNamePtr pat) { return FontFileFindNameInScalableDir(table, pat, (FontScalablePtr)0); } int -FontFileFindNamesInScalableDir(table, pat, max, names, vals, - alias_behavior, newmax) - FontTablePtr table; - FontNamePtr pat; - int max; - FontNamesPtr names; - FontScalablePtr vals; - int alias_behavior; - int *newmax; +FontFileFindNamesInScalableDir(FontTablePtr table, FontNamePtr pat, int max, + FontNamesPtr names, FontScalablePtr vals, + int alias_behavior, int *newmax) { int i, start, @@ -487,11 +540,11 @@ FontFileFindNamesInScalableDir(table, pat, max, names, vals, cap = ~0; /* Calling code will have to see if true */ else cap = 0; - if (((vs & PIXELSIZE_MASK) == PIXELSIZE_ARRAY || + if ((((vs & PIXELSIZE_MASK) == PIXELSIZE_ARRAY || (vs & POINTSIZE_MASK) == POINTSIZE_ARRAY) && - !(cap & CAP_MATRIX) || - (vs & CHARSUBSET_SPECIFIED) && - !(cap & CAP_CHARSUBSETTING)) + !(cap & CAP_MATRIX)) || + ((vs & CHARSUBSET_SPECIFIED) && + !(cap & CAP_CHARSUBSETTING))) continue; } @@ -534,11 +587,8 @@ FontFileFindNamesInScalableDir(table, pat, max, names, vals, } int -FontFileFindNamesInDir(table, pat, max, names) - FontTablePtr table; - FontNamePtr pat; - int max; - FontNamesPtr names; +FontFileFindNamesInDir(FontTablePtr table, FontNamePtr pat, + int max, FontNamesPtr names) { return FontFileFindNamesInScalableDir(table, pat, max, names, (FontScalablePtr)0, @@ -546,10 +596,7 @@ FontFileFindNamesInDir(table, pat, max, names) } Bool -FontFileMatchName(name, length, pat) - char *name; - int length; - FontNamePtr pat; +FontFileMatchName(char *name, int length, FontNamePtr pat) { /* Perform a fontfile-type name match on a single name */ FontTableRec table; @@ -573,17 +620,14 @@ FontFileMatchName(name, length, pat) */ Bool -FontFileAddFontFile (dir, fontName, fileName) - FontDirectoryPtr dir; - char *fontName; - char *fileName; +FontFileAddFontFile (FontDirectoryPtr dir, char *fontName, char *fileName) { FontEntryRec entry; FontScalableRec vals, zeroVals; FontRendererPtr renderer; FontEntryPtr existing; FontScalableExtraPtr extra; - FontEntryPtr bitmap, scalable; + FontEntryPtr bitmap = 0, scalable; Bool isscale; renderer = FontFileMatchRenderer (fileName); @@ -610,6 +654,28 @@ FontFileAddFontFile (dir, fontName, fileName) (vals.values_supplied & PIXELSIZE_MASK) != PIXELSIZE_ARRAY && (vals.values_supplied & POINTSIZE_MASK) != POINTSIZE_ARRAY && !(vals.values_supplied & ENHANCEMENT_SPECIFY_MASK); +#ifdef FONTDIRATTRIB +#define UNSCALED_ATTRIB "unscaled" + /* For scalable fonts, check if the "unscaled" attribute is present */ + if (isscale && dir->attributes && dir->attributes[0] == ':') { + char *ptr1 = dir->attributes + 1; + char *ptr2; + int length; + int uslength = strlen(UNSCALED_ATTRIB); + + do { + ptr2 = strchr(ptr1, ':'); + if (ptr2) + length = ptr2 - ptr1; + else + length = dir->attributes + strlen(dir->attributes) - ptr1; + if (length == uslength && !strncmp(ptr1, UNSCALED_ATTRIB, uslength)) + isscale = FALSE; + if (ptr2) + ptr1 = ptr2 + 1; + } while (ptr2); + } +#endif if (!isscale || (vals.values_supplied & SIZE_SPECIFY_MASK)) { /* If the fontname says it is nonScalable, make sure that the @@ -739,10 +805,7 @@ FontFileAddFontFile (dir, fontName, fileName) } Bool -FontFileAddFontAlias (dir, aliasName, fontName) - FontDirectoryPtr dir; - char *aliasName; - char *fontName; +FontFileAddFontAlias (FontDirectoryPtr dir, char *aliasName, char *fontName) { FontEntryRec entry; diff --git a/src/fontfile/fontfile.c b/src/fontfile/fontfile.c index 5230a15..1e39413 100644 --- a/src/fontfile/fontfile.c +++ b/src/fontfile/fontfile.c @@ -25,11 +25,12 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ +/* $XFree86: xc/lib/font/fontfile/fontfile.c,v 3.16 2002/05/31 18:45:50 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium */ -/* $NCDId: @(#)fontfile.c,v 1.6 1991/07/02 17:00:46 lemke Exp $ */ +/* $NCDXorg: @(#)fontfile.c,v 1.6 1991/07/02 17:00:46 lemke Exp $ */ #include "fntfilst.h" @@ -37,11 +38,23 @@ in this Software without prior written authorization from The Open Group. * Map FPE functions to renderer functions */ +static int FontFileOpenBitmapNCF (FontPathElementPtr fpe, FontPtr *pFont, + int flags, FontEntryPtr entry, + fsBitmapFormat format, + fsBitmapFormatMask fmask, + FontPtr non_cachable_font); + int -FontFileNameCheck (name) - char *name; +FontFileNameCheck (char *name) { #ifndef NCD +#ifdef __UNIXOS2__ + /* OS/2 uses D:/... as a path name for fonts, so accept this as a valid + * path if it starts with a letter and a colon + */ + if (isalpha(*name) && name[1]==':') + return TRUE; +#endif return *name == '/'; #else return ((strcmp(name, "built-ins") == 0) || (*name == '/')); @@ -49,8 +62,7 @@ FontFileNameCheck (name) } int -FontFileInitFPE (fpe) - FontPathElementPtr fpe; +FontFileInitFPE (FontPathElementPtr fpe) { int status; FontDirectoryPtr dir; @@ -71,12 +83,15 @@ FontFileInitFPE (fpe) /* ARGSUSED */ int -FontFileResetFPE (fpe) - FontPathElementPtr fpe; +FontFileResetFPE (FontPathElementPtr fpe) { FontDirectoryPtr dir; dir = (FontDirectoryPtr) fpe->private; + /* + * The reset must fail for bitmap fonts because they get cleared when + * the path is set. + */ if (FontFileDirectoryChanged (dir)) { /* can't do it, so tell the caller to close and re-open */ @@ -94,8 +109,7 @@ FontFileResetFPE (fpe) } int -FontFileFreeFPE (fpe) - FontPathElementPtr fpe; +FontFileFreeFPE (FontPathElementPtr fpe) { FontFileUnregisterBitmapSource (fpe); FontFileFreeDir ((FontDirectoryPtr) fpe->private); @@ -103,13 +117,9 @@ FontFileFreeFPE (fpe) } static int -transfer_values_to_alias(entryname, entrynamelength, resolvedname, - aliasName, vals) - char *entryname; - int entrynamelength; - char *resolvedname; - char **aliasName; - FontScalablePtr vals; +transfer_values_to_alias(char *entryname, int entrynamelength, + char *resolvedname, + char **aliasName, FontScalablePtr vals) { static char aliasname[MAXFONTNAMELEN]; int nameok = 1, len; @@ -117,6 +127,7 @@ transfer_values_to_alias(entryname, entrynamelength, resolvedname, *aliasName = resolvedname; if ((len = strlen(*aliasName)) <= MAXFONTNAMELEN && + (entrynamelength < MAXFONTNAMELEN) && FontFileCountDashes (*aliasName, len) == 14) { FontScalableRec tmpVals; @@ -158,7 +169,6 @@ transfer_values_to_alias(entryname, entrynamelength, resolvedname, gotchas */ if (FontFileCompleteXLFD(&tmpVals2, &tmpVals2)) { - double hypot(); tempmatrix[0] = matrix[0] * tmpVals2.point_matrix[0] + matrix[1] * tmpVals2.point_matrix[2]; @@ -219,19 +229,11 @@ transfer_values_to_alias(entryname, entrynamelength, resolvedname, /* ARGSUSED */ int -FontFileOpenFont (client, fpe, flags, name, namelen, format, fmask, - id, pFont, aliasName, non_cachable_font) - pointer client; - FontPathElementPtr fpe; - int flags; - char *name; - int namelen; - fsBitmapFormat format; - fsBitmapFormatMask fmask; - XID id; - FontPtr *pFont; - char **aliasName; - FontPtr non_cachable_font; +FontFileOpenFont (pointer client, FontPathElementPtr fpe, Mask flags, + char *name, int namelen, + fsBitmapFormat format, fsBitmapFormatMask fmask, + XID id, FontPtr *pFont, char **aliasName, + FontPtr non_cachable_font) { FontDirectoryPtr dir; char lowerName[MAXFONTNAMELEN]; @@ -461,9 +463,7 @@ FontFileOpenFont (client, fpe, flags, name, namelen, format, fmask, /* ARGSUSED */ void -FontFileCloseFont (fpe, pFont) - FontPathElementPtr fpe; - FontPtr pFont; +FontFileCloseFont (FontPathElementPtr fpe, FontPtr pFont) { FontEntryPtr entry; @@ -484,14 +484,11 @@ FontFileCloseFont (fpe, pFont) (*pFont->unload_font) (pFont); } -int -FontFileOpenBitmapNCF (fpe, pFont, flags, entry, format, fmask, - non_cachable_font) - FontPathElementPtr fpe; - int flags; - FontEntryPtr entry; - FontPtr *pFont; - FontPtr non_cachable_font; +static int +FontFileOpenBitmapNCF (FontPathElementPtr fpe, FontPtr *pFont, + int flags, FontEntryPtr entry, + fsBitmapFormat format, fsBitmapFormatMask fmask, + FontPtr non_cachable_font) { FontBitmapEntryPtr bitmap; char fileName[MAXFONTFILENAMELEN*2+1]; @@ -514,21 +511,17 @@ FontFileOpenBitmapNCF (fpe, pFont, flags, entry, format, fmask, } int -FontFileOpenBitmap (fpe, pFont, flags, entry, format, fmask) - FontPathElementPtr fpe; - int flags; - FontEntryPtr entry; - FontPtr *pFont; +FontFileOpenBitmap (FontPathElementPtr fpe, FontPtr *pFont, + int flags, FontEntryPtr entry, + fsBitmapFormat format, fsBitmapFormatMask fmask) { return FontFileOpenBitmapNCF (fpe, pFont, flags, entry, format, fmask, (FontPtr)0); } -int -FontFileGetInfoBitmap (fpe, pFontInfo, entry) - FontPathElementPtr fpe; - FontInfoPtr pFontInfo; - FontEntryPtr entry; +static int +FontFileGetInfoBitmap (FontPathElementPtr fpe, FontInfoPtr pFontInfo, + FontEntryPtr entry) { FontBitmapEntryPtr bitmap; char fileName[MAXFONTFILENAMELEN*2+1]; @@ -544,16 +537,10 @@ FontFileGetInfoBitmap (fpe, pFontInfo, entry) } static void -_FontFileAddScalableNames(names, scaleNames, nameptr, zeroChars, vals, ranges, - nranges, max) - FontNamesPtr names; - FontNamesPtr scaleNames; - FontNamePtr nameptr; - char *zeroChars; - FontScalablePtr vals; - fsRange *ranges; - int nranges; - int *max; +_FontFileAddScalableNames(FontNamesPtr names, FontNamesPtr scaleNames, + FontNamePtr nameptr, char *zeroChars, + FontScalablePtr vals, fsRange *ranges, + int nranges, int *max) { int i; FontScalableRec zeroVals, tmpVals; @@ -667,14 +654,9 @@ _FontFileAddScalableNames(names, scaleNames, nameptr, zeroChars, vals, ranges, /* ARGSUSED */ static int -_FontFileListFonts (client, fpe, pat, len, max, names, mark_aliases) - pointer client; - FontPathElementPtr fpe; - char *pat; - int len; - int max; - FontNamesPtr names; - int mark_aliases; +_FontFileListFonts (pointer client, FontPathElementPtr fpe, + char *pat, int len, int max, FontNamesPtr names, + int mark_aliases) { FontDirectoryPtr dir; char lowerChars[MAXFONTNAMELEN], zeroChars[MAXFONTNAMELEN]; @@ -779,25 +761,16 @@ typedef struct _LFWIData { } LFWIDataRec, *LFWIDataPtr; int -FontFileListFonts (client, fpe, pat, len, max, names) - pointer client; - FontPathElementPtr fpe; - char *pat; - int len; - int max; - FontNamesPtr names; +FontFileListFonts (pointer client, FontPathElementPtr fpe, char *pat, + int len, int max, FontNamesPtr names) { return _FontFileListFonts (client, fpe, pat, len, max, names, 0); } int -FontFileStartListFontsWithInfo(client, fpe, pat, len, max, privatep) - pointer client; - FontPathElementPtr fpe; - char *pat; - int len; - int max; - pointer *privatep; +FontFileStartListFontsWithInfo(pointer client, FontPathElementPtr fpe, + char *pat, int len, int max, + pointer *privatep) { LFWIDataPtr data; int ret; @@ -825,12 +798,9 @@ FontFileStartListFontsWithInfo(client, fpe, pat, len, max, privatep) /* ARGSUSED */ static int -FontFileListOneFontWithInfo (client, fpe, namep, namelenp, pFontInfo) - pointer client; - FontPathElementPtr fpe; - char **namep; - int *namelenp; - FontInfoPtr *pFontInfo; +FontFileListOneFontWithInfo (pointer client, FontPathElementPtr fpe, + char **namep, int *namelenp, + FontInfoPtr *pFontInfo) { FontDirectoryPtr dir; char lowerName[MAXFONTNAMELEN]; @@ -979,15 +949,10 @@ FontFileListOneFontWithInfo (client, fpe, namep, namelenp, pFontInfo) } int -FontFileListNextFontWithInfo(client, fpe, namep, namelenp, pFontInfo, - numFonts, private) - pointer client; - FontPathElementPtr fpe; - char **namep; - int *namelenp; - FontInfoPtr *pFontInfo; - int *numFonts; - pointer private; +FontFileListNextFontWithInfo(pointer client, FontPathElementPtr fpe, + char **namep, int *namelenp, + FontInfoPtr *pFontInfo, + int *numFonts, pointer private) { LFWIDataPtr data = (LFWIDataPtr) private; int ret; @@ -1013,13 +978,9 @@ FontFileListNextFontWithInfo(client, fpe, namep, namelenp, pFontInfo, } int -FontFileStartListFontsAndAliases(client, fpe, pat, len, max, privatep) - pointer client; - FontPathElementPtr fpe; - char *pat; - int len; - int max; - pointer *privatep; +FontFileStartListFontsAndAliases(pointer client, FontPathElementPtr fpe, + char *pat, int len, int max, + pointer *privatep) { LFWIDataPtr data; int ret; @@ -1046,15 +1007,9 @@ FontFileStartListFontsAndAliases(client, fpe, pat, len, max, privatep) } int -FontFileListNextFontOrAlias(client, fpe, namep, namelenp, resolvedp, - resolvedlenp, private) - pointer client; - FontPathElementPtr fpe; - char **namep; - int *namelenp; - char **resolvedp; - int *resolvedlenp; - pointer private; +FontFileListNextFontOrAlias(pointer client, FontPathElementPtr fpe, + char **namep, int *namelenp, char **resolvedp, + int *resolvedlenp, pointer private) { LFWIDataPtr data = (LFWIDataPtr) private; int ret; @@ -1094,12 +1049,11 @@ FontFileListNextFontOrAlias(client, fpe, namep, namelenp, resolvedp, } -extern void FontFileEmptyBitmapSource(); -typedef int (*IntFunc) (); +typedef int (*IntFunc) (void); static int font_file_type; void -FontFileRegisterLocalFpeFunctions () +FontFileRegisterLocalFpeFunctions (void) { font_file_type = RegisterFPEFunctions(FontFileNameCheck, FontFileInitFPE, @@ -1110,9 +1064,9 @@ FontFileRegisterLocalFpeFunctions () FontFileListFonts, FontFileStartListFontsWithInfo, FontFileListNextFontWithInfo, - (IntFunc) 0, - (IntFunc) 0, - (IntFunc) 0, + NULL, + NULL, + NULL, FontFileStartListFontsAndAliases, FontFileListNextFontOrAlias, FontFileEmptyBitmapSource); diff --git a/src/fontfile/fontscale.c b/src/fontfile/fontscale.c index 56ed691..8fb63e4 100644 --- a/src/fontfile/fontscale.c +++ b/src/fontfile/fontscale.c @@ -25,6 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ +/* $XFree86: xc/lib/font/fontfile/fontscale.c,v 3.10 2001/12/14 19:56:52 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium @@ -40,11 +41,8 @@ in this Software without prior written authorization from The Open Group. #endif Bool -FontFileAddScaledInstance (entry, vals, pFont, bitmapName) - FontEntryPtr entry; - FontScalablePtr vals; - FontPtr pFont; - char *bitmapName; +FontFileAddScaledInstance (FontEntryPtr entry, FontScalablePtr vals, + FontPtr pFont, char *bitmapName) { FontScalableEntryPtr scalable; FontScalableExtraPtr extra; @@ -75,8 +73,7 @@ FontFileAddScaledInstance (entry, vals, pFont, bitmapName) /* Must call this after the directory is sorted */ void -FontFileSwitchStringsToBitmapPointers (dir) - FontDirectoryPtr dir; +FontFileSwitchStringsToBitmapPointers (FontDirectoryPtr dir) { int s; int b; @@ -100,9 +97,7 @@ FontFileSwitchStringsToBitmapPointers (dir) } void -FontFileRemoveScaledInstance (entry, pFont) - FontEntryPtr entry; - FontPtr pFont; +FontFileRemoveScaledInstance (FontEntryPtr entry, FontPtr pFont) { FontScalableEntryPtr scalable; FontScalableExtraPtr extra; @@ -124,9 +119,7 @@ FontFileRemoveScaledInstance (entry, pFont) } Bool -FontFileCompleteXLFD (vals, def) - register FontScalablePtr vals; - FontScalablePtr def; +FontFileCompleteXLFD (FontScalablePtr vals, FontScalablePtr def) { FontResolutionPtr res; int num_res; @@ -247,7 +240,7 @@ FontFileCompleteXLFD (vals, def) pixel_setsize_adjustment = (double)vals->x / (double)vals->y; vals->pixel_matrix[0] *= pixel_setsize_adjustment; - vals->values_supplied = vals->values_supplied & ~PIXELSIZE_MASK | + vals->values_supplied = (vals->values_supplied & ~PIXELSIZE_MASK) | PIXELSIZE_SCALAR_NORMALIZED; } @@ -349,8 +342,7 @@ FontFileCompleteXLFD (vals, def) } static Bool -MatchScalable (a, b) - FontScalablePtr a, b; +MatchScalable (FontScalablePtr a, FontScalablePtr b) { int i; @@ -370,15 +362,15 @@ MatchScalable (a, b) if (!(a->x == b->x && a->y == b->y && - (a->width == b->width || a->width == 0 || b->width == 0) && + (a->width == b->width || a->width == 0 || b->width == 0 || b->width == -1) && (!(b->values_supplied & PIXELSIZE_MASK) || - (a->values_supplied & PIXELSIZE_MASK) == - (b->values_supplied & PIXELSIZE_MASK) && - EQUAL(a->pixel_matrix, b->pixel_matrix)) && + ((a->values_supplied & PIXELSIZE_MASK) == + (b->values_supplied & PIXELSIZE_MASK) && + EQUAL(a->pixel_matrix, b->pixel_matrix))) && (!(b->values_supplied & POINTSIZE_MASK) || - (a->values_supplied & POINTSIZE_MASK) == - (b->values_supplied & POINTSIZE_MASK) && - EQUAL(a->point_matrix, b->point_matrix)) && + ((a->values_supplied & POINTSIZE_MASK) == + (b->values_supplied & POINTSIZE_MASK) && + EQUAL(a->point_matrix, b->point_matrix))) && (a->nranges == 0 || a->nranges == b->nranges))) return FALSE; @@ -393,9 +385,8 @@ MatchScalable (a, b) } FontScaledPtr -FontFileFindScaledInstance (entry, vals, noSpecificSize) - FontEntryPtr entry; - FontScalablePtr vals; +FontFileFindScaledInstance (FontEntryPtr entry, FontScalablePtr vals, + int noSpecificSize) { FontScalableEntryPtr scalable; FontScalableExtraPtr extra; diff --git a/src/fontfile/gunzip.c b/src/fontfile/gunzip.c index a303f21..21894d0 100644 --- a/src/fontfile/gunzip.c +++ b/src/fontfile/gunzip.c @@ -2,6 +2,7 @@ /* lib/font/fontfile/gunzip.c written by Mark Eichin <eichin@kitten.gen.ma.us> September 1996. intended for inclusion in X11 public releases. */ +/* $XFree86: xc/lib/font/fontfile/gunzip.c,v 1.5 2001/01/17 19:43:30 dawes Exp $ */ #include "fontmisc.h" #include <bufio.h> @@ -15,14 +16,13 @@ typedef struct _xzip_buf { BufFilePtr f; } xzip_buf; -static int BufZipFileSkip(); /* f, count */ -static int BufZipFileFill(); /* read: f; write: char, f */ -static int BufZipFileClose(); /* f, flag */ -static int BufCheckZipHeader(); /* f */ +static int BufZipFileClose ( BufFilePtr f, int flag ); +static int BufZipFileFill ( BufFilePtr f ); +static int BufZipFileSkip ( BufFilePtr f, int c ); +static int BufCheckZipHeader ( BufFilePtr f ); BufFilePtr -BufFilePushZIP (f) - BufFilePtr f; +BufFilePushZIP (BufFilePtr f) { xzip_buf *x; @@ -58,15 +58,15 @@ BufFilePushZIP (f) return 0; } - return BufFileCreate(x, + return BufFileCreate((char *)x, BufZipFileFill, + 0, BufZipFileSkip, BufZipFileClose); } -static int BufZipFileClose(f, flag) - BufFilePtr f; - int flag; +static int +BufZipFileClose(BufFilePtr f, int flag) { xzip_buf *x = (xzip_buf *)f->private; inflateEnd (&(x->z)); @@ -84,8 +84,8 @@ static int BufZipFileClose(f, flag) Z_STREAM_END, we then have 4bytes CRC and 4bytes length... gzio.c:gzread shows most of the mechanism. */ -static int BufZipFileFill (f) - BufFilePtr f; +static int +BufZipFileFill (BufFilePtr f) { xzip_buf *x = (xzip_buf *)f->private; @@ -102,7 +102,8 @@ static int BufZipFileFill (f) case Z_STREAM_END: case Z_DATA_ERROR: case Z_ERRNO: - return BUFFILEEOF; + f->left = 0; + return BUFFILEEOF; default: return BUFFILEEOF; } @@ -148,9 +149,8 @@ static int BufZipFileFill (f) } /* there should be a BufCommonSkip... */ -static int BufZipFileSkip (f, c) - BufFilePtr f; - int c; +static int +BufZipFileSkip (BufFilePtr f, int c) { /* BufFileRawSkip returns the count unchanged. BufCompressedSkip returns 0. @@ -191,8 +191,8 @@ static int BufZipFileSkip (f, c) #define RESERVED 0xE0 /* bits 5..7: reserved */ #define GET(f) do {c = BufFileGet(f); if (c == BUFFILEEOF) return c;} while(0) -static int BufCheckZipHeader(f) - BufFilePtr f; +static int +BufCheckZipHeader(BufFilePtr f) { int c, flags; GET(f); if (c != 0x1f) return 1; /* magic 1 */ diff --git a/src/fontfile/printerfont.c b/src/fontfile/printerfont.c index 5632aa5..6759e91 100644 --- a/src/fontfile/printerfont.c +++ b/src/fontfile/printerfont.c @@ -25,11 +25,12 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ +/* $XFree86: xc/lib/font/fontfile/printerfont.c,v 1.5 2001/12/14 19:56:52 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium */ -/* $NCDId: @(#)fontfile.c,v 1.6 1991/07/02 17:00:46 lemke Exp $ */ +/* $NCDXorg: @(#)fontfile.c,v 1.6 1991/07/02 17:00:46 lemke Exp $ */ #include "fntfilst.h" @@ -37,10 +38,6 @@ in this Software without prior written authorization from The Open Group. * Map FPE functions to renderer functions */ -extern int FontFileInitFPE(); -extern int FontFileResetFPE(); -extern int FontFileFreeFPE(); -extern void FontFileCloseFont(); #define PRINTERPATHPREFIX "PRINTER:" /* STUB @@ -50,9 +47,8 @@ FontPathElementPtr fpe; { return 1; } */ -int -PrinterFontNameCheck (name) - char *name; +static int +PrinterFontNameCheck (char *name) { if (strncmp(name,PRINTERPATHPREFIX,strlen(PRINTERPATHPREFIX)) != 0) return 0; @@ -64,9 +60,8 @@ PrinterFontNameCheck (name) #endif } -int -PrinterFontInitFPE (fpe) - FontPathElementPtr fpe; +static int +PrinterFontInitFPE (FontPathElementPtr fpe) { int status; FontDirectoryPtr dir; @@ -91,20 +86,12 @@ PrinterFontInitFPE (fpe) * it that allows us to access the printer fonts */ -int -PrinterFontOpenFont (client, fpe, flags, name, namelen, format, fmask, - id, pFont, aliasName, non_cachable_font) - pointer client; - FontPathElementPtr fpe; - int flags; - char *name; - int namelen; - fsBitmapFormat format; - fsBitmapFormatMask fmask; - XID id; - FontPtr *pFont; - char **aliasName; - FontPtr non_cachable_font; +static int +PrinterFontOpenFont (pointer client, FontPathElementPtr fpe, Mask flags, + char *name, int namelen, + fsBitmapFormat format, fsBitmapFormatMask fmask, + XID id, FontPtr *pFont, char **aliasName, + FontPtr non_cachable_font) { if (XpClientIsPrintClient(client,fpe)) return (FontFileOpenFont (client, fpe, flags, name, namelen, format, @@ -112,28 +99,19 @@ PrinterFontOpenFont (client, fpe, flags, name, namelen, format, fmask, return BadFontName; } -int -PrinterFontListFonts (client, fpe, pat, len, max, names) - pointer client; - FontPathElementPtr fpe; - char *pat; - int len; - int max; - FontNamesPtr names; +static int +PrinterFontListFonts (pointer client, FontPathElementPtr fpe, char *pat, + int len, int max, FontNamesPtr names) { if (XpClientIsPrintClient(client,fpe)) return FontFileListFonts (client, fpe, pat, len, max, names); return BadFontName; } -int -PrinterFontStartListFontsWithInfo(client, fpe, pat, len, max, privatep) - pointer client; - FontPathElementPtr fpe; - char *pat; - int len; - int max; - pointer *privatep; +static int +PrinterFontStartListFontsWithInfo(pointer client, FontPathElementPtr fpe, + char *pat, int len, int max, + pointer *privatep) { if (XpClientIsPrintClient(client,fpe)) return FontFileStartListFontsWithInfo(client, fpe, pat, len, @@ -141,16 +119,11 @@ PrinterFontStartListFontsWithInfo(client, fpe, pat, len, max, privatep) return BadFontName; } -int -PrinterFontListNextFontWithInfo(client, fpe, namep, namelenp, pFontInfo, - numFonts, private) - pointer client; - FontPathElementPtr fpe; - char **namep; - int *namelenp; - FontInfoPtr *pFontInfo; - int *numFonts; - pointer private; +static int +PrinterFontListNextFontWithInfo(pointer client, FontPathElementPtr fpe, + char **namep, int *namelenp, + FontInfoPtr *pFontInfo, + int *numFonts, pointer private) { if (XpClientIsPrintClient(client,fpe)) return FontFileListNextFontWithInfo(client, fpe, namep, namelenp, @@ -158,14 +131,10 @@ PrinterFontListNextFontWithInfo(client, fpe, namep, namelenp, pFontInfo, return BadFontName; } -int -PrinterFontStartListFontsAndAliases(client, fpe, pat, len, max, privatep) - pointer client; - FontPathElementPtr fpe; - char *pat; - int len; - int max; - pointer *privatep; +static int +PrinterFontStartListFontsAndAliases(pointer client, FontPathElementPtr fpe, + char *pat, int len, int max, + pointer *privatep) { if (XpClientIsPrintClient(client,fpe)) return FontFileStartListFontsAndAliases(client, fpe, pat, len, @@ -173,16 +142,11 @@ PrinterFontStartListFontsAndAliases(client, fpe, pat, len, max, privatep) return BadFontName; } -int -PrinterFontListNextFontOrAlias(client, fpe, namep, namelenp, resolvedp, - resolvedlenp, private) - pointer client; - FontPathElementPtr fpe; - char **namep; - int *namelenp; - char **resolvedp; - int *resolvedlenp; - pointer private; +static int +PrinterFontListNextFontOrAlias(pointer client, FontPathElementPtr fpe, + char **namep, int *namelenp, + char **resolvedp, int *resolvedlenp, + pointer private) { if (XpClientIsPrintClient(client,fpe)) return FontFileListNextFontOrAlias(client, fpe, namep, namelenp, @@ -190,12 +154,11 @@ PrinterFontListNextFontOrAlias(client, fpe, namep, namelenp, resolvedp, return BadFontName; } -extern void FontFileEmptyBitmapSource(); -typedef int (*IntFunc) (); +typedef int (*IntFunc) (void); static int printer_font_type; void -PrinterFontRegisterFpeFunctions () +PrinterFontRegisterFpeFunctions (void) { /* what is the use of printer font type? */ printer_font_type = RegisterFPEFunctions(PrinterFontNameCheck, @@ -207,9 +170,9 @@ PrinterFontRegisterFpeFunctions () PrinterFontListFonts, PrinterFontStartListFontsWithInfo, PrinterFontListNextFontWithInfo, - (IntFunc) 0, - (IntFunc) 0, - (IntFunc) 0, + NULL, + NULL, + NULL, PrinterFontStartListFontsAndAliases, PrinterFontListNextFontOrAlias, FontFileEmptyBitmapSource); diff --git a/src/fontfile/register.c b/src/fontfile/register.c index 8379f85..385d165 100644 --- a/src/fontfile/register.c +++ b/src/fontfile/register.c @@ -25,6 +25,7 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ +/* $XFree86: xc/lib/font/fontfile/register.c,v 1.15 2001/12/14 19:56:52 dawes Exp $ */ /* * This is in a separate source file so that small programs @@ -32,19 +33,55 @@ in this Software without prior written authorization from The Open Group. * end up dragging in code from all the renderers, which is not small. */ +#include "fontmisc.h" +#include "fntfilst.h" +#include "bitmap.h" + +#ifdef LOADABLEFONTS +#include "fontmod.h" +#endif + void -FontFileRegisterFpeFunctions() +FontFileRegisterFpeFunctions(void) { +#ifndef LOADABLEFONTS BitmapRegisterFontFileFunctions (); #ifndef LOWMEMFTPT #ifndef CRAY +#ifdef BUILD_SPEEDO SpeedoRegisterFontFileFunctions (); +#endif +#ifdef BUILD_TYPE1 Type1RegisterFontFileFunctions(); #endif +#endif +#ifdef BUILD_CID + CIDRegisterFontFileFunctions(); +#endif +#ifdef BUILD_FREETYPE + FreeTypeRegisterFontFileFunctions(); +#endif +#ifdef BUILD_XTRUETYPE + XTrueTypeRegisterFontFileFunctions(); +#endif #endif /* ifndef LOWMEMFTPT */ +#else + { + int i; + + if (FontModuleList) { + for (i = 0; FontModuleList[i].name; i++) { + if (FontModuleList[i].initFunc) + FontModuleList[i].initFunc(); + } + } + } +#endif + FontFileRegisterLocalFpeFunctions (); } + diff --git a/src/fontfile/renderers.c b/src/fontfile/renderers.c index c997f27..2db871d 100644 --- a/src/fontfile/renderers.c +++ b/src/fontfile/renderers.c @@ -25,39 +25,76 @@ used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from The Open Group. */ +/* $XFree86: xc/lib/font/fontfile/renderers.c,v 1.7 2002/12/09 17:30:00 dawes Exp $ */ /* * Author: Keith Packard, MIT X Consortium */ #include "fntfilst.h" +extern void ErrorF(const char *f, ...); static FontRenderersRec renderers; +/* + * XXX Maybe should allow unregistering renders. For now, just clear the + * list at each new generation. + */ +extern unsigned long serverGeneration; +static unsigned long rendererGeneration = 0; + +Bool +FontFileRegisterRenderer (FontRendererPtr renderer) +{ + return FontFilePriorityRegisterRenderer(renderer, 0); +} + Bool -FontFileRegisterRenderer (renderer) - FontRendererPtr renderer; +FontFilePriorityRegisterRenderer (FontRendererPtr renderer, int priority) { int i; - FontRendererPtr *new; + struct _FontRenderersElement *new; - for (i = 0; i < renderers.number; i++) - if (!strcmp (renderers.renderers[i]->fileSuffix, renderer->fileSuffix)) - return TRUE; - i = renderers.number + 1; - new = (FontRendererPtr *) xrealloc (renderers.renderers, sizeof *new * i); - if (!new) - return FALSE; - renderer->number = i - 1; - renderers.renderers = new; - renderers.renderers[i - 1] = renderer; - renderers.number = i; + if (rendererGeneration != serverGeneration) { + rendererGeneration = serverGeneration; + renderers.number = 0; + if (!renderers.renderers) + xfree(renderers.renderers); + renderers.renderers = NULL; + } + + for (i = 0; i < renderers.number; i++) { + if (!strcmp (renderers.renderers[i].renderer->fileSuffix, + renderer->fileSuffix)) { + if(renderers.renderers[i].priority >= priority) { + if(renderers.renderers[i].priority == priority) { + if (rendererGeneration == 1) + ErrorF("Warning: font renderer for \"%s\" " + "already registered at priority %d\n", + renderer->fileSuffix, priority); + } + return TRUE; + } else { + break; + } + } + } + + if(i >= renderers.number) { + new = xrealloc (renderers.renderers, sizeof(*new) * (i + 1)); + if (!new) + return FALSE; + renderers.renderers = new; + renderers.number = i + 1; + } + renderer->number = i; + renderers.renderers[i].renderer = renderer; + renderers.renderers[i].priority = priority; return TRUE; } FontRendererPtr -FontFileMatchRenderer (fileName) - char *fileName; +FontFileMatchRenderer (char *fileName) { int i; int fileLen; @@ -66,7 +103,7 @@ FontFileMatchRenderer (fileName) fileLen = strlen (fileName); for (i = 0; i < renderers.number; i++) { - r = renderers.renderers[i]; + r = renderers.renderers[i].renderer; if (fileLen >= r->fileSuffixLen && !strcmp (fileName + fileLen - r->fileSuffixLen, r->fileSuffix)) { |