1/****************************************************************************
2 *
3 * t1load.h
4 *
5 * Type 1 font loader (specification).
6 *
7 * Copyright (C) 1996-2023 by
8 * David Turner, Robert Wilhelm, and Werner Lemberg.
9 *
10 * This file is part of the FreeType project, and may only be used,
11 * modified, and distributed under the terms of the FreeType project
12 * license, LICENSE.TXT. By continuing to use, modify, or distribute
13 * this file you indicate that you have read the license and
14 * understand and accept it fully.
15 *
16 */
17
18
19#ifndef T1LOAD_H_
20#define T1LOAD_H_
21
22
23#include <freetype/internal/ftstream.h>
24#include <freetype/internal/psaux.h>
25#include <freetype/ftmm.h>
26
27#include "t1parse.h"
28
29
30FT_BEGIN_HEADER
31
32
33 typedef struct T1_Loader_
34 {
35 T1_ParserRec parser; /* parser used to read the stream */
36
37 FT_Int num_chars; /* number of characters in encoding */
38 PS_TableRec encoding_table; /* PS_Table used to store the */
39 /* encoding character names */
40
41 FT_Int num_glyphs;
42 PS_TableRec glyph_names;
43 PS_TableRec charstrings;
44 PS_TableRec swap_table; /* For moving .notdef glyph to index 0. */
45
46 FT_Int num_subrs;
47 PS_TableRec subrs;
48 FT_Hash subrs_hash;
49 FT_Bool fontdata;
50
51 FT_UInt keywords_encountered; /* T1_LOADER_ENCOUNTERED_XXX */
52
53 } T1_LoaderRec, *T1_Loader;
54
55
56 /* treatment of some keywords differs depending on whether */
57 /* they precede or follow certain other keywords */
58
59#define T1_PRIVATE ( 1 << 0 )
60#define T1_FONTDIR_AFTER_PRIVATE ( 1 << 1 )
61
62
63 FT_LOCAL( FT_Error )
64 T1_Open_Face( T1_Face face );
65
66#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
67
68 FT_LOCAL( FT_Error )
69 T1_Get_Multi_Master( FT_Face face,
70 FT_Multi_Master* master );
71
72 FT_LOCAL( FT_Error )
73 T1_Get_MM_Var( FT_Face face,
74 FT_MM_Var* *master );
75
76 FT_LOCAL( FT_Error )
77 T1_Set_MM_Blend( FT_Face face,
78 FT_UInt num_coords,
79 FT_Fixed* coords );
80
81 FT_LOCAL( FT_Error )
82 T1_Get_MM_Blend( FT_Face face,
83 FT_UInt num_coords,
84 FT_Fixed* coords );
85
86 FT_LOCAL( FT_Error )
87 T1_Set_MM_Design( FT_Face face,
88 FT_UInt num_coords,
89 FT_Long* coords );
90
91 FT_LOCAL( FT_Error )
92 T1_Reset_MM_Blend( FT_Face face,
93 FT_UInt instance_index );
94
95 FT_LOCAL( FT_Error )
96 T1_Get_Var_Design( FT_Face face,
97 FT_UInt num_coords,
98 FT_Fixed* coords );
99
100 FT_LOCAL( FT_Error )
101 T1_Set_Var_Design( FT_Face face,
102 FT_UInt num_coords,
103 FT_Fixed* coords );
104
105 FT_LOCAL( void )
106 T1_Done_Blend( FT_Face face );
107
108 FT_LOCAL( FT_Error )
109 T1_Set_MM_WeightVector( FT_Face face,
110 FT_UInt len,
111 FT_Fixed* weightvector );
112
113 FT_LOCAL( FT_Error )
114 T1_Get_MM_WeightVector( FT_Face face,
115 FT_UInt* len,
116 FT_Fixed* weightvector );
117
118#endif /* !T1_CONFIG_OPTION_NO_MM_SUPPORT */
119
120
121FT_END_HEADER
122
123#endif /* T1LOAD_H_ */
124
125
126/* END */
127