1 /****************************************************************************
2  *
3  * t1load.h
4  *
5  *   Type 1 font loader (specification).
6  *
7  * Copyright (C) 1996-2020 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 
30 FT_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( T1_Face           face,
70                        FT_Multi_Master*  master );
71 
72   FT_LOCAL( FT_Error )
73   T1_Get_MM_Var( T1_Face      face,
74                  FT_MM_Var*  *master );
75 
76   FT_LOCAL( FT_Error )
77   T1_Set_MM_Blend( T1_Face    face,
78                    FT_UInt    num_coords,
79                    FT_Fixed*  coords );
80 
81   FT_LOCAL( FT_Error )
82   T1_Get_MM_Blend( T1_Face    face,
83                    FT_UInt    num_coords,
84                    FT_Fixed*  coords );
85 
86   FT_LOCAL( FT_Error )
87   T1_Set_MM_Design( T1_Face   face,
88                     FT_UInt   num_coords,
89                     FT_Long*  coords );
90 
91   FT_LOCAL( FT_Error )
92   T1_Reset_MM_Blend( T1_Face  face,
93                      FT_UInt  instance_index );
94 
95   FT_LOCAL( FT_Error )
96   T1_Get_Var_Design( T1_Face    face,
97                      FT_UInt    num_coords,
98                      FT_Fixed*  coords );
99 
100   FT_LOCAL( FT_Error )
101   T1_Set_Var_Design( T1_Face    face,
102                      FT_UInt    num_coords,
103                      FT_Fixed*  coords );
104 
105   FT_LOCAL( void )
106   T1_Done_Blend( T1_Face  face );
107 
108   FT_LOCAL( FT_Error )
109   T1_Set_MM_WeightVector( T1_Face    face,
110                           FT_UInt    len,
111                           FT_Fixed*  weightvector );
112 
113   FT_LOCAL( FT_Error )
114   T1_Get_MM_WeightVector( T1_Face    face,
115                           FT_UInt*   len,
116                           FT_Fixed*  weightvector );
117 
118 #endif /* !T1_CONFIG_OPTION_NO_MM_SUPPORT */
119 
120 
121 FT_END_HEADER
122 
123 #endif /* T1LOAD_H_ */
124 
125 
126 /* END */
127