1 // info.h
2 
3 // Copyright (C) 2012-2021 by Werner Lemberg.
4 //
5 // This file is part of the ttfautohint library, and may only be used,
6 // modified, and distributed under the terms given in `COPYING'.  By
7 // continuing to use, modify, or distribute this file you indicate that you
8 // have read `COPYING' and understand and accept it fully.
9 //
10 // The file `COPYING' mentioned in the previous paragraph is distributed
11 // with the ttfautohint library.
12 
13 
14 #ifndef INFO_H_
15 #define INFO_H_
16 
17 #include <ttfautohint.h>
18 #include <stdbool.h> // for llrb.h
19 #include <llrb.h>
20 
21 extern "C" {
22 
23 typedef struct Info_Data_
24 {
25   bool no_info;
26   bool detailed_info;
27   unsigned char* info_string;
28   unsigned char* info_string_wide;
29   unsigned short info_string_len;
30   unsigned short info_string_wide_len;
31 
32   const char* family_suffix;
33   void* family_data_head; // a red-black tree
34 
35   int hinting_range_min;
36   int hinting_range_max;
37   int hinting_limit;
38 
39   int gray_stem_width_mode;
40   int gdi_cleartype_stem_width_mode;
41   int dw_cleartype_stem_width_mode;
42 
43   int increase_x_height;
44   const char* x_height_snapping_exceptions_string;
45   int fallback_stem_width;
46 
47   bool windows_compatibility;
48   bool adjust_subglyphs;
49   bool hint_composites;
50   char default_script[5];
51   char fallback_script[5];
52   bool fallback_scaling;
53   bool symbol;
54   bool dehint;
55   bool TTFA_info;
56 
57   const char* control_name;
58   const char* reference_name;
59   int reference_index;
60 } Info_Data;
61 
62 
63 char*
64 check_family_suffix(const char* s);
65 
66 int
67 build_version_string(Info_Data* idata);
68 
69 int
70 info(unsigned short platform_id,
71      unsigned short encoding_id,
72      unsigned short language_id,
73      unsigned short name_id,
74      unsigned short* str_len,
75      unsigned char** str,
76      void* user);
77 
78 int
79 info_post(void* user);
80 
81 } // extern "C"
82 
83 #endif // INFO_H_
84 
85 // end of info.h
86