1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513


#![allow(non_camel_case_types)]
#![allow(non_upper_case_globals)]


extern crate libc;


/* automatically generated by rust-bindgen */

pub type FcChar8 = ::libc::c_uchar;
pub type FcChar16 = ::libc::c_ushort;
pub type FcChar32 = ::libc::c_uint;
pub type FcBool = ::libc::c_int;
pub type Enum__FcType = ::libc::c_int;
pub const FcTypeUnknown: ::libc::c_int = -1;
pub const FcTypeVoid: ::libc::c_int = 0;
pub const FcTypeInteger: ::libc::c_int = 1;
pub const FcTypeDouble: ::libc::c_int = 2;
pub const FcTypeString: ::libc::c_int = 3;
pub const FcTypeBool: ::libc::c_int = 4;
pub const FcTypeMatrix: ::libc::c_int = 5;
pub const FcTypeCharSet: ::libc::c_int = 6;
pub const FcTypeFTFace: ::libc::c_int = 7;
pub const FcTypeLangSet: ::libc::c_int = 8;
pub type FcType = Enum__FcType;
#[repr(C)]
#[derive(Copy)]
pub struct Struct__FcMatrix {
    pub xx: ::libc::c_double,
    pub xy: ::libc::c_double,
    pub yx: ::libc::c_double,
    pub yy: ::libc::c_double,
}
impl ::std::clone::Clone for Struct__FcMatrix {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for Struct__FcMatrix {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type FcMatrix = Struct__FcMatrix;
pub enum Struct__FcCharSet { }
pub type FcCharSet = Struct__FcCharSet;
#[repr(C)]
#[derive(Copy)]
pub struct Struct__FcObjectType {
    pub object: *const ::libc::c_char,
    pub _type: FcType,
}
impl ::std::clone::Clone for Struct__FcObjectType {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for Struct__FcObjectType {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type FcObjectType = Struct__FcObjectType;
#[repr(C)]
#[derive(Copy)]
pub struct Struct__FcConstant {
    pub name: *const FcChar8,
    pub object: *const ::libc::c_char,
    pub value: ::libc::c_int,
}
impl ::std::clone::Clone for Struct__FcConstant {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for Struct__FcConstant {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type FcConstant = Struct__FcConstant;
pub type Enum__FcResult = ::libc::c_uint;
pub const FcResultMatch: ::libc::c_uint = 0;
pub const FcResultNoMatch: ::libc::c_uint = 1;
pub const FcResultTypeMismatch: ::libc::c_uint = 2;
pub const FcResultNoId: ::libc::c_uint = 3;
pub const FcResultOutOfMemory: ::libc::c_uint = 4;
pub type FcResult = Enum__FcResult;
pub enum Struct__FcPattern { }
pub type FcPattern = Struct__FcPattern;
pub enum Struct__FcLangSet { }
pub type FcLangSet = Struct__FcLangSet;
#[repr(C)]
#[derive(Copy)]
pub struct Struct__FcValue {
    pub _type: FcType,
    pub u: Union_Unnamed1,
}
impl ::std::clone::Clone for Struct__FcValue {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for Struct__FcValue {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
#[repr(C)]
#[derive(Copy)]
pub struct Union_Unnamed1 {
    pub _bindgen_data_: [u64; 1usize],
}
impl Union_Unnamed1 {
    pub unsafe fn s(&mut self) -> *mut *const FcChar8 {
        let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
        ::std::mem::transmute(raw.offset(0))
    }
    pub unsafe fn i(&mut self) -> *mut ::libc::c_int {
        let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
        ::std::mem::transmute(raw.offset(0))
    }
    pub unsafe fn b(&mut self) -> *mut FcBool {
        let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
        ::std::mem::transmute(raw.offset(0))
    }
    pub unsafe fn d(&mut self) -> *mut ::libc::c_double {
        let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
        ::std::mem::transmute(raw.offset(0))
    }
    pub unsafe fn m(&mut self) -> *mut *const FcMatrix {
        let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
        ::std::mem::transmute(raw.offset(0))
    }
    pub unsafe fn c(&mut self) -> *mut *const FcCharSet {
        let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
        ::std::mem::transmute(raw.offset(0))
    }
    pub unsafe fn f(&mut self) -> *mut *mut ::libc::c_void {
        let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
        ::std::mem::transmute(raw.offset(0))
    }
    pub unsafe fn l(&mut self) -> *mut *const FcLangSet {
        let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
        ::std::mem::transmute(raw.offset(0))
    }
}
impl ::std::clone::Clone for Union_Unnamed1 {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for Union_Unnamed1 {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type FcValue = Struct__FcValue;
#[repr(C)]
#[derive(Copy)]
pub struct Struct__FcFontSet {
    pub nfont: ::libc::c_int,
    pub sfont: ::libc::c_int,
    pub fonts: *mut *mut FcPattern,
}
impl ::std::clone::Clone for Struct__FcFontSet {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for Struct__FcFontSet {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type FcFontSet = Struct__FcFontSet;
#[repr(C)]
#[derive(Copy)]
pub struct Struct__FcObjectSet {
    pub nobject: ::libc::c_int,
    pub sobject: ::libc::c_int,
    pub objects: *mut *const ::libc::c_char,
}
impl ::std::clone::Clone for Struct__FcObjectSet {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for Struct__FcObjectSet {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type FcObjectSet = Struct__FcObjectSet;
pub type Enum__FcMatchKind = ::libc::c_uint;
pub const FcMatchPattern: ::libc::c_uint = 0;
pub const FcMatchFont: ::libc::c_uint = 1;
pub const FcMatchScan: ::libc::c_uint = 2;
pub type FcMatchKind = Enum__FcMatchKind;
pub type Enum__FcLangResult = ::libc::c_uint;
pub const FcLangEqual: ::libc::c_uint = 0;
pub const FcLangDifferentCountry: ::libc::c_uint = 1;
pub const FcLangDifferentTerritory: ::libc::c_uint = 1;
pub const FcLangDifferentLang: ::libc::c_uint = 2;
pub type FcLangResult = Enum__FcLangResult;
pub type Enum__FcSetName = ::libc::c_uint;
pub const FcSetSystem: ::libc::c_uint = 0;
pub const FcSetApplication: ::libc::c_uint = 1;
pub type FcSetName = Enum__FcSetName;
pub enum Struct__FcAtomic { }
pub type FcAtomic = Struct__FcAtomic;
pub type Enum_Unnamed2 = ::libc::c_uint;
pub const FcEndianBig: ::libc::c_uint = 0;
pub const FcEndianLittle: ::libc::c_uint = 1;
pub type FcEndian = Enum_Unnamed2;
pub enum Struct__FcConfig { }
pub type FcConfig = Struct__FcConfig;
pub enum Struct__FcGlobalCache { }
pub type FcFileCache = Struct__FcGlobalCache;
pub enum Struct__FcBlanks { }
pub type FcBlanks = Struct__FcBlanks;
pub enum Struct__FcStrList { }
pub type FcStrList = Struct__FcStrList;
pub enum Struct__FcStrSet { }
pub type FcStrSet = Struct__FcStrSet;
pub enum Struct__FcCache { }
pub type FcCache = Struct__FcCache;
extern "C" {
    pub fn FcBlanksCreate() -> *mut FcBlanks;
    pub fn FcBlanksDestroy(b: *mut FcBlanks);
    pub fn FcBlanksAdd(b: *mut FcBlanks, ucs4: FcChar32) -> FcBool;
    pub fn FcBlanksIsMember(b: *mut FcBlanks, ucs4: FcChar32) -> FcBool;
    pub fn FcCacheDir(c: *const FcCache) -> *const FcChar8;
    pub fn FcCacheCopySet(c: *const FcCache) -> *mut FcFontSet;
    pub fn FcCacheSubdir(c: *const FcCache, i: ::libc::c_int)
     -> *const FcChar8;
    pub fn FcCacheNumSubdir(c: *const FcCache) -> ::libc::c_int;
    pub fn FcCacheNumFont(c: *const FcCache) -> ::libc::c_int;
    pub fn FcDirCacheUnlink(dir: *const FcChar8, config: *mut FcConfig)
     -> FcBool;
    pub fn FcDirCacheValid(cache_file: *const FcChar8) -> FcBool;
    pub fn FcDirCacheClean(cache_dir: *const FcChar8, verbose: FcBool)
     -> FcBool;
    pub fn FcCacheCreateTagFile(config: *const FcConfig);
    pub fn FcConfigHome() -> *mut FcChar8;
    pub fn FcConfigEnableHome(enable: FcBool) -> FcBool;
    pub fn FcConfigFilename(url: *const FcChar8) -> *mut FcChar8;
    pub fn FcConfigCreate() -> *mut FcConfig;
    pub fn FcConfigReference(config: *mut FcConfig) -> *mut FcConfig;
    pub fn FcConfigDestroy(config: *mut FcConfig);
    pub fn FcConfigSetCurrent(config: *mut FcConfig) -> FcBool;
    pub fn FcConfigGetCurrent() -> *mut FcConfig;
    pub fn FcConfigUptoDate(config: *mut FcConfig) -> FcBool;
    pub fn FcConfigBuildFonts(config: *mut FcConfig) -> FcBool;
    pub fn FcConfigGetFontDirs(config: *mut FcConfig) -> *mut FcStrList;
    pub fn FcConfigGetConfigDirs(config: *mut FcConfig) -> *mut FcStrList;
    pub fn FcConfigGetConfigFiles(config: *mut FcConfig) -> *mut FcStrList;
    pub fn FcConfigGetCache(config: *mut FcConfig) -> *mut FcChar8;
    pub fn FcConfigGetBlanks(config: *mut FcConfig) -> *mut FcBlanks;
    pub fn FcConfigGetCacheDirs(config: *const FcConfig) -> *mut FcStrList;
    pub fn FcConfigGetRescanInterval(config: *mut FcConfig) -> ::libc::c_int;
    pub fn FcConfigSetRescanInterval(config: *mut FcConfig,
                                     rescanInterval: ::libc::c_int) -> FcBool;
    pub fn FcConfigGetFonts(config: *mut FcConfig, set: FcSetName)
     -> *mut FcFontSet;
    pub fn FcConfigAppFontAddFile(config: *mut FcConfig, file: *const FcChar8)
     -> FcBool;
    pub fn FcConfigAppFontAddDir(config: *mut FcConfig, dir: *const FcChar8)
     -> FcBool;
    pub fn FcConfigAppFontClear(config: *mut FcConfig);
    pub fn FcConfigSubstituteWithPat(config: *mut FcConfig, p: *mut FcPattern,
                                     p_pat: *mut FcPattern, kind: FcMatchKind)
     -> FcBool;
    pub fn FcConfigSubstitute(config: *mut FcConfig, p: *mut FcPattern,
                              kind: FcMatchKind) -> FcBool;
    pub fn FcConfigGetSysRoot(config: *const FcConfig) -> *const FcChar8;
    pub fn FcConfigSetSysRoot(config: *mut FcConfig, sysroot: *const FcChar8)
    ;
    pub fn FcCharSetCreate() -> *mut FcCharSet;
    pub fn FcCharSetNew() -> *mut FcCharSet;
    pub fn FcCharSetDestroy(fcs: *mut FcCharSet);
    pub fn FcCharSetAddChar(fcs: *mut FcCharSet, ucs4: FcChar32) -> FcBool;
    pub fn FcCharSetDelChar(fcs: *mut FcCharSet, ucs4: FcChar32) -> FcBool;
    pub fn FcCharSetCopy(src: *mut FcCharSet) -> *mut FcCharSet;
    pub fn FcCharSetEqual(a: *const FcCharSet, b: *const FcCharSet) -> FcBool;
    pub fn FcCharSetIntersect(a: *const FcCharSet, b: *const FcCharSet)
     -> *mut FcCharSet;
    pub fn FcCharSetUnion(a: *const FcCharSet, b: *const FcCharSet)
     -> *mut FcCharSet;
    pub fn FcCharSetSubtract(a: *const FcCharSet, b: *const FcCharSet)
     -> *mut FcCharSet;
    pub fn FcCharSetMerge(a: *mut FcCharSet, b: *const FcCharSet,
                          changed: *mut FcBool) -> FcBool;
    pub fn FcCharSetHasChar(fcs: *const FcCharSet, ucs4: FcChar32) -> FcBool;
    pub fn FcCharSetCount(a: *const FcCharSet) -> FcChar32;
    pub fn FcCharSetIntersectCount(a: *const FcCharSet, b: *const FcCharSet)
     -> FcChar32;
    pub fn FcCharSetSubtractCount(a: *const FcCharSet, b: *const FcCharSet)
     -> FcChar32;
    pub fn FcCharSetIsSubset(a: *const FcCharSet, b: *const FcCharSet)
     -> FcBool;
    pub fn FcCharSetFirstPage(a: *const FcCharSet, map: *mut FcChar32,
                              next: *mut FcChar32) -> FcChar32;
    pub fn FcCharSetNextPage(a: *const FcCharSet, map: *mut FcChar32,
                             next: *mut FcChar32) -> FcChar32;
    pub fn FcCharSetCoverage(a: *const FcCharSet, page: FcChar32,
                             result: *mut FcChar32) -> FcChar32;
    pub fn FcValuePrint(v: FcValue);
    pub fn FcPatternPrint(p: *const FcPattern);
    pub fn FcFontSetPrint(s: *const FcFontSet);
    pub fn FcGetDefaultLangs() -> *mut FcStrSet;
    pub fn FcDefaultSubstitute(pattern: *mut FcPattern);
    pub fn FcFileIsDir(file: *const FcChar8) -> FcBool;
    pub fn FcFileScan(set: *mut FcFontSet, dirs: *mut FcStrSet,
                      cache: *mut FcFileCache, blanks: *mut FcBlanks,
                      file: *const FcChar8, force: FcBool) -> FcBool;
    pub fn FcDirScan(set: *mut FcFontSet, dirs: *mut FcStrSet,
                     cache: *mut FcFileCache, blanks: *mut FcBlanks,
                     dir: *const FcChar8, force: FcBool) -> FcBool;
    pub fn FcDirSave(set: *mut FcFontSet, dirs: *mut FcStrSet,
                     dir: *const FcChar8) -> FcBool;
    pub fn FcDirCacheLoad(dir: *const FcChar8, config: *mut FcConfig,
                          cache_file: *mut *mut FcChar8) -> *mut FcCache;
    pub fn FcDirCacheRescan(dir: *const FcChar8, config: *mut FcConfig)
     -> *mut FcCache;
    pub fn FcDirCacheRead(dir: *const FcChar8, force: FcBool,
                          config: *mut FcConfig) -> *mut FcCache;
    pub fn FcDirCacheLoadFile(cache_file: *const FcChar8,
                              file_stat: *mut ::libc::stat) -> *mut FcCache;
    pub fn FcDirCacheUnload(cache: *mut FcCache);
    pub fn FcFreeTypeQuery(file: *const FcChar8, id: ::libc::c_int,
                           blanks: *mut FcBlanks, count: *mut ::libc::c_int)
     -> *mut FcPattern;
    pub fn FcFontSetCreate() -> *mut FcFontSet;
    pub fn FcFontSetDestroy(s: *mut FcFontSet);
    pub fn FcFontSetAdd(s: *mut FcFontSet, font: *mut FcPattern) -> FcBool;
    pub fn FcInitLoadConfig() -> *mut FcConfig;
    pub fn FcInitLoadConfigAndFonts() -> *mut FcConfig;
    pub fn FcInit() -> FcBool;
    pub fn FcFini();
    pub fn FcGetVersion() -> ::libc::c_int;
    pub fn FcInitReinitialize() -> FcBool;
    pub fn FcInitBringUptoDate() -> FcBool;
    pub fn FcGetLangs() -> *mut FcStrSet;
    pub fn FcLangNormalize(lang: *const FcChar8) -> *mut FcChar8;
    pub fn FcLangGetCharSet(lang: *const FcChar8) -> *const FcCharSet;
    pub fn FcLangSetCreate() -> *mut FcLangSet;
    pub fn FcLangSetDestroy(ls: *mut FcLangSet);
    pub fn FcLangSetCopy(ls: *const FcLangSet) -> *mut FcLangSet;
    pub fn FcLangSetAdd(ls: *mut FcLangSet, lang: *const FcChar8) -> FcBool;
    pub fn FcLangSetDel(ls: *mut FcLangSet, lang: *const FcChar8) -> FcBool;
    pub fn FcLangSetHasLang(ls: *const FcLangSet, lang: *const FcChar8)
     -> FcLangResult;
    pub fn FcLangSetCompare(lsa: *const FcLangSet, lsb: *const FcLangSet)
     -> FcLangResult;
    pub fn FcLangSetContains(lsa: *const FcLangSet, lsb: *const FcLangSet)
     -> FcBool;
    pub fn FcLangSetEqual(lsa: *const FcLangSet, lsb: *const FcLangSet)
     -> FcBool;
    pub fn FcLangSetHash(ls: *const FcLangSet) -> FcChar32;
    pub fn FcLangSetGetLangs(ls: *const FcLangSet) -> *mut FcStrSet;
    pub fn FcLangSetUnion(a: *const FcLangSet, b: *const FcLangSet)
     -> *mut FcLangSet;
    pub fn FcLangSetSubtract(a: *const FcLangSet, b: *const FcLangSet)
     -> *mut FcLangSet;
    pub fn FcObjectSetCreate() -> *mut FcObjectSet;
    pub fn FcObjectSetAdd(os: *mut FcObjectSet, object: *const ::libc::c_char)
     -> FcBool;
    pub fn FcObjectSetDestroy(os: *mut FcObjectSet);
    //pub fn FcObjectSetVaBuild(first: *const ::libc::c_char, va: va_list)
     //-> *mut FcObjectSet;
    pub fn FcObjectSetBuild(first: *const ::libc::c_char, ...)
     -> *mut FcObjectSet;
    pub fn FcFontSetList(config: *mut FcConfig, sets: *mut *mut FcFontSet,
                         nsets: ::libc::c_int, p: *mut FcPattern,
                         os: *mut FcObjectSet) -> *mut FcFontSet;
    pub fn FcFontList(config: *mut FcConfig, p: *mut FcPattern,
                      os: *mut FcObjectSet) -> *mut FcFontSet;
    pub fn FcAtomicCreate(file: *const FcChar8) -> *mut FcAtomic;
    pub fn FcAtomicLock(atomic: *mut FcAtomic) -> FcBool;
    pub fn FcAtomicNewFile(atomic: *mut FcAtomic) -> *mut FcChar8;
    pub fn FcAtomicOrigFile(atomic: *mut FcAtomic) -> *mut FcChar8;
    pub fn FcAtomicReplaceOrig(atomic: *mut FcAtomic) -> FcBool;
    pub fn FcAtomicDeleteNew(atomic: *mut FcAtomic);
    pub fn FcAtomicUnlock(atomic: *mut FcAtomic);
    pub fn FcAtomicDestroy(atomic: *mut FcAtomic);
    pub fn FcFontSetMatch(config: *mut FcConfig, sets: *mut *mut FcFontSet,
                          nsets: ::libc::c_int, p: *mut FcPattern,
                          result: *mut FcResult) -> *mut FcPattern;
    pub fn FcFontMatch(config: *mut FcConfig, p: *mut FcPattern,
                       result: *mut FcResult) -> *mut FcPattern;
    pub fn FcFontRenderPrepare(config: *mut FcConfig, pat: *mut FcPattern,
                               font: *mut FcPattern) -> *mut FcPattern;
    pub fn FcFontSetSort(config: *mut FcConfig, sets: *mut *mut FcFontSet,
                         nsets: ::libc::c_int, p: *mut FcPattern,
                         trim: FcBool, csp: *mut *mut FcCharSet,
                         result: *mut FcResult) -> *mut FcFontSet;
    pub fn FcFontSort(config: *mut FcConfig, p: *mut FcPattern, trim: FcBool,
                      csp: *mut *mut FcCharSet, result: *mut FcResult)
     -> *mut FcFontSet;
    pub fn FcFontSetSortDestroy(fs: *mut FcFontSet);
    pub fn FcMatrixCopy(mat: *const FcMatrix) -> *mut FcMatrix;
    pub fn FcMatrixEqual(mat1: *const FcMatrix, mat2: *const FcMatrix)
     -> FcBool;
    pub fn FcMatrixMultiply(result: *mut FcMatrix, a: *const FcMatrix,
                            b: *const FcMatrix);
    pub fn FcMatrixRotate(m: *mut FcMatrix, c: ::libc::c_double,
                          s: ::libc::c_double);
    pub fn FcMatrixScale(m: *mut FcMatrix, sx: ::libc::c_double,
                         sy: ::libc::c_double);
    pub fn FcMatrixShear(m: *mut FcMatrix, sh: ::libc::c_double,
                         sv: ::libc::c_double);
    pub fn FcNameRegisterObjectTypes(types: *const FcObjectType,
                                     ntype: ::libc::c_int) -> FcBool;
    pub fn FcNameUnregisterObjectTypes(types: *const FcObjectType,
                                       ntype: ::libc::c_int) -> FcBool;
    pub fn FcNameGetObjectType(object: *const ::libc::c_char)
     -> *const FcObjectType;
    pub fn FcNameRegisterConstants(consts: *const FcConstant,
                                   nconsts: ::libc::c_int) -> FcBool;
    pub fn FcNameUnregisterConstants(consts: *const FcConstant,
                                     nconsts: ::libc::c_int) -> FcBool;
    pub fn FcNameGetConstant(string: *const FcChar8) -> *const FcConstant;
    pub fn FcNameConstant(string: *const FcChar8, result: *mut ::libc::c_int)
     -> FcBool;
    pub fn FcNameParse(name: *const FcChar8) -> *mut FcPattern;
    pub fn FcNameUnparse(pat: *mut FcPattern) -> *mut FcChar8;
    pub fn FcPatternCreate() -> *mut FcPattern;
    pub fn FcPatternDuplicate(p: *const FcPattern) -> *mut FcPattern;
    pub fn FcPatternReference(p: *mut FcPattern);
    pub fn FcPatternFilter(p: *mut FcPattern, os: *const FcObjectSet)
     -> *mut FcPattern;
    pub fn FcValueDestroy(v: FcValue);
    pub fn FcValueEqual(va: FcValue, vb: FcValue) -> FcBool;
    pub fn FcValueSave(v: FcValue) -> FcValue;
    pub fn FcPatternDestroy(p: *mut FcPattern);
    pub fn FcPatternEqual(pa: *const FcPattern, pb: *const FcPattern)
     -> FcBool;
    pub fn FcPatternEqualSubset(pa: *const FcPattern, pb: *const FcPattern,
                                os: *const FcObjectSet) -> FcBool;
    pub fn FcPatternHash(p: *const FcPattern) -> FcChar32;
    pub fn FcPatternAdd(p: *mut FcPattern, object: *const ::libc::c_char,
                        value: FcValue, append: FcBool) -> FcBool;
    pub fn FcPatternAddWeak(p: *mut FcPattern, object: *const ::libc::c_char,
                            value: FcValue, append: FcBool) -> FcBool;
    pub fn FcPatternGet(p: *const FcPattern, object: *const ::libc::c_char,
                        id: ::libc::c_int, v: *mut FcValue) -> FcResult;
    pub fn FcPatternDel(p: *mut FcPattern, object: *const ::libc::c_char)
     -> FcBool;
    pub fn FcPatternRemove(p: *mut FcPattern, object: *const ::libc::c_char,
                           id: ::libc::c_int) -> FcBool;
    pub fn FcPatternAddInteger(p: *mut FcPattern,
                               object: *const ::libc::c_char,
                               i: ::libc::c_int) -> FcBool;
    pub fn FcPatternAddDouble(p: *mut FcPattern,
                              object: *const ::libc::c_char,
                              d: ::libc::c_double) -> FcBool;
    pub fn FcPatternAddString(p: *mut FcPattern,
                              object: *const ::libc::c_char,
                              s: *const FcChar8) -> FcBool;
    pub fn FcPatternAddMatrix(p: *mut FcPattern,
                              object: *const ::libc::c_char,
                              s: *const FcMatrix) -> FcBool;
    pub fn FcPatternAddCharSet(p: *mut FcPattern,
                               object: *const ::libc::c_char,
                               c: *const FcCharSet) -> FcBool;
    pub fn FcPatternAddBool(p: *mut FcPattern, object: *const ::libc::c_char,
                            b: FcBool) -> FcBool;
    pub fn FcPatternAddLangSet(p: *mut FcPattern,
                               object: *const ::libc::c_char,
                               ls: *const FcLangSet) -> FcBool;
    pub fn FcPatternGetInteger(p: *const FcPattern,
                               object: *const ::libc::c_char,
                               n: ::libc::c_int, i: *mut ::libc::c_int)
     -> FcResult;
    pub fn FcPatternGetDouble(p: *const FcPattern,
                              object: *const ::libc::c_char, n: ::libc::c_int,
                              d: *mut ::libc::c_double) -> FcResult;
    pub fn FcPatternGetString(p: *const FcPattern,
                              object: *const ::libc::c_char, n: ::libc::c_int,
                              s: *mut *mut FcChar8) -> FcResult;
    pub fn FcPatternGetMatrix(p: *const FcPattern,
                              object: *const ::libc::c_char, n: ::libc::c_int,
                              s: *mut *mut FcMatrix) -> FcResult;
    pub fn FcPatternGetCharSet(p: *const FcPattern,
                               object: *const ::libc::c_char,
                               n: ::libc::c_int, c: *mut *mut FcCharSet)
     -> FcResult;
    pub fn FcPatternGetBool(p: *const FcPattern,
                            object: *const ::libc::c_char, n: ::libc::c_int,
                            b: *mut FcBool) -> FcResult;
    pub fn FcPatternGetLangSet(p: *const FcPattern,
                               object: *const ::libc::c_char,
                               n: ::libc::c_int, ls: *mut *mut FcLangSet)
     -> FcResult;
    //pub fn FcPatternVaBuild(p: *mut FcPattern, va: va_list) -> *mut FcPattern;
    pub fn FcPatternBuild(p: *mut FcPattern, ...) -> *mut FcPattern;
    pub fn FcPatternFormat(pat: *mut FcPattern, format: *const FcChar8)
     -> *mut FcChar8;
    pub fn FcStrCopy(s: *const FcChar8) -> *mut FcChar8;
    pub fn FcStrCopyFilename(s: *const FcChar8) -> *mut FcChar8;
    pub fn FcStrPlus(s1: *const FcChar8, s2: *const FcChar8) -> *mut FcChar8;
    pub fn FcStrFree(s: *mut FcChar8);
    pub fn FcStrDowncase(s: *const FcChar8) -> *mut FcChar8;
    pub fn FcStrCmpIgnoreCase(s1: *const FcChar8, s2: *const FcChar8)
     -> ::libc::c_int;
    pub fn FcStrCmp(s1: *const FcChar8, s2: *const FcChar8) -> ::libc::c_int;
    pub fn FcStrStrIgnoreCase(s1: *const FcChar8, s2: *const FcChar8)
     -> *const FcChar8;
    pub fn FcStrStr(s1: *const FcChar8, s2: *const FcChar8) -> *const FcChar8;
    pub fn FcUtf8ToUcs4(src_orig: *const FcChar8, dst: *mut FcChar32,
                        len: ::libc::c_int) -> ::libc::c_int;
    pub fn FcUtf8Len(string: *const FcChar8, len: ::libc::c_int,
                     nchar: *mut ::libc::c_int, wchar: *mut ::libc::c_int)
     -> FcBool;
    pub fn FcUcs4ToUtf8(ucs4: FcChar32, dest: *mut FcChar8) -> ::libc::c_int;
    pub fn FcUtf16ToUcs4(src_orig: *const FcChar8, endian: FcEndian,
                         dst: *mut FcChar32, len: ::libc::c_int)
     -> ::libc::c_int;
    pub fn FcUtf16Len(string: *const FcChar8, endian: FcEndian,
                      len: ::libc::c_int, nchar: *mut ::libc::c_int,
                      wchar: *mut ::libc::c_int) -> FcBool;
    pub fn FcStrDirname(file: *const FcChar8) -> *mut FcChar8;
    pub fn FcStrBasename(file: *const FcChar8) -> *mut FcChar8;
    pub fn FcStrSetCreate() -> *mut FcStrSet;
    pub fn FcStrSetMember(set: *mut FcStrSet, s: *const FcChar8) -> FcBool;
    pub fn FcStrSetEqual(sa: *mut FcStrSet, sb: *mut FcStrSet) -> FcBool;
    pub fn FcStrSetAdd(set: *mut FcStrSet, s: *const FcChar8) -> FcBool;
    pub fn FcStrSetAddFilename(set: *mut FcStrSet, s: *const FcChar8)
     -> FcBool;
    pub fn FcStrSetDel(set: *mut FcStrSet, s: *const FcChar8) -> FcBool;
    pub fn FcStrSetDestroy(set: *mut FcStrSet);
    pub fn FcStrListCreate(set: *mut FcStrSet) -> *mut FcStrList;
    pub fn FcStrListFirst(list: *mut FcStrList);
    pub fn FcStrListNext(list: *mut FcStrList) -> *mut FcChar8;
    pub fn FcStrListDone(list: *mut FcStrList);
    pub fn FcConfigParseAndLoad(config: *mut FcConfig, file: *const FcChar8,
                                complain: FcBool) -> FcBool;
}