1 module fontconfig.fctypes;
2
3 import std.string : toStringz, fromStringz, toLower;
4 import std.algorithm : endsWith;
5
6 alias FcChar8 = char;
7 alias FcChar16 = wchar;
8 alias FcChar32 = dchar;
9 alias FcBool = int;
10
11 enum : int {
12 FcFalse = 0,
13 FcTrue = 1
14 }
15
16 struct FcMatrix {
17 double xx, xy, yx, yy;
18 }
19
20 struct FcCharSet {}
21
22 struct FcLangSet {}
23
24 struct FcConfig {}
25
26 enum : int {
27 FcTypeUnknown = -1,
28 FcTypeVoid,
29 FcTypeInteger,
30 FcTypeDouble,
31 FcTypeString,
32 FcTypeBool,
33 FcTypeMatrix,
34 FcTypeCharSet,
35 FcTypeFTFace,
36 FcTypeLangSet,
37 FcTypeRange
38 }
39
40 alias FcType = int;
41
42 enum : int {
43 FcResultMatch,
44 FcResultNoMatch,
45 FcResultTypeMismatch,
46 FcResultNoId,
47 FcResultOutOfMemory
48 }
49
50 alias FcResult = int;
51
52 struct FcValue {
53 FcType type;
54 union {
55 const FcChar8 *s;
56 int i;
57 FcBool b;
58 double d;
59 const FcMatrix *m;
60 const FcCharSet *c;
61 void *f;
62 const FcLangSet *l;
63 const FcRange *r;
64 }
65 }
66
67 enum FcMatchKind {
68 FcMatchPattern,
69 FcMatchFont,
70 FcMatchScan
71 }
72
73 enum FcLangResult {
74 FcLangEqual = 0,
75 FcLangDifferentCountry = 1,
76 FcLangDifferentTerritory = 1,
77 FcLangDifferentLang = 2
78 }
79
80 enum FcSetName {
81 FcSetSystem = 0,
82 FcSetApplication = 1
83 }
84
85 enum FcEndian {
86 FcEndianBig,
87 FcEndianLittle
88 }
89
90 struct FcFontSet {
91 int nfont;
92 int sfont;
93 FcPattern **fonts;
94 }
95
96 struct FcObjectSet {
97 int nobject;
98 int sobject;
99 const char **objects;
100 }
101
102 struct FcPattern {}
103
104 struct FcRange {}
105
106 enum {
107 FC_WEIGHT_THIN = 0,
108 FC_WEIGHT_EXTRALIGHT = 40,
109 FC_WEIGHT_ULTRALIGHT = FC_WEIGHT_EXTRALIGHT,
110 FC_WEIGHT_LIGHT = 50,
111 FC_WEIGHT_DEMILIGHT = 55,
112 FC_WEIGHT_SEMILIGHT = FC_WEIGHT_DEMILIGHT,
113 FC_WEIGHT_BOOK = 75,
114 FC_WEIGHT_REGULAR = 80,
115 FC_WEIGHT_NORMAL = FC_WEIGHT_REGULAR,
116 FC_WEIGHT_MEDIUM = 100,
117 FC_WEIGHT_DEMIBOLD = 180,
118 FC_WEIGHT_SEMIBOLD = FC_WEIGHT_DEMIBOLD,
119 FC_WEIGHT_BOLD = 200,
120 FC_WEIGHT_EXTRABOLD = 205,
121 FC_WEIGHT_ULTRABOLD = FC_WEIGHT_EXTRABOLD,
122 FC_WEIGHT_BLACK = 210,
123 FC_WEIGHT_HEAVY = FC_WEIGHT_BLACK,
124 FC_WEIGHT_EXTRABLACK = 215,
125 FC_WEIGHT_ULTRABLACK = FC_WEIGHT_EXTRABLACK
126 }
127
128 enum {
129 FC_SLANT_ROMAN =0,
130 FC_SLANT_ITALIC =100,
131 FC_SLANT_OBLIQUE =110
132 }
133
134 enum {
135 FC_WIDTH_ULTRACONDENSED =50,
136 FC_WIDTH_EXTRACONDENSED =63,
137 FC_WIDTH_CONDENSED =75,
138 FC_WIDTH_SEMICONDENSED =87,
139 FC_WIDTH_NORMAL =100,
140 FC_WIDTH_SEMIEXPANDED =113,
141 FC_WIDTH_EXPANDED =125,
142 FC_WIDTH_EXTRAEXPANDED =150,
143 FC_WIDTH_ULTRAEXPANDED =200
144 }
145
146 enum {
147 FC_PROPORTIONAL =0,
148 FC_DUAL =90,
149 FC_MONO =100,
150 FC_CHARCELL =110
151 }
152
153 const FC_FAMILY = "family"; /* String */
154 const FC_STYLE = "style"; /* String */
155 const FC_SLANT = "slant"; /* Int */
156 const FC_WEIGHT = "weight"; /* Int */
157 const FC_SIZE = "size"; /* Range (double) */
158 const FC_ASPECT = "aspect"; /* Double */
159 const FC_PIXEL_SIZE = "pixelsize"; /* Double */
160 const FC_SPACING = "spacing"; /* Int */
161 const FC_FOUNDRY = "foundry"; /* String */
162 const FC_ANTIALIAS = "antialias"; /* Bool (depends) */
163 const FC_HINTING = "hinting"; /* Bool (true) */
164 const FC_HINT_STYLE = "hintstyle"; /* Int */
165 const FC_VERTICAL_LAYOUT = "verticallayout"; /* Bool (false) */
166 const FC_AUTOHINT = "autohint"; /* Bool (false) */
167 const FC_GLOBAL_ADVANCE = "globaladvance"; /* Bool (true) */
168 const FC_WIDTH = "width"; /* Int */
169 const FC_FILE = "file"; /* String */
170 const FC_INDEX = "index"; /* Int */
171 const FC_FT_FACE = "ftface"; /* FT_Face */
172 const FC_RASTERIZER = "rasterizer"; /* String (deprecated) */
173 const FC_OUTLINE = "outline"; /* Bool */
174 const FC_SCALABLE = "scalable"; /* Bool */
175 const FC_COLOR = "color"; /* Bool */
176 const FC_SCALE = "scale"; /* double */
177 const FC_DPI = "dpi"; /* double */
178 const FC_RGBA = "rgba"; /* Int */
179 const FC_MINSPACE = "minspace"; /* Bool use minimum line spacing */
180 const FC_SOURCE = "source"; /* String (deprecated) */
181 const FC_CHARSET = "charset"; /* CharSet */
182 const FC_LANG = "lang"; /* String RFC 3066 langs */
183 const FC_FONTVERSION = "fontversion"; /* Int from 'head' table */
184 const FC_FULLNAME = "fullname"; /* String */
185 const FC_FAMILYLANG = "familylang"; /* String RFC 3066 langs */
186 const FC_STYLELANG = "stylelang"; /* String RFC 3066 langs */
187 const FC_FULLNAMELANG = "fullnamelang"; /* String RFC 3066 langs */
188 const FC_CAPABILITY = "capability"; /* String */
189 const FC_FONTFORMAT = "fontformat"; /* String */
190 const FC_EMBOLDEN = "embolden"; /* Bool - true if emboldening needed*/
191 const FC_EMBEDDED_BITMAP = "embeddedbitmap"; /* Bool - true to enable embedded bitmaps */
192 const FC_DECORATIVE = "decorative"; /* Bool - true if style is a decorative variant */
193 const FC_LCD_FILTER = "lcdfilter"; /* Int */
194 const FC_FONT_FEATURES = "fontfeatures"; /* String */
195 const FC_NAMELANG = "namelang"; /* String RFC 3866 langs */
196 const FC_PRGNAME = "prgname"; /* String */
197 const FC_HASH = "hash"; /* String (deprecated) */
198 const FC_POSTSCRIPT_NAME = "postscriptname"; /* String */
199
200