Imported Upstream version 2.13.2
[platform/upstream/freetype2.git] / include / freetype / internal / services / svttcmap.h
1 /****************************************************************************
2  *
3  * svttcmap.h
4  *
5  *   The FreeType TrueType/sfnt cmap extra information service.
6  *
7  * Copyright (C) 2003-2023 by
8  * Masatake YAMATO, Redhat K.K.,
9  * David Turner, Robert Wilhelm, and Werner Lemberg.
10  *
11  * This file is part of the FreeType project, and may only be used,
12  * modified, and distributed under the terms of the FreeType project
13  * license, LICENSE.TXT.  By continuing to use, modify, or distribute
14  * this file you indicate that you have read the license and
15  * understand and accept it fully.
16  *
17  */
18
19 /* Development of this service is support of
20    Information-technology Promotion Agency, Japan. */
21
22 #ifndef SVTTCMAP_H_
23 #define SVTTCMAP_H_
24
25 #include <freetype/internal/ftserv.h>
26 #include <freetype/tttables.h>
27
28
29 FT_BEGIN_HEADER
30
31
32 #define FT_SERVICE_ID_TT_CMAP  "tt-cmaps"
33
34
35   /**************************************************************************
36    *
37    * @struct:
38    *   TT_CMapInfo
39    *
40    * @description:
41    *   A structure used to store TrueType/sfnt specific cmap information
42    *   which is not covered by the generic @FT_CharMap structure.  This
43    *   structure can be accessed with the @FT_Get_TT_CMap_Info function.
44    *
45    * @fields:
46    *   language ::
47    *     The language ID used in Mac fonts.  Definitions of values are in
48    *     `ttnameid.h`.
49    *
50    *   format ::
51    *     The cmap format.  OpenType 1.6 defines the formats 0 (byte encoding
52    *     table), 2~(high-byte mapping through table), 4~(segment mapping to
53    *     delta values), 6~(trimmed table mapping), 8~(mixed 16-bit and 32-bit
54    *     coverage), 10~(trimmed array), 12~(segmented coverage), 13~(last
55    *     resort font), and 14 (Unicode Variation Sequences).
56    */
57   typedef struct  TT_CMapInfo_
58   {
59     FT_ULong  language;
60     FT_Long   format;
61
62   } TT_CMapInfo;
63
64
65   typedef FT_Error
66   (*TT_CMap_Info_GetFunc)( FT_CharMap    charmap,
67                            TT_CMapInfo  *cmap_info );
68
69
70   FT_DEFINE_SERVICE( TTCMaps )
71   {
72     TT_CMap_Info_GetFunc  get_cmap_info;
73   };
74
75
76 #define FT_DEFINE_SERVICE_TTCMAPSREC( class_, get_cmap_info_ )  \
77   static const FT_Service_TTCMapsRec  class_ =                  \
78   {                                                             \
79     get_cmap_info_                                              \
80   };
81
82   /* */
83
84
85 FT_END_HEADER
86
87 #endif /* SVTTCMAP_H_ */
88
89
90 /* END */