1/****************************************************************************
2 *
3 * t1load.h
4 *
5 * Type 1 font loader (specification).
6 *
7 * Copyright (C) 1996-2019 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 <ft2build.h>
24#include FT_INTERNAL_STREAM_H
25#include FT_INTERNAL_POSTSCRIPT_AUX_H
26#include FT_MULTIPLE_MASTERS_H
27
28#include "t1parse.h"
29
30
31FT_BEGIN_HEADER
32
33
34 typedef struct T1_Loader_
35 {
36 T1_ParserRec parser; /* parser used to read the stream */
37
38 FT_Int num_chars; /* number of characters in encoding */
39 PS_TableRec encoding_table; /* PS_Table used to store the */
40 /* encoding character names */
41
42 FT_Int num_glyphs;
43 PS_TableRec glyph_names;
44 PS_TableRec charstrings;
45 PS_TableRec swap_table; /* For moving .notdef glyph to index 0. */
46
47 FT_Int num_subrs;
48 PS_TableRec subrs;
49 FT_Hash subrs_hash;
50 FT_Bool fontdata;
51
52 FT_UInt keywords_encountered; /* T1_LOADER_ENCOUNTERED_XXX */
53
54 } T1_LoaderRec, *T1_Loader;
55
56
57 /* treatment of some keywords differs depending on whether */
58 /* they precede or follow certain other keywords */
59
60#define T1_PRIVATE ( 1 << 0 )
61#define T1_FONTDIR_AFTER_PRIVATE ( 1 << 1 )
62
63
64 FT_LOCAL( FT_Error )
65 T1_Open_Face( T1_Face face );
66
67#ifndef T1_CONFIG_OPTION_NO_MM_SUPPORT
68
69 FT_LOCAL( FT_Error )
70 T1_Get_Multi_Master( T1_Face face,
71 FT_Multi_Master* master );
72
73 FT_LOCAL( FT_Error )
74 T1_Get_MM_Var( T1_Face face,
75 FT_MM_Var* *master );
76
77 FT_LOCAL( FT_Error )
78 T1_Set_MM_Blend( T1_Face face,
79 FT_UInt num_coords,
80 FT_Fixed* coords );
81
82 FT_LOCAL( FT_Error )
83 T1_Get_MM_Blend( T1_Face face,
84 FT_UInt num_coords,
85 FT_Fixed* coords );
86
87 FT_LOCAL( FT_Error )
88 T1_Set_MM_Design( T1_Face face,
89 FT_UInt num_coords,
90 FT_Long* coords );
91
92 FT_LOCAL( FT_Error )
93 T1_Reset_MM_Blend( T1_Face face,
94 FT_UInt instance_index );
95
96 FT_LOCAL( FT_Error )
97 T1_Get_Var_Design( T1_Face face,
98 FT_UInt num_coords,
99 FT_Fixed* coords );
100
101 FT_LOCAL( FT_Error )
102 T1_Set_Var_Design( T1_Face face,
103 FT_UInt num_coords,
104 FT_Fixed* coords );
105
106 FT_LOCAL( void )
107 T1_Done_Blend( T1_Face face );
108
109 FT_LOCAL( FT_Error )
110 T1_Set_MM_WeightVector( T1_Face face,
111 FT_UInt len,
112 FT_Fixed* weightvector );
113
114 FT_LOCAL( FT_Error )
115 T1_Get_MM_WeightVector( T1_Face face,
116 FT_UInt* len,
117 FT_Fixed* weightvector );
118
119#endif /* !T1_CONFIG_OPTION_NO_MM_SUPPORT */
120
121
122FT_END_HEADER
123
124#endif /* T1LOAD_H_ */
125
126
127/* END */
128