Imported Upstream version 2.13.2
[platform/upstream/freetype2.git] / include / freetype / internal / services / svcfftl.h
1 /****************************************************************************
2  *
3  * svcfftl.h
4  *
5  *   The FreeType CFF tables loader service (specification).
6  *
7  * Copyright (C) 2017-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 SVCFFTL_H_
20 #define SVCFFTL_H_
21
22 #include <freetype/internal/ftserv.h>
23 #include <freetype/internal/cfftypes.h>
24
25
26 FT_BEGIN_HEADER
27
28
29 #define FT_SERVICE_ID_CFF_LOAD  "cff-load"
30
31
32   typedef FT_UShort
33   (*FT_Get_Standard_Encoding_Func)( FT_UInt  charcode );
34
35   typedef FT_Error
36   (*FT_Load_Private_Dict_Func)( CFF_Font     font,
37                                 CFF_SubFont  subfont,
38                                 FT_UInt      lenNDV,
39                                 FT_Fixed*    NDV );
40
41   typedef FT_Byte
42   (*FT_FD_Select_Get_Func)( CFF_FDSelect  fdselect,
43                             FT_UInt       glyph_index );
44
45   typedef FT_Bool
46   (*FT_Blend_Check_Vector_Func)( CFF_Blend  blend,
47                                  FT_UInt    vsindex,
48                                  FT_UInt    lenNDV,
49                                  FT_Fixed*  NDV );
50
51   typedef FT_Error
52   (*FT_Blend_Build_Vector_Func)( CFF_Blend  blend,
53                                  FT_UInt    vsindex,
54                                  FT_UInt    lenNDV,
55                                  FT_Fixed*  NDV );
56
57
58   FT_DEFINE_SERVICE( CFFLoad )
59   {
60     FT_Get_Standard_Encoding_Func  get_standard_encoding;
61     FT_Load_Private_Dict_Func      load_private_dict;
62     FT_FD_Select_Get_Func          fd_select_get;
63     FT_Blend_Check_Vector_Func     blend_check_vector;
64     FT_Blend_Build_Vector_Func     blend_build_vector;
65   };
66
67
68 #define FT_DEFINE_SERVICE_CFFLOADREC( class_,                  \
69                                       get_standard_encoding_,  \
70                                       load_private_dict_,      \
71                                       fd_select_get_,          \
72                                       blend_check_vector_,     \
73                                       blend_build_vector_ )    \
74   static const FT_Service_CFFLoadRec  class_ =                 \
75   {                                                            \
76     get_standard_encoding_,                                    \
77     load_private_dict_,                                        \
78     fd_select_get_,                                            \
79     blend_check_vector_,                                       \
80     blend_build_vector_                                        \
81   };
82
83
84 FT_END_HEADER
85
86
87 #endif
88
89
90 /* END */