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
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
#![allow(non_camel_case_types)]

#[cfg(any(target_os = "android", all(unix, not(target_os = "macos"))))]
extern crate freetype_sys;

extern crate libc;

/* automatically generated by rust-bindgen */

pub type int8_t = ::libc::c_char;
pub type int16_t = ::libc::c_short;
pub type int32_t = ::libc::c_int;
pub type int64_t = ::libc::c_long;
pub type uint8_t = ::libc::c_uchar;
pub type uint16_t = ::libc::c_ushort;
pub type uint32_t = ::libc::c_uint;
pub type uint64_t = ::libc::c_ulong;
pub type int_least8_t = ::libc::c_char;
pub type int_least16_t = ::libc::c_short;
pub type int_least32_t = ::libc::c_int;
pub type int_least64_t = ::libc::c_long;
pub type uint_least8_t = ::libc::c_uchar;
pub type uint_least16_t = ::libc::c_ushort;
pub type uint_least32_t = ::libc::c_uint;
pub type uint_least64_t = ::libc::c_ulong;
pub type int_fast8_t = ::libc::c_char;
pub type int_fast16_t = ::libc::c_long;
pub type int_fast32_t = ::libc::c_long;
pub type int_fast64_t = ::libc::c_long;
pub type uint_fast8_t = ::libc::c_uchar;
pub type uint_fast16_t = ::libc::c_ulong;
pub type uint_fast32_t = ::libc::c_ulong;
pub type uint_fast64_t = ::libc::c_ulong;
pub type intptr_t = ::libc::c_long;
pub type uintptr_t = ::libc::c_ulong;
pub type intmax_t = ::libc::c_long;
pub type uintmax_t = ::libc::c_ulong;
pub type hb_bool_t = ::libc::c_int;
pub type hb_codepoint_t = uint32_t;
pub type hb_position_t = int32_t;
pub type hb_mask_t = uint32_t;
#[repr(C)]
#[derive(Copy)]
pub struct Union__hb_var_int_t {
    pub _bindgen_data_: [u32; 1usize],
}
impl Union__hb_var_int_t {
    pub unsafe fn u32(&mut self) -> *mut uint32_t {
        let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
        ::std::mem::transmute(raw.offset(0))
    }
    pub unsafe fn i32(&mut self) -> *mut int32_t {
        let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
        ::std::mem::transmute(raw.offset(0))
    }
    pub unsafe fn u16(&mut self) -> *mut [uint16_t; 2usize] {
        let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
        ::std::mem::transmute(raw.offset(0))
    }
    pub unsafe fn i16(&mut self) -> *mut [int16_t; 2usize] {
        let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
        ::std::mem::transmute(raw.offset(0))
    }
    pub unsafe fn u8(&mut self) -> *mut [uint8_t; 4usize] {
        let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
        ::std::mem::transmute(raw.offset(0))
    }
    pub unsafe fn i8(&mut self) -> *mut [int8_t; 4usize] {
        let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
        ::std::mem::transmute(raw.offset(0))
    }
}
impl ::std::clone::Clone for Union__hb_var_int_t {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for Union__hb_var_int_t {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type hb_var_int_t = Union__hb_var_int_t;
pub type hb_tag_t = uint32_t;
pub type Enum_Unnamed1 = ::libc::c_uint;
pub const HB_DIRECTION_INVALID: ::libc::c_uint = 0;
pub const HB_DIRECTION_LTR: ::libc::c_uint = 4;
pub const HB_DIRECTION_RTL: ::libc::c_uint = 5;
pub const HB_DIRECTION_TTB: ::libc::c_uint = 6;
pub const HB_DIRECTION_BTT: ::libc::c_uint = 7;
pub type hb_direction_t = Enum_Unnamed1;
pub enum Struct_hb_language_impl_t { }
pub type hb_language_t = *const Struct_hb_language_impl_t;
pub type Enum_Unnamed2 = ::libc::c_uint;
pub const HB_SCRIPT_COMMON: ::libc::c_uint = 1517910393;
pub const HB_SCRIPT_INHERITED: ::libc::c_uint = 1516858984;
pub const HB_SCRIPT_UNKNOWN: ::libc::c_uint = 1517976186;
pub const HB_SCRIPT_ARABIC: ::libc::c_uint = 1098015074;
pub const HB_SCRIPT_ARMENIAN: ::libc::c_uint = 1098018158;
pub const HB_SCRIPT_BENGALI: ::libc::c_uint = 1113943655;
pub const HB_SCRIPT_CYRILLIC: ::libc::c_uint = 1132032620;
pub const HB_SCRIPT_DEVANAGARI: ::libc::c_uint = 1147500129;
pub const HB_SCRIPT_GEORGIAN: ::libc::c_uint = 1197830002;
pub const HB_SCRIPT_GREEK: ::libc::c_uint = 1198679403;
pub const HB_SCRIPT_GUJARATI: ::libc::c_uint = 1198877298;
pub const HB_SCRIPT_GURMUKHI: ::libc::c_uint = 1198879349;
pub const HB_SCRIPT_HANGUL: ::libc::c_uint = 1214344807;
pub const HB_SCRIPT_HAN: ::libc::c_uint = 1214344809;
pub const HB_SCRIPT_HEBREW: ::libc::c_uint = 1214603890;
pub const HB_SCRIPT_HIRAGANA: ::libc::c_uint = 1214870113;
pub const HB_SCRIPT_KANNADA: ::libc::c_uint = 1265525857;
pub const HB_SCRIPT_KATAKANA: ::libc::c_uint = 1264676449;
pub const HB_SCRIPT_LAO: ::libc::c_uint = 1281453935;
pub const HB_SCRIPT_LATIN: ::libc::c_uint = 1281455214;
pub const HB_SCRIPT_MALAYALAM: ::libc::c_uint = 1298954605;
pub const HB_SCRIPT_ORIYA: ::libc::c_uint = 1332902241;
pub const HB_SCRIPT_TAMIL: ::libc::c_uint = 1415671148;
pub const HB_SCRIPT_TELUGU: ::libc::c_uint = 1415933045;
pub const HB_SCRIPT_THAI: ::libc::c_uint = 1416126825;
pub const HB_SCRIPT_TIBETAN: ::libc::c_uint = 1416192628;
pub const HB_SCRIPT_BOPOMOFO: ::libc::c_uint = 1114599535;
pub const HB_SCRIPT_BRAILLE: ::libc::c_uint = 1114792297;
pub const HB_SCRIPT_CANADIAN_SYLLABICS: ::libc::c_uint = 1130458739;
pub const HB_SCRIPT_CHEROKEE: ::libc::c_uint = 1130915186;
pub const HB_SCRIPT_ETHIOPIC: ::libc::c_uint = 1165256809;
pub const HB_SCRIPT_KHMER: ::libc::c_uint = 1265134962;
pub const HB_SCRIPT_MONGOLIAN: ::libc::c_uint = 1299148391;
pub const HB_SCRIPT_MYANMAR: ::libc::c_uint = 1299803506;
pub const HB_SCRIPT_OGHAM: ::libc::c_uint = 1332175213;
pub const HB_SCRIPT_RUNIC: ::libc::c_uint = 1383427698;
pub const HB_SCRIPT_SINHALA: ::libc::c_uint = 1399418472;
pub const HB_SCRIPT_SYRIAC: ::libc::c_uint = 1400468067;
pub const HB_SCRIPT_THAANA: ::libc::c_uint = 1416126817;
pub const HB_SCRIPT_YI: ::libc::c_uint = 1500080489;
pub const HB_SCRIPT_DESERET: ::libc::c_uint = 1148416628;
pub const HB_SCRIPT_GOTHIC: ::libc::c_uint = 1198486632;
pub const HB_SCRIPT_OLD_ITALIC: ::libc::c_uint = 1232363884;
pub const HB_SCRIPT_BUHID: ::libc::c_uint = 1114990692;
pub const HB_SCRIPT_HANUNOO: ::libc::c_uint = 1214344815;
pub const HB_SCRIPT_TAGALOG: ::libc::c_uint = 1416064103;
pub const HB_SCRIPT_TAGBANWA: ::libc::c_uint = 1415669602;
pub const HB_SCRIPT_CYPRIOT: ::libc::c_uint = 1131442804;
pub const HB_SCRIPT_LIMBU: ::libc::c_uint = 1281977698;
pub const HB_SCRIPT_LINEAR_B: ::libc::c_uint = 1281977954;
pub const HB_SCRIPT_OSMANYA: ::libc::c_uint = 1332964705;
pub const HB_SCRIPT_SHAVIAN: ::libc::c_uint = 1399349623;
pub const HB_SCRIPT_TAI_LE: ::libc::c_uint = 1415670885;
pub const HB_SCRIPT_UGARITIC: ::libc::c_uint = 1432838514;
pub const HB_SCRIPT_BUGINESE: ::libc::c_uint = 1114990441;
pub const HB_SCRIPT_COPTIC: ::libc::c_uint = 1131376756;
pub const HB_SCRIPT_GLAGOLITIC: ::libc::c_uint = 1198285159;
pub const HB_SCRIPT_KHAROSHTHI: ::libc::c_uint = 1265131890;
pub const HB_SCRIPT_NEW_TAI_LUE: ::libc::c_uint = 1415670901;
pub const HB_SCRIPT_OLD_PERSIAN: ::libc::c_uint = 1483761007;
pub const HB_SCRIPT_SYLOTI_NAGRI: ::libc::c_uint = 1400466543;
pub const HB_SCRIPT_TIFINAGH: ::libc::c_uint = 1415999079;
pub const HB_SCRIPT_BALINESE: ::libc::c_uint = 1113681001;
pub const HB_SCRIPT_CUNEIFORM: ::libc::c_uint = 1483961720;
pub const HB_SCRIPT_NKO: ::libc::c_uint = 1315663727;
pub const HB_SCRIPT_PHAGS_PA: ::libc::c_uint = 1349017959;
pub const HB_SCRIPT_PHOENICIAN: ::libc::c_uint = 1349021304;
pub const HB_SCRIPT_CARIAN: ::libc::c_uint = 1130459753;
pub const HB_SCRIPT_CHAM: ::libc::c_uint = 1130914157;
pub const HB_SCRIPT_KAYAH_LI: ::libc::c_uint = 1264675945;
pub const HB_SCRIPT_LEPCHA: ::libc::c_uint = 1281716323;
pub const HB_SCRIPT_LYCIAN: ::libc::c_uint = 1283023721;
pub const HB_SCRIPT_LYDIAN: ::libc::c_uint = 1283023977;
pub const HB_SCRIPT_OL_CHIKI: ::libc::c_uint = 1332503403;
pub const HB_SCRIPT_REJANG: ::libc::c_uint = 1382706791;
pub const HB_SCRIPT_SAURASHTRA: ::libc::c_uint = 1398895986;
pub const HB_SCRIPT_SUNDANESE: ::libc::c_uint = 1400204900;
pub const HB_SCRIPT_VAI: ::libc::c_uint = 1449224553;
pub const HB_SCRIPT_AVESTAN: ::libc::c_uint = 1098281844;
pub const HB_SCRIPT_BAMUM: ::libc::c_uint = 1113681269;
pub const HB_SCRIPT_EGYPTIAN_HIEROGLYPHS: ::libc::c_uint = 1164409200;
pub const HB_SCRIPT_IMPERIAL_ARAMAIC: ::libc::c_uint = 1098018153;
pub const HB_SCRIPT_INSCRIPTIONAL_PAHLAVI: ::libc::c_uint = 1349020777;
pub const HB_SCRIPT_INSCRIPTIONAL_PARTHIAN: ::libc::c_uint = 1349678185;
pub const HB_SCRIPT_JAVANESE: ::libc::c_uint = 1247901281;
pub const HB_SCRIPT_KAITHI: ::libc::c_uint = 1265920105;
pub const HB_SCRIPT_LISU: ::libc::c_uint = 1281979253;
pub const HB_SCRIPT_MEETEI_MAYEK: ::libc::c_uint = 1299473769;
pub const HB_SCRIPT_OLD_SOUTH_ARABIAN: ::libc::c_uint = 1398895202;
pub const HB_SCRIPT_OLD_TURKIC: ::libc::c_uint = 1332898664;
pub const HB_SCRIPT_SAMARITAN: ::libc::c_uint = 1398893938;
pub const HB_SCRIPT_TAI_THAM: ::libc::c_uint = 1281453665;
pub const HB_SCRIPT_TAI_VIET: ::libc::c_uint = 1415673460;
pub const HB_SCRIPT_BATAK: ::libc::c_uint = 1113683051;
pub const HB_SCRIPT_BRAHMI: ::libc::c_uint = 1114792296;
pub const HB_SCRIPT_MANDAIC: ::libc::c_uint = 1298230884;
pub const HB_SCRIPT_CHAKMA: ::libc::c_uint = 1130457965;
pub const HB_SCRIPT_MEROITIC_CURSIVE: ::libc::c_uint = 1298494051;
pub const HB_SCRIPT_MEROITIC_HIEROGLYPHS: ::libc::c_uint = 1298494063;
pub const HB_SCRIPT_MIAO: ::libc::c_uint = 1349284452;
pub const HB_SCRIPT_SHARADA: ::libc::c_uint = 1399353956;
pub const HB_SCRIPT_SORA_SOMPENG: ::libc::c_uint = 1399812705;
pub const HB_SCRIPT_TAKRI: ::libc::c_uint = 1415670642;
pub const HB_SCRIPT_BASSA_VAH: ::libc::c_uint = 1113682803;
pub const HB_SCRIPT_CAUCASIAN_ALBANIAN: ::libc::c_uint = 1097295970;
pub const HB_SCRIPT_DUPLOYAN: ::libc::c_uint = 1148547180;
pub const HB_SCRIPT_ELBASAN: ::libc::c_uint = 1164730977;
pub const HB_SCRIPT_GRANTHA: ::libc::c_uint = 1198678382;
pub const HB_SCRIPT_KHOJKI: ::libc::c_uint = 1265135466;
pub const HB_SCRIPT_KHUDAWADI: ::libc::c_uint = 1399418468;
pub const HB_SCRIPT_LINEAR_A: ::libc::c_uint = 1281977953;
pub const HB_SCRIPT_MAHAJANI: ::libc::c_uint = 1298229354;
pub const HB_SCRIPT_MANICHAEAN: ::libc::c_uint = 1298230889;
pub const HB_SCRIPT_MENDE_KIKAKUI: ::libc::c_uint = 1298493028;
pub const HB_SCRIPT_MODI: ::libc::c_uint = 1299145833;
pub const HB_SCRIPT_MRO: ::libc::c_uint = 1299345263;
pub const HB_SCRIPT_NABATAEAN: ::libc::c_uint = 1315070324;
pub const HB_SCRIPT_OLD_NORTH_ARABIAN: ::libc::c_uint = 1315009122;
pub const HB_SCRIPT_OLD_PERMIC: ::libc::c_uint = 1348825709;
pub const HB_SCRIPT_PAHAWH_HMONG: ::libc::c_uint = 1215131239;
pub const HB_SCRIPT_PALMYRENE: ::libc::c_uint = 1348562029;
pub const HB_SCRIPT_PAU_CIN_HAU: ::libc::c_uint = 1348564323;
pub const HB_SCRIPT_PSALTER_PAHLAVI: ::libc::c_uint = 1349020784;
pub const HB_SCRIPT_SIDDHAM: ::libc::c_uint = 1399415908;
pub const HB_SCRIPT_TIRHUTA: ::libc::c_uint = 1416196712;
pub const HB_SCRIPT_WARANG_CITI: ::libc::c_uint = 1466004065;
pub const HB_SCRIPT_AHOM: ::libc::c_uint = 1097363309;
pub const HB_SCRIPT_ANATOLIAN_HIEROGLYPHS: ::libc::c_uint = 1215067511;
pub const HB_SCRIPT_HATRAN: ::libc::c_uint = 1214346354;
pub const HB_SCRIPT_MULTANI: ::libc::c_uint = 1299541108;
pub const HB_SCRIPT_OLD_HUNGARIAN: ::libc::c_uint = 1215655527;
pub const HB_SCRIPT_SIGNWRITING: ::libc::c_uint = 1399287415;
pub const HB_SCRIPT_INVALID: ::libc::c_uint = 0;
pub const _HB_SCRIPT_MAX_VALUE: ::libc::c_uint = !0;
pub const _HB_SCRIPT_MAX_VALUE_SIGNED: ::libc::c_uint = 2147483647;
pub type hb_script_t = Enum_Unnamed2;
#[repr(C)]
#[derive(Copy)]
pub struct Struct_hb_user_data_key_t {
    pub unused: ::libc::c_char,
}
impl ::std::clone::Clone for Struct_hb_user_data_key_t {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for Struct_hb_user_data_key_t {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type hb_user_data_key_t = Struct_hb_user_data_key_t;
pub type hb_destroy_func_t =
    ::std::option::Option<extern "C" fn(user_data: *mut ::libc::c_void)
                              -> ()>;
pub type Enum_Unnamed3 = ::libc::c_uint;
pub const HB_MEMORY_MODE_DUPLICATE: ::libc::c_uint = 0;
pub const HB_MEMORY_MODE_READONLY: ::libc::c_uint = 1;
pub const HB_MEMORY_MODE_WRITABLE: ::libc::c_uint = 2;
pub const HB_MEMORY_MODE_READONLY_MAY_MAKE_WRITABLE: ::libc::c_uint = 3;
pub type hb_memory_mode_t = Enum_Unnamed3;
pub enum Struct_hb_blob_t { }
pub type hb_blob_t = Struct_hb_blob_t;
pub type Enum_Unnamed4 = ::libc::c_uint;
pub const HB_UNICODE_GENERAL_CATEGORY_CONTROL: ::libc::c_uint = 0;
pub const HB_UNICODE_GENERAL_CATEGORY_FORMAT: ::libc::c_uint = 1;
pub const HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED: ::libc::c_uint = 2;
pub const HB_UNICODE_GENERAL_CATEGORY_PRIVATE_USE: ::libc::c_uint = 3;
pub const HB_UNICODE_GENERAL_CATEGORY_SURROGATE: ::libc::c_uint = 4;
pub const HB_UNICODE_GENERAL_CATEGORY_LOWERCASE_LETTER: ::libc::c_uint = 5;
pub const HB_UNICODE_GENERAL_CATEGORY_MODIFIER_LETTER: ::libc::c_uint = 6;
pub const HB_UNICODE_GENERAL_CATEGORY_OTHER_LETTER: ::libc::c_uint = 7;
pub const HB_UNICODE_GENERAL_CATEGORY_TITLECASE_LETTER: ::libc::c_uint = 8;
pub const HB_UNICODE_GENERAL_CATEGORY_UPPERCASE_LETTER: ::libc::c_uint = 9;
pub const HB_UNICODE_GENERAL_CATEGORY_SPACING_MARK: ::libc::c_uint = 10;
pub const HB_UNICODE_GENERAL_CATEGORY_ENCLOSING_MARK: ::libc::c_uint = 11;
pub const HB_UNICODE_GENERAL_CATEGORY_NON_SPACING_MARK: ::libc::c_uint = 12;
pub const HB_UNICODE_GENERAL_CATEGORY_DECIMAL_NUMBER: ::libc::c_uint = 13;
pub const HB_UNICODE_GENERAL_CATEGORY_LETTER_NUMBER: ::libc::c_uint = 14;
pub const HB_UNICODE_GENERAL_CATEGORY_OTHER_NUMBER: ::libc::c_uint = 15;
pub const HB_UNICODE_GENERAL_CATEGORY_CONNECT_PUNCTUATION: ::libc::c_uint =
    16;
pub const HB_UNICODE_GENERAL_CATEGORY_DASH_PUNCTUATION: ::libc::c_uint = 17;
pub const HB_UNICODE_GENERAL_CATEGORY_CLOSE_PUNCTUATION: ::libc::c_uint = 18;
pub const HB_UNICODE_GENERAL_CATEGORY_FINAL_PUNCTUATION: ::libc::c_uint = 19;
pub const HB_UNICODE_GENERAL_CATEGORY_INITIAL_PUNCTUATION: ::libc::c_uint =
    20;
pub const HB_UNICODE_GENERAL_CATEGORY_OTHER_PUNCTUATION: ::libc::c_uint = 21;
pub const HB_UNICODE_GENERAL_CATEGORY_OPEN_PUNCTUATION: ::libc::c_uint = 22;
pub const HB_UNICODE_GENERAL_CATEGORY_CURRENCY_SYMBOL: ::libc::c_uint = 23;
pub const HB_UNICODE_GENERAL_CATEGORY_MODIFIER_SYMBOL: ::libc::c_uint = 24;
pub const HB_UNICODE_GENERAL_CATEGORY_MATH_SYMBOL: ::libc::c_uint = 25;
pub const HB_UNICODE_GENERAL_CATEGORY_OTHER_SYMBOL: ::libc::c_uint = 26;
pub const HB_UNICODE_GENERAL_CATEGORY_LINE_SEPARATOR: ::libc::c_uint = 27;
pub const HB_UNICODE_GENERAL_CATEGORY_PARAGRAPH_SEPARATOR: ::libc::c_uint =
    28;
pub const HB_UNICODE_GENERAL_CATEGORY_SPACE_SEPARATOR: ::libc::c_uint = 29;
pub type hb_unicode_general_category_t = Enum_Unnamed4;
pub type Enum_Unnamed5 = ::libc::c_uint;
pub const HB_UNICODE_COMBINING_CLASS_NOT_REORDERED: ::libc::c_uint = 0;
pub const HB_UNICODE_COMBINING_CLASS_OVERLAY: ::libc::c_uint = 1;
pub const HB_UNICODE_COMBINING_CLASS_NUKTA: ::libc::c_uint = 7;
pub const HB_UNICODE_COMBINING_CLASS_KANA_VOICING: ::libc::c_uint = 8;
pub const HB_UNICODE_COMBINING_CLASS_VIRAMA: ::libc::c_uint = 9;
pub const HB_UNICODE_COMBINING_CLASS_CCC10: ::libc::c_uint = 10;
pub const HB_UNICODE_COMBINING_CLASS_CCC11: ::libc::c_uint = 11;
pub const HB_UNICODE_COMBINING_CLASS_CCC12: ::libc::c_uint = 12;
pub const HB_UNICODE_COMBINING_CLASS_CCC13: ::libc::c_uint = 13;
pub const HB_UNICODE_COMBINING_CLASS_CCC14: ::libc::c_uint = 14;
pub const HB_UNICODE_COMBINING_CLASS_CCC15: ::libc::c_uint = 15;
pub const HB_UNICODE_COMBINING_CLASS_CCC16: ::libc::c_uint = 16;
pub const HB_UNICODE_COMBINING_CLASS_CCC17: ::libc::c_uint = 17;
pub const HB_UNICODE_COMBINING_CLASS_CCC18: ::libc::c_uint = 18;
pub const HB_UNICODE_COMBINING_CLASS_CCC19: ::libc::c_uint = 19;
pub const HB_UNICODE_COMBINING_CLASS_CCC20: ::libc::c_uint = 20;
pub const HB_UNICODE_COMBINING_CLASS_CCC21: ::libc::c_uint = 21;
pub const HB_UNICODE_COMBINING_CLASS_CCC22: ::libc::c_uint = 22;
pub const HB_UNICODE_COMBINING_CLASS_CCC23: ::libc::c_uint = 23;
pub const HB_UNICODE_COMBINING_CLASS_CCC24: ::libc::c_uint = 24;
pub const HB_UNICODE_COMBINING_CLASS_CCC25: ::libc::c_uint = 25;
pub const HB_UNICODE_COMBINING_CLASS_CCC26: ::libc::c_uint = 26;
pub const HB_UNICODE_COMBINING_CLASS_CCC27: ::libc::c_uint = 27;
pub const HB_UNICODE_COMBINING_CLASS_CCC28: ::libc::c_uint = 28;
pub const HB_UNICODE_COMBINING_CLASS_CCC29: ::libc::c_uint = 29;
pub const HB_UNICODE_COMBINING_CLASS_CCC30: ::libc::c_uint = 30;
pub const HB_UNICODE_COMBINING_CLASS_CCC31: ::libc::c_uint = 31;
pub const HB_UNICODE_COMBINING_CLASS_CCC32: ::libc::c_uint = 32;
pub const HB_UNICODE_COMBINING_CLASS_CCC33: ::libc::c_uint = 33;
pub const HB_UNICODE_COMBINING_CLASS_CCC34: ::libc::c_uint = 34;
pub const HB_UNICODE_COMBINING_CLASS_CCC35: ::libc::c_uint = 35;
pub const HB_UNICODE_COMBINING_CLASS_CCC36: ::libc::c_uint = 36;
pub const HB_UNICODE_COMBINING_CLASS_CCC84: ::libc::c_uint = 84;
pub const HB_UNICODE_COMBINING_CLASS_CCC91: ::libc::c_uint = 91;
pub const HB_UNICODE_COMBINING_CLASS_CCC103: ::libc::c_uint = 103;
pub const HB_UNICODE_COMBINING_CLASS_CCC107: ::libc::c_uint = 107;
pub const HB_UNICODE_COMBINING_CLASS_CCC118: ::libc::c_uint = 118;
pub const HB_UNICODE_COMBINING_CLASS_CCC122: ::libc::c_uint = 122;
pub const HB_UNICODE_COMBINING_CLASS_CCC129: ::libc::c_uint = 129;
pub const HB_UNICODE_COMBINING_CLASS_CCC130: ::libc::c_uint = 130;
pub const HB_UNICODE_COMBINING_CLASS_CCC133: ::libc::c_uint = 132;
pub const HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW_LEFT: ::libc::c_uint =
    200;
pub const HB_UNICODE_COMBINING_CLASS_ATTACHED_BELOW: ::libc::c_uint = 202;
pub const HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE: ::libc::c_uint = 214;
pub const HB_UNICODE_COMBINING_CLASS_ATTACHED_ABOVE_RIGHT: ::libc::c_uint =
    216;
pub const HB_UNICODE_COMBINING_CLASS_BELOW_LEFT: ::libc::c_uint = 218;
pub const HB_UNICODE_COMBINING_CLASS_BELOW: ::libc::c_uint = 220;
pub const HB_UNICODE_COMBINING_CLASS_BELOW_RIGHT: ::libc::c_uint = 222;
pub const HB_UNICODE_COMBINING_CLASS_LEFT: ::libc::c_uint = 224;
pub const HB_UNICODE_COMBINING_CLASS_RIGHT: ::libc::c_uint = 226;
pub const HB_UNICODE_COMBINING_CLASS_ABOVE_LEFT: ::libc::c_uint = 228;
pub const HB_UNICODE_COMBINING_CLASS_ABOVE: ::libc::c_uint = 230;
pub const HB_UNICODE_COMBINING_CLASS_ABOVE_RIGHT: ::libc::c_uint = 232;
pub const HB_UNICODE_COMBINING_CLASS_DOUBLE_BELOW: ::libc::c_uint = 233;
pub const HB_UNICODE_COMBINING_CLASS_DOUBLE_ABOVE: ::libc::c_uint = 234;
pub const HB_UNICODE_COMBINING_CLASS_IOTA_SUBSCRIPT: ::libc::c_uint = 240;
pub const HB_UNICODE_COMBINING_CLASS_INVALID: ::libc::c_uint = 255;
pub type hb_unicode_combining_class_t = Enum_Unnamed5;
pub enum Struct_hb_unicode_funcs_t { }
pub type hb_unicode_funcs_t = Struct_hb_unicode_funcs_t;
pub type hb_unicode_combining_class_func_t =
    ::std::option::Option<extern "C" fn(ufuncs: *mut hb_unicode_funcs_t,
                                        unicode: hb_codepoint_t,
                                        user_data: *mut ::libc::c_void)
                              -> hb_unicode_combining_class_t>;
pub type hb_unicode_eastasian_width_func_t =
    ::std::option::Option<extern "C" fn(ufuncs: *mut hb_unicode_funcs_t,
                                        unicode: hb_codepoint_t,
                                        user_data: *mut ::libc::c_void)
                              -> ::libc::c_uint>;
pub type hb_unicode_general_category_func_t =
    ::std::option::Option<extern "C" fn(ufuncs: *mut hb_unicode_funcs_t,
                                        unicode: hb_codepoint_t,
                                        user_data: *mut ::libc::c_void)
                              -> hb_unicode_general_category_t>;
pub type hb_unicode_mirroring_func_t =
    ::std::option::Option<extern "C" fn(ufuncs: *mut hb_unicode_funcs_t,
                                        unicode: hb_codepoint_t,
                                        user_data: *mut ::libc::c_void)
                              -> hb_codepoint_t>;
pub type hb_unicode_script_func_t =
    ::std::option::Option<extern "C" fn(ufuncs: *mut hb_unicode_funcs_t,
                                        unicode: hb_codepoint_t,
                                        user_data: *mut ::libc::c_void)
                              -> hb_script_t>;
pub type hb_unicode_compose_func_t =
    ::std::option::Option<extern "C" fn(ufuncs: *mut hb_unicode_funcs_t,
                                        a: hb_codepoint_t, b: hb_codepoint_t,
                                        ab: *mut hb_codepoint_t,
                                        user_data: *mut ::libc::c_void)
                              -> hb_bool_t>;
pub type hb_unicode_decompose_func_t =
    ::std::option::Option<extern "C" fn(ufuncs: *mut hb_unicode_funcs_t,
                                        ab: hb_codepoint_t,
                                        a: *mut hb_codepoint_t,
                                        b: *mut hb_codepoint_t,
                                        user_data: *mut ::libc::c_void)
                              -> hb_bool_t>;
pub type hb_unicode_decompose_compatibility_func_t =
    ::std::option::Option<extern "C" fn(ufuncs: *mut hb_unicode_funcs_t,
                                        u: hb_codepoint_t,
                                        decomposed: *mut hb_codepoint_t,
                                        user_data: *mut ::libc::c_void)
                              -> ::libc::c_uint>;
pub enum Struct_hb_face_t { }
pub type hb_face_t = Struct_hb_face_t;
pub type hb_reference_table_func_t =
    ::std::option::Option<extern "C" fn(face: *mut hb_face_t, tag: hb_tag_t,
                                        user_data: *mut ::libc::c_void)
                              -> *mut hb_blob_t>;
pub enum Struct_hb_font_t { }
pub type hb_font_t = Struct_hb_font_t;
pub enum Struct_hb_font_funcs_t { }
pub type hb_font_funcs_t = Struct_hb_font_funcs_t;
#[repr(C)]
#[derive(Copy)]
pub struct Struct_hb_glyph_extents_t {
    pub x_bearing: hb_position_t,
    pub y_bearing: hb_position_t,
    pub width: hb_position_t,
    pub height: hb_position_t,
}
impl ::std::clone::Clone for Struct_hb_glyph_extents_t {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for Struct_hb_glyph_extents_t {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type hb_glyph_extents_t = Struct_hb_glyph_extents_t;
pub type hb_font_get_glyph_func_t =
    ::std::option::Option<extern "C" fn(font: *mut hb_font_t,
                                        font_data: *mut ::libc::c_void,
                                        unicode: hb_codepoint_t,
                                        variation_selector: hb_codepoint_t,
                                        glyph: *mut hb_codepoint_t,
                                        user_data: *mut ::libc::c_void)
                              -> hb_bool_t>;
pub type hb_font_get_glyph_advance_func_t =
    ::std::option::Option<extern "C" fn(font: *mut hb_font_t,
                                        font_data: *mut ::libc::c_void,
                                        glyph: hb_codepoint_t,
                                        user_data: *mut ::libc::c_void)
                              -> hb_position_t>;
pub type hb_font_get_glyph_h_advance_func_t =
    hb_font_get_glyph_advance_func_t;
pub type hb_font_get_glyph_v_advance_func_t =
    hb_font_get_glyph_advance_func_t;
pub type hb_font_get_glyph_origin_func_t =
    ::std::option::Option<extern "C" fn(font: *mut hb_font_t,
                                        font_data: *mut ::libc::c_void,
                                        glyph: hb_codepoint_t,
                                        x: *mut hb_position_t,
                                        y: *mut hb_position_t,
                                        user_data: *mut ::libc::c_void)
                              -> hb_bool_t>;
pub type hb_font_get_glyph_h_origin_func_t = hb_font_get_glyph_origin_func_t;
pub type hb_font_get_glyph_v_origin_func_t = hb_font_get_glyph_origin_func_t;
pub type hb_font_get_glyph_kerning_func_t =
    ::std::option::Option<extern "C" fn(font: *mut hb_font_t,
                                        font_data: *mut ::libc::c_void,
                                        first_glyph: hb_codepoint_t,
                                        second_glyph: hb_codepoint_t,
                                        user_data: *mut ::libc::c_void)
                              -> hb_position_t>;
pub type hb_font_get_glyph_h_kerning_func_t =
    hb_font_get_glyph_kerning_func_t;
pub type hb_font_get_glyph_v_kerning_func_t =
    hb_font_get_glyph_kerning_func_t;
pub type hb_font_get_glyph_extents_func_t =
    ::std::option::Option<extern "C" fn(font: *mut hb_font_t,
                                        font_data: *mut ::libc::c_void,
                                        glyph: hb_codepoint_t,
                                        extents: *mut hb_glyph_extents_t,
                                        user_data: *mut ::libc::c_void)
                              -> hb_bool_t>;
pub type hb_font_get_glyph_contour_point_func_t =
    ::std::option::Option<extern "C" fn(font: *mut hb_font_t,
                                        font_data: *mut ::libc::c_void,
                                        glyph: hb_codepoint_t,
                                        point_index: ::libc::c_uint,
                                        x: *mut hb_position_t,
                                        y: *mut hb_position_t,
                                        user_data: *mut ::libc::c_void)
                              -> hb_bool_t>;
pub type hb_font_get_glyph_name_func_t =
    ::std::option::Option<extern "C" fn(font: *mut hb_font_t,
                                        font_data: *mut ::libc::c_void,
                                        glyph: hb_codepoint_t,
                                        name: *mut ::libc::c_char,
                                        size: ::libc::c_uint,
                                        user_data: *mut ::libc::c_void)
                              -> hb_bool_t>;
pub type hb_font_get_glyph_from_name_func_t =
    ::std::option::Option<extern "C" fn(font: *mut hb_font_t,
                                        font_data: *mut ::libc::c_void,
                                        name: *const ::libc::c_char,
                                        len: ::libc::c_int,
                                        glyph: *mut hb_codepoint_t,
                                        user_data: *mut ::libc::c_void)
                              -> hb_bool_t>;
#[repr(C)]
#[derive(Copy)]
pub struct Struct_hb_glyph_info_t {
    pub codepoint: hb_codepoint_t,
    pub mask: hb_mask_t,
    pub cluster: uint32_t,
    pub var1: hb_var_int_t,
    pub var2: hb_var_int_t,
}
impl ::std::clone::Clone for Struct_hb_glyph_info_t {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for Struct_hb_glyph_info_t {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type hb_glyph_info_t = Struct_hb_glyph_info_t;
#[repr(C)]
#[derive(Copy)]
pub struct Struct_hb_glyph_position_t {
    pub x_advance: hb_position_t,
    pub y_advance: hb_position_t,
    pub x_offset: hb_position_t,
    pub y_offset: hb_position_t,
    pub var: hb_var_int_t,
}
impl ::std::clone::Clone for Struct_hb_glyph_position_t {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for Struct_hb_glyph_position_t {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type hb_glyph_position_t = Struct_hb_glyph_position_t;
#[repr(C)]
#[derive(Copy)]
pub struct Struct_hb_segment_properties_t {
    pub direction: hb_direction_t,
    pub script: hb_script_t,
    pub language: hb_language_t,
    pub reserved1: *mut ::libc::c_void,
    pub reserved2: *mut ::libc::c_void,
}
impl ::std::clone::Clone for Struct_hb_segment_properties_t {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for Struct_hb_segment_properties_t {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type hb_segment_properties_t = Struct_hb_segment_properties_t;
pub enum Struct_hb_buffer_t { }
pub type hb_buffer_t = Struct_hb_buffer_t;
pub type Enum_Unnamed6 = ::libc::c_uint;
pub const HB_BUFFER_CONTENT_TYPE_INVALID: ::libc::c_uint = 0;
pub const HB_BUFFER_CONTENT_TYPE_UNICODE: ::libc::c_uint = 1;
pub const HB_BUFFER_CONTENT_TYPE_GLYPHS: ::libc::c_uint = 2;
pub type hb_buffer_content_type_t = Enum_Unnamed6;
pub type Enum_Unnamed7 = ::libc::c_uint;
pub const HB_BUFFER_FLAG_DEFAULT: ::libc::c_uint = 0;
pub const HB_BUFFER_FLAG_BOT: ::libc::c_uint = 1;
pub const HB_BUFFER_FLAG_EOT: ::libc::c_uint = 2;
pub const HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES: ::libc::c_uint = 4;
pub type hb_buffer_flags_t = Enum_Unnamed7;
pub type Enum_Unnamed8 = ::libc::c_uint;
pub const HB_BUFFER_CLUSTER_LEVEL_MONOTONE_GRAPHEMES: ::libc::c_uint = 0;
pub const HB_BUFFER_CLUSTER_LEVEL_MONOTONE_CHARACTERS: ::libc::c_uint = 1;
pub const HB_BUFFER_CLUSTER_LEVEL_CHARACTERS: ::libc::c_uint = 2;
pub const HB_BUFFER_CLUSTER_LEVEL_DEFAULT: ::libc::c_uint = 0;
pub type hb_buffer_cluster_level_t = Enum_Unnamed8;
pub type Enum_Unnamed9 = ::libc::c_uint;
pub const HB_BUFFER_SERIALIZE_FLAG_DEFAULT: ::libc::c_uint = 0;
pub const HB_BUFFER_SERIALIZE_FLAG_NO_CLUSTERS: ::libc::c_uint = 1;
pub const HB_BUFFER_SERIALIZE_FLAG_NO_POSITIONS: ::libc::c_uint = 2;
pub const HB_BUFFER_SERIALIZE_FLAG_NO_GLYPH_NAMES: ::libc::c_uint = 4;
pub const HB_BUFFER_SERIALIZE_FLAG_GLYPH_EXTENTS: ::libc::c_uint = 8;
pub type hb_buffer_serialize_flags_t = Enum_Unnamed9;
pub type Enum_Unnamed10 = ::libc::c_uint;
pub const HB_BUFFER_SERIALIZE_FORMAT_TEXT: ::libc::c_uint = 1413830740;
pub const HB_BUFFER_SERIALIZE_FORMAT_JSON: ::libc::c_uint = 1246973774;
pub const HB_BUFFER_SERIALIZE_FORMAT_INVALID: ::libc::c_uint = 0;
pub type hb_buffer_serialize_format_t = Enum_Unnamed10;
pub enum Struct_hb_set_t { }
pub type hb_set_t = Struct_hb_set_t;
#[repr(C)]
#[derive(Copy)]
pub struct Struct_hb_feature_t {
    pub tag: hb_tag_t,
    pub value: uint32_t,
    pub start: ::libc::c_uint,
    pub end: ::libc::c_uint,
}
impl ::std::clone::Clone for Struct_hb_feature_t {
    fn clone(&self) -> Self { *self }
}
impl ::std::default::Default for Struct_hb_feature_t {
    fn default() -> Self { unsafe { ::std::mem::zeroed() } }
}
pub type hb_feature_t = Struct_hb_feature_t;
pub enum Struct_hb_shape_plan_t { }
pub type hb_shape_plan_t = Struct_hb_shape_plan_t;
extern "C" {
    pub fn hb_tag_from_string(str: *const ::libc::c_char, len: ::libc::c_int)
     -> hb_tag_t;
    pub fn hb_tag_to_string(tag: hb_tag_t, buf: *mut ::libc::c_char) -> ();
    pub fn hb_direction_from_string(str: *const ::libc::c_char,
                                    len: ::libc::c_int) -> hb_direction_t;
    pub fn hb_direction_to_string(direction: hb_direction_t)
     -> *const ::libc::c_char;
    pub fn hb_language_from_string(str: *const ::libc::c_char,
                                   len: ::libc::c_int) -> hb_language_t;
    pub fn hb_language_to_string(language: hb_language_t)
     -> *const ::libc::c_char;
    pub fn hb_language_get_default() -> hb_language_t;
    pub fn hb_script_from_iso15924_tag(tag: hb_tag_t) -> hb_script_t;
    pub fn hb_script_from_string(s: *const ::libc::c_char, len: ::libc::c_int)
     -> hb_script_t;
    pub fn hb_script_to_iso15924_tag(script: hb_script_t) -> hb_tag_t;
    pub fn hb_script_get_horizontal_direction(script: hb_script_t)
     -> hb_direction_t;
    pub fn hb_blob_create(data: *const ::libc::c_char, length: ::libc::c_uint,
                          mode: hb_memory_mode_t,
                          user_data: *mut ::libc::c_void,
                          destroy: hb_destroy_func_t) -> *mut hb_blob_t;
    pub fn hb_blob_create_sub_blob(parent: *mut hb_blob_t,
                                   offset: ::libc::c_uint,
                                   length: ::libc::c_uint) -> *mut hb_blob_t;
    pub fn hb_blob_get_empty() -> *mut hb_blob_t;
    pub fn hb_blob_reference(blob: *mut hb_blob_t) -> *mut hb_blob_t;
    pub fn hb_blob_destroy(blob: *mut hb_blob_t) -> ();
    pub fn hb_blob_set_user_data(blob: *mut hb_blob_t,
                                 key: *mut hb_user_data_key_t,
                                 data: *mut ::libc::c_void,
                                 destroy: hb_destroy_func_t,
                                 replace: hb_bool_t) -> hb_bool_t;
    pub fn hb_blob_get_user_data(blob: *mut hb_blob_t,
                                 key: *mut hb_user_data_key_t)
     -> *mut ::libc::c_void;
    pub fn hb_blob_make_immutable(blob: *mut hb_blob_t) -> ();
    pub fn hb_blob_is_immutable(blob: *mut hb_blob_t) -> hb_bool_t;
    pub fn hb_blob_get_length(blob: *mut hb_blob_t) -> ::libc::c_uint;
    pub fn hb_blob_get_data(blob: *mut hb_blob_t, length: *mut ::libc::c_uint)
     -> *const ::libc::c_char;
    pub fn hb_blob_get_data_writable(blob: *mut hb_blob_t,
                                     length: *mut ::libc::c_uint)
     -> *mut ::libc::c_char;
    pub fn hb_unicode_funcs_get_default() -> *mut hb_unicode_funcs_t;
    pub fn hb_unicode_funcs_create(parent: *mut hb_unicode_funcs_t)
     -> *mut hb_unicode_funcs_t;
    pub fn hb_unicode_funcs_get_empty() -> *mut hb_unicode_funcs_t;
    pub fn hb_unicode_funcs_reference(ufuncs: *mut hb_unicode_funcs_t)
     -> *mut hb_unicode_funcs_t;
    pub fn hb_unicode_funcs_destroy(ufuncs: *mut hb_unicode_funcs_t) -> ();
    pub fn hb_unicode_funcs_set_user_data(ufuncs: *mut hb_unicode_funcs_t,
                                          key: *mut hb_user_data_key_t,
                                          data: *mut ::libc::c_void,
                                          destroy: hb_destroy_func_t,
                                          replace: hb_bool_t) -> hb_bool_t;
    pub fn hb_unicode_funcs_get_user_data(ufuncs: *mut hb_unicode_funcs_t,
                                          key: *mut hb_user_data_key_t)
     -> *mut ::libc::c_void;
    pub fn hb_unicode_funcs_make_immutable(ufuncs: *mut hb_unicode_funcs_t)
     -> ();
    pub fn hb_unicode_funcs_is_immutable(ufuncs: *mut hb_unicode_funcs_t)
     -> hb_bool_t;
    pub fn hb_unicode_funcs_get_parent(ufuncs: *mut hb_unicode_funcs_t)
     -> *mut hb_unicode_funcs_t;
    pub fn hb_unicode_funcs_set_combining_class_func(ufuncs:
                                                         *mut hb_unicode_funcs_t,
                                                     func:
                                                         hb_unicode_combining_class_func_t,
                                                     user_data:
                                                         *mut ::libc::c_void,
                                                     destroy:
                                                         hb_destroy_func_t)
     -> ();
    pub fn hb_unicode_funcs_set_eastasian_width_func(ufuncs:
                                                         *mut hb_unicode_funcs_t,
                                                     func:
                                                         hb_unicode_eastasian_width_func_t,
                                                     user_data:
                                                         *mut ::libc::c_void,
                                                     destroy:
                                                         hb_destroy_func_t)
     -> ();
    pub fn hb_unicode_funcs_set_general_category_func(ufuncs:
                                                          *mut hb_unicode_funcs_t,
                                                      func:
                                                          hb_unicode_general_category_func_t,
                                                      user_data:
                                                          *mut ::libc::c_void,
                                                      destroy:
                                                          hb_destroy_func_t)
     -> ();
    pub fn hb_unicode_funcs_set_mirroring_func(ufuncs:
                                                   *mut hb_unicode_funcs_t,
                                               func:
                                                   hb_unicode_mirroring_func_t,
                                               user_data: *mut ::libc::c_void,
                                               destroy: hb_destroy_func_t)
     -> ();
    pub fn hb_unicode_funcs_set_script_func(ufuncs: *mut hb_unicode_funcs_t,
                                            func: hb_unicode_script_func_t,
                                            user_data: *mut ::libc::c_void,
                                            destroy: hb_destroy_func_t) -> ();
    pub fn hb_unicode_funcs_set_compose_func(ufuncs: *mut hb_unicode_funcs_t,
                                             func: hb_unicode_compose_func_t,
                                             user_data: *mut ::libc::c_void,
                                             destroy: hb_destroy_func_t)
     -> ();
    pub fn hb_unicode_funcs_set_decompose_func(ufuncs:
                                                   *mut hb_unicode_funcs_t,
                                               func:
                                                   hb_unicode_decompose_func_t,
                                               user_data: *mut ::libc::c_void,
                                               destroy: hb_destroy_func_t)
     -> ();
    pub fn hb_unicode_funcs_set_decompose_compatibility_func(ufuncs:
                                                                 *mut hb_unicode_funcs_t,
                                                             func:
                                                                 hb_unicode_decompose_compatibility_func_t,
                                                             user_data:
                                                                 *mut ::libc::c_void,
                                                             destroy:
                                                                 hb_destroy_func_t)
     -> ();
    pub fn hb_unicode_combining_class(ufuncs: *mut hb_unicode_funcs_t,
                                      unicode: hb_codepoint_t)
     -> hb_unicode_combining_class_t;
    pub fn hb_unicode_eastasian_width(ufuncs: *mut hb_unicode_funcs_t,
                                      unicode: hb_codepoint_t)
     -> ::libc::c_uint;
    pub fn hb_unicode_general_category(ufuncs: *mut hb_unicode_funcs_t,
                                       unicode: hb_codepoint_t)
     -> hb_unicode_general_category_t;
    pub fn hb_unicode_mirroring(ufuncs: *mut hb_unicode_funcs_t,
                                unicode: hb_codepoint_t) -> hb_codepoint_t;
    pub fn hb_unicode_script(ufuncs: *mut hb_unicode_funcs_t,
                             unicode: hb_codepoint_t) -> hb_script_t;
    pub fn hb_unicode_compose(ufuncs: *mut hb_unicode_funcs_t,
                              a: hb_codepoint_t, b: hb_codepoint_t,
                              ab: *mut hb_codepoint_t) -> hb_bool_t;
    pub fn hb_unicode_decompose(ufuncs: *mut hb_unicode_funcs_t,
                                ab: hb_codepoint_t, a: *mut hb_codepoint_t,
                                b: *mut hb_codepoint_t) -> hb_bool_t;
    pub fn hb_unicode_decompose_compatibility(ufuncs: *mut hb_unicode_funcs_t,
                                              u: hb_codepoint_t,
                                              decomposed: *mut hb_codepoint_t)
     -> ::libc::c_uint;
    pub fn hb_face_create(blob: *mut hb_blob_t, index: ::libc::c_uint)
     -> *mut hb_face_t;
    pub fn hb_face_create_for_tables(reference_table_func:
                                         hb_reference_table_func_t,
                                     user_data: *mut ::libc::c_void,
                                     destroy: hb_destroy_func_t)
     -> *mut hb_face_t;
    pub fn hb_face_get_empty() -> *mut hb_face_t;
    pub fn hb_face_reference(face: *mut hb_face_t) -> *mut hb_face_t;
    pub fn hb_face_destroy(face: *mut hb_face_t) -> ();
    pub fn hb_face_set_user_data(face: *mut hb_face_t,
                                 key: *mut hb_user_data_key_t,
                                 data: *mut ::libc::c_void,
                                 destroy: hb_destroy_func_t,
                                 replace: hb_bool_t) -> hb_bool_t;
    pub fn hb_face_get_user_data(face: *mut hb_face_t,
                                 key: *mut hb_user_data_key_t)
     -> *mut ::libc::c_void;
    pub fn hb_face_make_immutable(face: *mut hb_face_t) -> ();
    pub fn hb_face_is_immutable(face: *mut hb_face_t) -> hb_bool_t;
    pub fn hb_face_reference_table(face: *mut hb_face_t, tag: hb_tag_t)
     -> *mut hb_blob_t;
    pub fn hb_face_reference_blob(face: *mut hb_face_t) -> *mut hb_blob_t;
    pub fn hb_face_set_index(face: *mut hb_face_t, index: ::libc::c_uint)
     -> ();
    pub fn hb_face_get_index(face: *mut hb_face_t) -> ::libc::c_uint;
    pub fn hb_face_set_upem(face: *mut hb_face_t, upem: ::libc::c_uint) -> ();
    pub fn hb_face_get_upem(face: *mut hb_face_t) -> ::libc::c_uint;
    pub fn hb_face_set_glyph_count(face: *mut hb_face_t,
                                   glyph_count: ::libc::c_uint) -> ();
    pub fn hb_face_get_glyph_count(face: *mut hb_face_t) -> ::libc::c_uint;
    pub fn hb_font_funcs_create() -> *mut hb_font_funcs_t;
    pub fn hb_font_funcs_get_empty() -> *mut hb_font_funcs_t;
    pub fn hb_font_funcs_reference(ffuncs: *mut hb_font_funcs_t)
     -> *mut hb_font_funcs_t;
    pub fn hb_font_funcs_destroy(ffuncs: *mut hb_font_funcs_t) -> ();
    pub fn hb_font_funcs_set_user_data(ffuncs: *mut hb_font_funcs_t,
                                       key: *mut hb_user_data_key_t,
                                       data: *mut ::libc::c_void,
                                       destroy: hb_destroy_func_t,
                                       replace: hb_bool_t) -> hb_bool_t;
    pub fn hb_font_funcs_get_user_data(ffuncs: *mut hb_font_funcs_t,
                                       key: *mut hb_user_data_key_t)
     -> *mut ::libc::c_void;
    pub fn hb_font_funcs_make_immutable(ffuncs: *mut hb_font_funcs_t) -> ();
    pub fn hb_font_funcs_is_immutable(ffuncs: *mut hb_font_funcs_t)
     -> hb_bool_t;
    pub fn hb_font_funcs_set_glyph_func(ffuncs: *mut hb_font_funcs_t,
                                        func: hb_font_get_glyph_func_t,
                                        user_data: *mut ::libc::c_void,
                                        destroy: hb_destroy_func_t) -> ();
    pub fn hb_font_funcs_set_glyph_h_advance_func(ffuncs:
                                                      *mut hb_font_funcs_t,
                                                  func:
                                                      hb_font_get_glyph_h_advance_func_t,
                                                  user_data:
                                                      *mut ::libc::c_void,
                                                  destroy: hb_destroy_func_t)
     -> ();
    pub fn hb_font_funcs_set_glyph_v_advance_func(ffuncs:
                                                      *mut hb_font_funcs_t,
                                                  func:
                                                      hb_font_get_glyph_v_advance_func_t,
                                                  user_data:
                                                      *mut ::libc::c_void,
                                                  destroy: hb_destroy_func_t)
     -> ();
    pub fn hb_font_funcs_set_glyph_h_origin_func(ffuncs: *mut hb_font_funcs_t,
                                                 func:
                                                     hb_font_get_glyph_h_origin_func_t,
                                                 user_data:
                                                     *mut ::libc::c_void,
                                                 destroy: hb_destroy_func_t)
     -> ();
    pub fn hb_font_funcs_set_glyph_v_origin_func(ffuncs: *mut hb_font_funcs_t,
                                                 func:
                                                     hb_font_get_glyph_v_origin_func_t,
                                                 user_data:
                                                     *mut ::libc::c_void,
                                                 destroy: hb_destroy_func_t)
     -> ();
    pub fn hb_font_funcs_set_glyph_h_kerning_func(ffuncs:
                                                      *mut hb_font_funcs_t,
                                                  func:
                                                      hb_font_get_glyph_h_kerning_func_t,
                                                  user_data:
                                                      *mut ::libc::c_void,
                                                  destroy: hb_destroy_func_t)
     -> ();
    pub fn hb_font_funcs_set_glyph_v_kerning_func(ffuncs:
                                                      *mut hb_font_funcs_t,
                                                  func:
                                                      hb_font_get_glyph_v_kerning_func_t,
                                                  user_data:
                                                      *mut ::libc::c_void,
                                                  destroy: hb_destroy_func_t)
     -> ();
    pub fn hb_font_funcs_set_glyph_extents_func(ffuncs: *mut hb_font_funcs_t,
                                                func:
                                                    hb_font_get_glyph_extents_func_t,
                                                user_data:
                                                    *mut ::libc::c_void,
                                                destroy: hb_destroy_func_t)
     -> ();
    pub fn hb_font_funcs_set_glyph_contour_point_func(ffuncs:
                                                          *mut hb_font_funcs_t,
                                                      func:
                                                          hb_font_get_glyph_contour_point_func_t,
                                                      user_data:
                                                          *mut ::libc::c_void,
                                                      destroy:
                                                          hb_destroy_func_t)
     -> ();
    pub fn hb_font_funcs_set_glyph_name_func(ffuncs: *mut hb_font_funcs_t,
                                             func:
                                                 hb_font_get_glyph_name_func_t,
                                             user_data: *mut ::libc::c_void,
                                             destroy: hb_destroy_func_t)
     -> ();
    pub fn hb_font_funcs_set_glyph_from_name_func(ffuncs:
                                                      *mut hb_font_funcs_t,
                                                  func:
                                                      hb_font_get_glyph_from_name_func_t,
                                                  user_data:
                                                      *mut ::libc::c_void,
                                                  destroy: hb_destroy_func_t)
     -> ();
    pub fn hb_font_get_glyph(font: *mut hb_font_t, unicode: hb_codepoint_t,
                             variation_selector: hb_codepoint_t,
                             glyph: *mut hb_codepoint_t) -> hb_bool_t;
    pub fn hb_font_get_glyph_h_advance(font: *mut hb_font_t,
                                       glyph: hb_codepoint_t)
     -> hb_position_t;
    pub fn hb_font_get_glyph_v_advance(font: *mut hb_font_t,
                                       glyph: hb_codepoint_t)
     -> hb_position_t;
    pub fn hb_font_get_glyph_h_origin(font: *mut hb_font_t,
                                      glyph: hb_codepoint_t,
                                      x: *mut hb_position_t,
                                      y: *mut hb_position_t) -> hb_bool_t;
    pub fn hb_font_get_glyph_v_origin(font: *mut hb_font_t,
                                      glyph: hb_codepoint_t,
                                      x: *mut hb_position_t,
                                      y: *mut hb_position_t) -> hb_bool_t;
    pub fn hb_font_get_glyph_h_kerning(font: *mut hb_font_t,
                                       left_glyph: hb_codepoint_t,
                                       right_glyph: hb_codepoint_t)
     -> hb_position_t;
    pub fn hb_font_get_glyph_v_kerning(font: *mut hb_font_t,
                                       top_glyph: hb_codepoint_t,
                                       bottom_glyph: hb_codepoint_t)
     -> hb_position_t;
    pub fn hb_font_get_glyph_extents(font: *mut hb_font_t,
                                     glyph: hb_codepoint_t,
                                     extents: *mut hb_glyph_extents_t)
     -> hb_bool_t;
    pub fn hb_font_get_glyph_contour_point(font: *mut hb_font_t,
                                           glyph: hb_codepoint_t,
                                           point_index: ::libc::c_uint,
                                           x: *mut hb_position_t,
                                           y: *mut hb_position_t)
     -> hb_bool_t;
    pub fn hb_font_get_glyph_name(font: *mut hb_font_t, glyph: hb_codepoint_t,
                                  name: *mut ::libc::c_char,
                                  size: ::libc::c_uint) -> hb_bool_t;
    pub fn hb_font_get_glyph_from_name(font: *mut hb_font_t,
                                       name: *const ::libc::c_char,
                                       len: ::libc::c_int,
                                       glyph: *mut hb_codepoint_t)
     -> hb_bool_t;
    pub fn hb_font_get_glyph_advance_for_direction(font: *mut hb_font_t,
                                                   glyph: hb_codepoint_t,
                                                   direction: hb_direction_t,
                                                   x: *mut hb_position_t,
                                                   y: *mut hb_position_t)
     -> ();
    pub fn hb_font_get_glyph_origin_for_direction(font: *mut hb_font_t,
                                                  glyph: hb_codepoint_t,
                                                  direction: hb_direction_t,
                                                  x: *mut hb_position_t,
                                                  y: *mut hb_position_t)
     -> ();
    pub fn hb_font_add_glyph_origin_for_direction(font: *mut hb_font_t,
                                                  glyph: hb_codepoint_t,
                                                  direction: hb_direction_t,
                                                  x: *mut hb_position_t,
                                                  y: *mut hb_position_t)
     -> ();
    pub fn hb_font_subtract_glyph_origin_for_direction(font: *mut hb_font_t,
                                                       glyph: hb_codepoint_t,
                                                       direction:
                                                           hb_direction_t,
                                                       x: *mut hb_position_t,
                                                       y: *mut hb_position_t)
     -> ();
    pub fn hb_font_get_glyph_kerning_for_direction(font: *mut hb_font_t,
                                                   first_glyph:
                                                       hb_codepoint_t,
                                                   second_glyph:
                                                       hb_codepoint_t,
                                                   direction: hb_direction_t,
                                                   x: *mut hb_position_t,
                                                   y: *mut hb_position_t)
     -> ();
    pub fn hb_font_get_glyph_extents_for_origin(font: *mut hb_font_t,
                                                glyph: hb_codepoint_t,
                                                direction: hb_direction_t,
                                                extents:
                                                    *mut hb_glyph_extents_t)
     -> hb_bool_t;
    pub fn hb_font_get_glyph_contour_point_for_origin(font: *mut hb_font_t,
                                                      glyph: hb_codepoint_t,
                                                      point_index:
                                                          ::libc::c_uint,
                                                      direction:
                                                          hb_direction_t,
                                                      x: *mut hb_position_t,
                                                      y: *mut hb_position_t)
     -> hb_bool_t;
    pub fn hb_font_glyph_to_string(font: *mut hb_font_t,
                                   glyph: hb_codepoint_t,
                                   s: *mut ::libc::c_char,
                                   size: ::libc::c_uint) -> ();
    pub fn hb_font_glyph_from_string(font: *mut hb_font_t,
                                     s: *const ::libc::c_char,
                                     len: ::libc::c_int,
                                     glyph: *mut hb_codepoint_t) -> hb_bool_t;
    pub fn hb_font_create(face: *mut hb_face_t) -> *mut hb_font_t;

    #[cfg(any(target_os = "android", all(unix, not(target_os = "macos"))))]
    pub fn hb_ft_font_create_referenced(face: freetype_sys::FT_Face) -> *mut hb_font_t;

    pub fn hb_font_create_sub_font(parent: *mut hb_font_t) -> *mut hb_font_t;
    pub fn hb_font_get_empty() -> *mut hb_font_t;
    pub fn hb_font_reference(font: *mut hb_font_t) -> *mut hb_font_t;
    pub fn hb_font_destroy(font: *mut hb_font_t) -> ();
    pub fn hb_font_set_user_data(font: *mut hb_font_t,
                                 key: *mut hb_user_data_key_t,
                                 data: *mut ::libc::c_void,
                                 destroy: hb_destroy_func_t,
                                 replace: hb_bool_t) -> hb_bool_t;
    pub fn hb_font_get_user_data(font: *mut hb_font_t,
                                 key: *mut hb_user_data_key_t)
     -> *mut ::libc::c_void;
    pub fn hb_font_make_immutable(font: *mut hb_font_t) -> ();
    pub fn hb_font_is_immutable(font: *mut hb_font_t) -> hb_bool_t;
    pub fn hb_font_get_parent(font: *mut hb_font_t) -> *mut hb_font_t;
    pub fn hb_font_get_face(font: *mut hb_font_t) -> *mut hb_face_t;
    pub fn hb_font_set_funcs(font: *mut hb_font_t,
                             klass: *mut hb_font_funcs_t,
                             font_data: *mut ::libc::c_void,
                             destroy: hb_destroy_func_t) -> ();
    pub fn hb_font_set_funcs_data(font: *mut hb_font_t,
                                  font_data: *mut ::libc::c_void,
                                  destroy: hb_destroy_func_t) -> ();
    pub fn hb_font_set_scale(font: *mut hb_font_t, x_scale: ::libc::c_int,
                             y_scale: ::libc::c_int) -> ();
    pub fn hb_font_get_scale(font: *mut hb_font_t,
                             x_scale: *mut ::libc::c_int,
                             y_scale: *mut ::libc::c_int) -> ();
    pub fn hb_font_set_ppem(font: *mut hb_font_t, x_ppem: ::libc::c_uint,
                            y_ppem: ::libc::c_uint) -> ();
    pub fn hb_font_get_ppem(font: *mut hb_font_t, x_ppem: *mut ::libc::c_uint,
                            y_ppem: *mut ::libc::c_uint) -> ();
    pub fn hb_segment_properties_equal(a: *const hb_segment_properties_t,
                                       b: *const hb_segment_properties_t)
     -> hb_bool_t;
    pub fn hb_segment_properties_hash(p: *const hb_segment_properties_t)
     -> ::libc::c_uint;
    pub fn hb_buffer_create() -> *mut hb_buffer_t;
    pub fn hb_buffer_get_empty() -> *mut hb_buffer_t;
    pub fn hb_buffer_reference(buffer: *mut hb_buffer_t) -> *mut hb_buffer_t;
    pub fn hb_buffer_destroy(buffer: *mut hb_buffer_t) -> ();
    pub fn hb_buffer_set_user_data(buffer: *mut hb_buffer_t,
                                   key: *mut hb_user_data_key_t,
                                   data: *mut ::libc::c_void,
                                   destroy: hb_destroy_func_t,
                                   replace: hb_bool_t) -> hb_bool_t;
    pub fn hb_buffer_get_user_data(buffer: *mut hb_buffer_t,
                                   key: *mut hb_user_data_key_t)
     -> *mut ::libc::c_void;
    pub fn hb_buffer_set_content_type(buffer: *mut hb_buffer_t,
                                      content_type: hb_buffer_content_type_t)
     -> ();
    pub fn hb_buffer_get_content_type(buffer: *mut hb_buffer_t)
     -> hb_buffer_content_type_t;
    pub fn hb_buffer_set_unicode_funcs(buffer: *mut hb_buffer_t,
                                       unicode_funcs: *mut hb_unicode_funcs_t)
     -> ();
    pub fn hb_buffer_get_unicode_funcs(buffer: *mut hb_buffer_t)
     -> *mut hb_unicode_funcs_t;
    pub fn hb_buffer_set_direction(buffer: *mut hb_buffer_t,
                                   direction: hb_direction_t) -> ();
    pub fn hb_buffer_get_direction(buffer: *mut hb_buffer_t)
     -> hb_direction_t;
    pub fn hb_buffer_set_script(buffer: *mut hb_buffer_t, script: hb_script_t)
     -> ();
    pub fn hb_buffer_get_script(buffer: *mut hb_buffer_t) -> hb_script_t;
    pub fn hb_buffer_set_language(buffer: *mut hb_buffer_t,
                                  language: hb_language_t) -> ();
    pub fn hb_buffer_get_language(buffer: *mut hb_buffer_t) -> hb_language_t;
    pub fn hb_buffer_set_segment_properties(buffer: *mut hb_buffer_t,
                                            props:
                                                *const hb_segment_properties_t)
     -> ();
    pub fn hb_buffer_get_segment_properties(buffer: *mut hb_buffer_t,
                                            props:
                                                *mut hb_segment_properties_t)
     -> ();
    pub fn hb_buffer_guess_segment_properties(buffer: *mut hb_buffer_t) -> ();
    pub fn hb_buffer_set_flags(buffer: *mut hb_buffer_t,
                               flags: hb_buffer_flags_t) -> ();
    pub fn hb_buffer_get_flags(buffer: *mut hb_buffer_t) -> hb_buffer_flags_t;
    pub fn hb_buffer_set_cluster_level(buffer: *mut hb_buffer_t,
                                       cluster_level:
                                           hb_buffer_cluster_level_t) -> ();
    pub fn hb_buffer_get_cluster_level(buffer: *mut hb_buffer_t)
     -> hb_buffer_cluster_level_t;
    pub fn hb_buffer_set_replacement_codepoint(buffer: *mut hb_buffer_t,
                                               replacement: hb_codepoint_t)
     -> ();
    pub fn hb_buffer_get_replacement_codepoint(buffer: *mut hb_buffer_t)
     -> hb_codepoint_t;
    pub fn hb_buffer_reset(buffer: *mut hb_buffer_t) -> ();
    pub fn hb_buffer_clear_contents(buffer: *mut hb_buffer_t) -> ();
    pub fn hb_buffer_pre_allocate(buffer: *mut hb_buffer_t,
                                  size: ::libc::c_uint) -> hb_bool_t;
    pub fn hb_buffer_allocation_successful(buffer: *mut hb_buffer_t)
     -> hb_bool_t;
    pub fn hb_buffer_reverse(buffer: *mut hb_buffer_t) -> ();
    pub fn hb_buffer_reverse_range(buffer: *mut hb_buffer_t,
                                   start: ::libc::c_uint, end: ::libc::c_uint)
     -> ();
    pub fn hb_buffer_reverse_clusters(buffer: *mut hb_buffer_t) -> ();
    pub fn hb_buffer_add(buffer: *mut hb_buffer_t, codepoint: hb_codepoint_t,
                         cluster: ::libc::c_uint) -> ();
    pub fn hb_buffer_add_utf8(buffer: *mut hb_buffer_t,
                              text: *const ::libc::c_char,
                              text_length: ::libc::c_int,
                              item_offset: ::libc::c_uint,
                              item_length: ::libc::c_int) -> ();
    pub fn hb_buffer_add_utf16(buffer: *mut hb_buffer_t,
                               text: *const uint16_t,
                               text_length: ::libc::c_int,
                               item_offset: ::libc::c_uint,
                               item_length: ::libc::c_int) -> ();
    pub fn hb_buffer_add_utf32(buffer: *mut hb_buffer_t,
                               text: *const uint32_t,
                               text_length: ::libc::c_int,
                               item_offset: ::libc::c_uint,
                               item_length: ::libc::c_int) -> ();
    pub fn hb_buffer_add_latin1(buffer: *mut hb_buffer_t,
                                text: *const uint8_t,
                                text_length: ::libc::c_int,
                                item_offset: ::libc::c_uint,
                                item_length: ::libc::c_int) -> ();
    pub fn hb_buffer_add_codepoints(buffer: *mut hb_buffer_t,
                                    text: *const hb_codepoint_t,
                                    text_length: ::libc::c_int,
                                    item_offset: ::libc::c_uint,
                                    item_length: ::libc::c_int) -> ();
    pub fn hb_buffer_set_length(buffer: *mut hb_buffer_t,
                                length: ::libc::c_uint) -> hb_bool_t;
    pub fn hb_buffer_get_length(buffer: *mut hb_buffer_t) -> ::libc::c_uint;
    pub fn hb_buffer_get_glyph_infos(buffer: *mut hb_buffer_t,
                                     length: *mut ::libc::c_uint)
     -> *mut hb_glyph_info_t;
    pub fn hb_buffer_get_glyph_positions(buffer: *mut hb_buffer_t,
                                         length: *mut ::libc::c_uint)
     -> *mut hb_glyph_position_t;
    pub fn hb_buffer_normalize_glyphs(buffer: *mut hb_buffer_t) -> ();
    pub fn hb_buffer_serialize_format_from_string(str: *const ::libc::c_char,
                                                  len: ::libc::c_int)
     -> hb_buffer_serialize_format_t;
    pub fn hb_buffer_serialize_format_to_string(format:
                                                    hb_buffer_serialize_format_t)
     -> *const ::libc::c_char;
    pub fn hb_buffer_serialize_list_formats() -> *mut *const ::libc::c_char;
    pub fn hb_buffer_serialize_glyphs(buffer: *mut hb_buffer_t,
                                      start: ::libc::c_uint,
                                      end: ::libc::c_uint,
                                      buf: *mut ::libc::c_char,
                                      buf_size: ::libc::c_uint,
                                      buf_consumed: *mut ::libc::c_uint,
                                      font: *mut hb_font_t,
                                      format: hb_buffer_serialize_format_t,
                                      flags: hb_buffer_serialize_flags_t)
     -> ::libc::c_uint;
    pub fn hb_buffer_deserialize_glyphs(buffer: *mut hb_buffer_t,
                                        buf: *const ::libc::c_char,
                                        buf_len: ::libc::c_int,
                                        end_ptr: *mut *const ::libc::c_char,
                                        font: *mut hb_font_t,
                                        format: hb_buffer_serialize_format_t)
     -> hb_bool_t;
    pub fn hb_set_create() -> *mut hb_set_t;
    pub fn hb_set_get_empty() -> *mut hb_set_t;
    pub fn hb_set_reference(set: *mut hb_set_t) -> *mut hb_set_t;
    pub fn hb_set_destroy(set: *mut hb_set_t) -> ();
    pub fn hb_set_set_user_data(set: *mut hb_set_t,
                                key: *mut hb_user_data_key_t,
                                data: *mut ::libc::c_void,
                                destroy: hb_destroy_func_t,
                                replace: hb_bool_t) -> hb_bool_t;
    pub fn hb_set_get_user_data(set: *mut hb_set_t,
                                key: *mut hb_user_data_key_t)
     -> *mut ::libc::c_void;
    pub fn hb_set_allocation_successful(set: *const hb_set_t) -> hb_bool_t;
    pub fn hb_set_clear(set: *mut hb_set_t) -> ();
    pub fn hb_set_is_empty(set: *const hb_set_t) -> hb_bool_t;
    pub fn hb_set_has(set: *const hb_set_t, codepoint: hb_codepoint_t)
     -> hb_bool_t;
    pub fn hb_set_add(set: *mut hb_set_t, codepoint: hb_codepoint_t) -> ();
    pub fn hb_set_add_range(set: *mut hb_set_t, first: hb_codepoint_t,
                            last: hb_codepoint_t) -> ();
    pub fn hb_set_del(set: *mut hb_set_t, codepoint: hb_codepoint_t) -> ();
    pub fn hb_set_del_range(set: *mut hb_set_t, first: hb_codepoint_t,
                            last: hb_codepoint_t) -> ();
    pub fn hb_set_is_equal(set: *const hb_set_t, other: *const hb_set_t)
     -> hb_bool_t;
    pub fn hb_set_set(set: *mut hb_set_t, other: *const hb_set_t) -> ();
    pub fn hb_set_union(set: *mut hb_set_t, other: *const hb_set_t) -> ();
    pub fn hb_set_intersect(set: *mut hb_set_t, other: *const hb_set_t) -> ();
    pub fn hb_set_subtract(set: *mut hb_set_t, other: *const hb_set_t) -> ();
    pub fn hb_set_symmetric_difference(set: *mut hb_set_t,
                                       other: *const hb_set_t) -> ();
    pub fn hb_set_invert(set: *mut hb_set_t) -> ();
    pub fn hb_set_get_population(set: *const hb_set_t) -> ::libc::c_uint;
    pub fn hb_set_get_min(set: *const hb_set_t) -> hb_codepoint_t;
    pub fn hb_set_get_max(set: *const hb_set_t) -> hb_codepoint_t;
    pub fn hb_set_next(set: *const hb_set_t, codepoint: *mut hb_codepoint_t)
     -> hb_bool_t;
    pub fn hb_set_next_range(set: *const hb_set_t, first: *mut hb_codepoint_t,
                             last: *mut hb_codepoint_t) -> hb_bool_t;
    pub fn hb_feature_from_string(str: *const ::libc::c_char,
                                  len: ::libc::c_int,
                                  feature: *mut hb_feature_t) -> hb_bool_t;
    pub fn hb_feature_to_string(feature: *mut hb_feature_t,
                                buf: *mut ::libc::c_char,
                                size: ::libc::c_uint) -> ();
    pub fn hb_shape(font: *mut hb_font_t, buffer: *mut hb_buffer_t,
                    features: *const hb_feature_t,
                    num_features: ::libc::c_uint) -> ();
    pub fn hb_shape_full(font: *mut hb_font_t, buffer: *mut hb_buffer_t,
                         features: *const hb_feature_t,
                         num_features: ::libc::c_uint,
                         shaper_list: *const *const ::libc::c_char)
     -> hb_bool_t;
    pub fn hb_shape_list_shapers() -> *mut *const ::libc::c_char;
    pub fn hb_shape_plan_create(face: *mut hb_face_t,
                                props: *const hb_segment_properties_t,
                                user_features: *const hb_feature_t,
                                num_user_features: ::libc::c_uint,
                                shaper_list: *const *const ::libc::c_char)
     -> *mut hb_shape_plan_t;
    pub fn hb_shape_plan_create_cached(face: *mut hb_face_t,
                                       props: *const hb_segment_properties_t,
                                       user_features: *const hb_feature_t,
                                       num_user_features: ::libc::c_uint,
                                       shaper_list:
                                           *const *const ::libc::c_char)
     -> *mut hb_shape_plan_t;
    pub fn hb_shape_plan_get_empty() -> *mut hb_shape_plan_t;
    pub fn hb_shape_plan_reference(shape_plan: *mut hb_shape_plan_t)
     -> *mut hb_shape_plan_t;
    pub fn hb_shape_plan_destroy(shape_plan: *mut hb_shape_plan_t) -> ();
    pub fn hb_shape_plan_set_user_data(shape_plan: *mut hb_shape_plan_t,
                                       key: *mut hb_user_data_key_t,
                                       data: *mut ::libc::c_void,
                                       destroy: hb_destroy_func_t,
                                       replace: hb_bool_t) -> hb_bool_t;
    pub fn hb_shape_plan_get_user_data(shape_plan: *mut hb_shape_plan_t,
                                       key: *mut hb_user_data_key_t)
     -> *mut ::libc::c_void;
    pub fn hb_shape_plan_execute(shape_plan: *mut hb_shape_plan_t,
                                 font: *mut hb_font_t,
                                 buffer: *mut hb_buffer_t,
                                 features: *const hb_feature_t,
                                 num_features: ::libc::c_uint) -> hb_bool_t;
    pub fn hb_shape_plan_get_shaper(shape_plan: *mut hb_shape_plan_t)
     -> *const ::libc::c_char;
    pub fn hb_version(major: *mut ::libc::c_uint, minor: *mut ::libc::c_uint,
                      micro: *mut ::libc::c_uint) -> ();
    pub fn hb_version_string() -> *const ::libc::c_char;
    pub fn hb_version_atleast(major: ::libc::c_uint, minor: ::libc::c_uint,
                              micro: ::libc::c_uint) -> hb_bool_t;
}