1
/* Copyright (C) 2001-2006 Artifex Software, Inc.
4
This software is provided AS-IS with no warranty, either express or
7
This software is distributed under license and may not be copied, modified
8
or distributed except as expressly authorized under the terms of that
9
license. Refer to licensing information at http://www.artifex.com/
10
or contact Artifex Software, Inc., 7 Mt. Lassen Drive - Suite A-134,
11
San Rafael, CA 94903, U.S.A., +1(415)492-9861, for further information.
14
/* $Id: gsfont.h 8022 2007-06-05 22:23:38Z giles $ */
15
/* Generic font and font cache interface */
17
#ifndef gsfont_INCLUDED
18
# define gsfont_INCLUDED
20
#ifndef gs_matrix_DEFINED
21
# define gs_matrix_DEFINED
22
typedef struct gs_matrix_s gs_matrix;
25
/* A 'font directory' object (to avoid making fonts global). */
26
/* 'directory' is something of a misnomer: this structure */
27
/* just keeps track of the defined fonts, and the scaled font and */
28
/* rendered character caches. */
29
#ifndef gs_font_dir_DEFINED
30
# define gs_font_dir_DEFINED
31
typedef struct gs_font_dir_s gs_font_dir;
35
#ifndef gs_font_DEFINED
36
# define gs_font_DEFINED
37
typedef struct gs_font_s gs_font;
41
/* These procedures return 0 if they fail. */
42
gs_font_dir *gs_font_dir_alloc2(gs_memory_t * struct_mem,
43
gs_memory_t * bits_mem);
44
gs_font_dir *gs_font_dir_alloc2_limits(gs_memory_t * struct_mem,
45
gs_memory_t * bits_mem,
46
uint smax, uint bmax, uint mmax,
47
uint cmax, uint upper);
49
/* Backward compatibility */
50
#define gs_font_dir_alloc(mem) gs_font_dir_alloc2(mem, mem)
51
#define gs_font_dir_alloc_limits(mem, smax, bmax, mmax, cmax, upper)\
52
gs_font_dir_alloc2_limits(mem, mem, smax, bmax, mmax, cmax, upper)
54
/* Font manipulations */
55
/* Use gs_definefont only with original (unscaled) fonts! */
56
int gs_definefont(gs_font_dir *, gs_font *);
58
/* Find a sililar registered font of same type. */
59
int gs_font_find_similar(const gs_font_dir * pdir, const gs_font **ppfont,
60
int (*similar)(const gs_font *, const gs_font *));
62
/* gs_scalefont and gs_makefont return 0 if the scaled font */
63
/* was already in the cache, 1 if a new font was created. */
64
int gs_scalefont(gs_font_dir *, const gs_font *, floatp, gs_font **);
65
int gs_makefont(gs_font_dir *, const gs_font *, const gs_matrix *, gs_font **);
66
int gs_setfont(gs_state *, gs_font *);
67
gs_font *gs_currentfont(const gs_state *);
68
gs_font *gs_rootfont(const gs_state *);
69
void gs_set_currentfont(gs_state *, gs_font *);
70
int gs_purge_font(gs_font *);
71
/* Locate a gs_font by gs_id. */
72
gs_font *gs_find_font_by_id(gs_font_dir *pdir, gs_id id, gs_matrix *FontMatrix);
74
/* Font cache parameter operations */
75
void gs_cachestatus(const gs_font_dir *, uint[7]);
77
#define gs_setcachelimit(pdir,limit) gs_setcacheupper(pdir,limit)
78
uint gs_currentcachesize(const gs_font_dir *);
79
int gs_setcachesize(gs_font_dir *, uint);
80
uint gs_currentcachelower(const gs_font_dir *);
81
int gs_setcachelower(gs_font_dir *, uint);
82
uint gs_currentcacheupper(const gs_font_dir *);
83
int gs_setcacheupper(gs_font_dir *, uint);
84
uint gs_currentaligntopixels(const gs_font_dir *);
85
int gs_setaligntopixels(gs_font_dir *, uint);
86
uint gs_currentgridfittt(const gs_font_dir *);
87
int gs_setgridfittt(gs_font_dir *, uint);
89
#endif /* gsfont_INCLUDED */