File indexing completed on 2026-03-31 08:22:18
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 #if !defined(HB_H_IN) && !defined(HB_NO_SINGLE_HEADER_ERROR)
0028 #error "Include <hb.h> instead."
0029 #endif
0030
0031 #ifndef HB_FONT_H
0032 #define HB_FONT_H
0033
0034 #include "hb-common.h"
0035 #include "hb-face.h"
0036 #include "hb-draw.h"
0037 #include "hb-paint.h"
0038
0039 HB_BEGIN_DECLS
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049
0050
0051
0052
0053
0054
0055
0056
0057
0058 typedef struct hb_font_funcs_t hb_font_funcs_t;
0059
0060 HB_EXTERN hb_font_funcs_t *
0061 hb_font_funcs_create (void);
0062
0063 HB_EXTERN hb_font_funcs_t *
0064 hb_font_funcs_get_empty (void);
0065
0066 HB_EXTERN hb_font_funcs_t *
0067 hb_font_funcs_reference (hb_font_funcs_t *ffuncs);
0068
0069 HB_EXTERN void
0070 hb_font_funcs_destroy (hb_font_funcs_t *ffuncs);
0071
0072 HB_EXTERN hb_bool_t
0073 hb_font_funcs_set_user_data (hb_font_funcs_t *ffuncs,
0074 hb_user_data_key_t *key,
0075 void * data,
0076 hb_destroy_func_t destroy,
0077 hb_bool_t replace);
0078
0079
0080 HB_EXTERN void *
0081 hb_font_funcs_get_user_data (const hb_font_funcs_t *ffuncs,
0082 hb_user_data_key_t *key);
0083
0084
0085 HB_EXTERN void
0086 hb_font_funcs_make_immutable (hb_font_funcs_t *ffuncs);
0087
0088 HB_EXTERN hb_bool_t
0089 hb_font_funcs_is_immutable (hb_font_funcs_t *ffuncs);
0090
0091
0092
0093
0094
0095
0096
0097
0098
0099
0100
0101
0102
0103
0104
0105 typedef struct hb_font_extents_t {
0106 hb_position_t ascender;
0107 hb_position_t descender;
0108 hb_position_t line_gap;
0109
0110 hb_position_t reserved9;
0111 hb_position_t reserved8;
0112 hb_position_t reserved7;
0113 hb_position_t reserved6;
0114 hb_position_t reserved5;
0115 hb_position_t reserved4;
0116 hb_position_t reserved3;
0117 hb_position_t reserved2;
0118 hb_position_t reserved1;
0119 } hb_font_extents_t;
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130
0131
0132
0133 typedef hb_bool_t (*hb_font_get_font_extents_func_t) (hb_font_t *font, void *font_data,
0134 hb_font_extents_t *extents,
0135 void *user_data);
0136
0137
0138
0139
0140
0141
0142
0143
0144
0145
0146
0147 typedef hb_font_get_font_extents_func_t hb_font_get_font_h_extents_func_t;
0148
0149
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159 typedef hb_font_get_font_extents_func_t hb_font_get_font_v_extents_func_t;
0160
0161
0162
0163
0164
0165
0166
0167
0168
0169
0170
0171
0172
0173
0174
0175
0176
0177
0178 typedef hb_bool_t (*hb_font_get_nominal_glyph_func_t) (hb_font_t *font, void *font_data,
0179 hb_codepoint_t unicode,
0180 hb_codepoint_t *glyph,
0181 void *user_data);
0182
0183
0184
0185
0186
0187
0188
0189
0190
0191
0192
0193
0194
0195
0196
0197
0198
0199
0200
0201 typedef hb_bool_t (*hb_font_get_variation_glyph_func_t) (hb_font_t *font, void *font_data,
0202 hb_codepoint_t unicode, hb_codepoint_t variation_selector,
0203 hb_codepoint_t *glyph,
0204 void *user_data);
0205
0206
0207
0208
0209
0210
0211
0212
0213
0214
0215
0216
0217
0218
0219
0220
0221
0222
0223
0224
0225
0226
0227 typedef unsigned int (*hb_font_get_nominal_glyphs_func_t) (hb_font_t *font, void *font_data,
0228 unsigned int count,
0229 const hb_codepoint_t *first_unicode,
0230 unsigned int unicode_stride,
0231 hb_codepoint_t *first_glyph,
0232 unsigned int glyph_stride,
0233 void *user_data);
0234
0235
0236
0237
0238
0239
0240
0241
0242
0243
0244
0245
0246
0247
0248
0249
0250 typedef hb_position_t (*hb_font_get_glyph_advance_func_t) (hb_font_t *font, void *font_data,
0251 hb_codepoint_t glyph,
0252 void *user_data);
0253
0254
0255
0256
0257
0258
0259
0260
0261
0262
0263
0264 typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_h_advance_func_t;
0265
0266
0267
0268
0269
0270
0271
0272
0273
0274
0275
0276 typedef hb_font_get_glyph_advance_func_t hb_font_get_glyph_v_advance_func_t;
0277
0278
0279
0280
0281
0282
0283
0284
0285
0286
0287
0288
0289
0290
0291
0292
0293
0294 typedef void (*hb_font_get_glyph_advances_func_t) (hb_font_t* font, void* font_data,
0295 unsigned int count,
0296 const hb_codepoint_t *first_glyph,
0297 unsigned glyph_stride,
0298 hb_position_t *first_advance,
0299 unsigned advance_stride,
0300 void *user_data);
0301
0302
0303
0304
0305
0306
0307
0308
0309
0310
0311 typedef hb_font_get_glyph_advances_func_t hb_font_get_glyph_h_advances_func_t;
0312
0313
0314
0315
0316
0317
0318
0319
0320
0321
0322 typedef hb_font_get_glyph_advances_func_t hb_font_get_glyph_v_advances_func_t;
0323
0324
0325
0326
0327
0328
0329
0330
0331
0332
0333
0334
0335
0336
0337
0338
0339
0340
0341
0342 typedef hb_bool_t (*hb_font_get_glyph_origin_func_t) (hb_font_t *font, void *font_data,
0343 hb_codepoint_t glyph,
0344 hb_position_t *x, hb_position_t *y,
0345 void *user_data);
0346
0347
0348
0349
0350
0351
0352
0353
0354
0355
0356
0357 typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_h_origin_func_t;
0358
0359
0360
0361
0362
0363
0364
0365
0366
0367
0368
0369 typedef hb_font_get_glyph_origin_func_t hb_font_get_glyph_v_origin_func_t;
0370
0371
0372
0373
0374
0375
0376
0377
0378
0379
0380
0381
0382
0383
0384
0385
0386
0387
0388
0389
0390
0391
0392
0393
0394 typedef hb_bool_t (*hb_font_get_glyph_origins_func_t) (hb_font_t *font, void *font_data,
0395 unsigned int count,
0396 const hb_codepoint_t *first_glyph,
0397 unsigned glyph_stride,
0398 hb_position_t *first_x,
0399 unsigned x_stride,
0400 hb_position_t *first_y,
0401 unsigned y_stride,
0402 void *user_data);
0403
0404
0405
0406
0407
0408
0409
0410
0411
0412
0413
0414
0415 typedef hb_font_get_glyph_origins_func_t hb_font_get_glyph_h_origins_func_t;
0416
0417
0418
0419
0420
0421
0422
0423
0424
0425
0426
0427
0428 typedef hb_font_get_glyph_origins_func_t hb_font_get_glyph_v_origins_func_t;
0429
0430
0431
0432
0433
0434
0435
0436
0437
0438
0439
0440
0441
0442 typedef hb_position_t (*hb_font_get_glyph_kerning_func_t) (hb_font_t *font, void *font_data,
0443 hb_codepoint_t first_glyph, hb_codepoint_t second_glyph,
0444 void *user_data);
0445
0446
0447
0448
0449
0450
0451
0452
0453
0454 typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_h_kerning_func_t;
0455
0456
0457
0458
0459
0460
0461
0462
0463
0464
0465
0466
0467
0468
0469
0470
0471
0472
0473 typedef hb_bool_t (*hb_font_get_glyph_extents_func_t) (hb_font_t *font, void *font_data,
0474 hb_codepoint_t glyph,
0475 hb_glyph_extents_t *extents,
0476 void *user_data);
0477
0478
0479
0480
0481
0482
0483
0484
0485
0486
0487
0488
0489
0490
0491
0492
0493
0494
0495
0496
0497 typedef hb_bool_t (*hb_font_get_glyph_contour_point_func_t) (hb_font_t *font, void *font_data,
0498 hb_codepoint_t glyph, unsigned int point_index,
0499 hb_position_t *x, hb_position_t *y,
0500 void *user_data);
0501
0502
0503
0504
0505
0506
0507
0508
0509
0510
0511
0512
0513
0514
0515
0516
0517
0518
0519
0520 typedef hb_bool_t (*hb_font_get_glyph_name_func_t) (hb_font_t *font, void *font_data,
0521 hb_codepoint_t glyph,
0522 char *name, unsigned int size,
0523 void *user_data);
0524
0525
0526
0527
0528
0529
0530
0531
0532
0533
0534
0535
0536
0537
0538
0539
0540
0541
0542 typedef hb_bool_t (*hb_font_get_glyph_from_name_func_t) (hb_font_t *font, void *font_data,
0543 const char *name, int len,
0544 hb_codepoint_t *glyph,
0545 void *user_data);
0546
0547
0548
0549
0550
0551
0552
0553
0554
0555
0556
0557
0558
0559
0560
0561
0562 typedef hb_bool_t (*hb_font_draw_glyph_or_fail_func_t) (hb_font_t *font, void *font_data,
0563 hb_codepoint_t glyph,
0564 hb_draw_funcs_t *draw_funcs, void *draw_data,
0565 void *user_data);
0566
0567
0568
0569
0570
0571
0572
0573
0574
0575
0576
0577
0578
0579
0580
0581
0582
0583
0584 typedef hb_bool_t (*hb_font_paint_glyph_or_fail_func_t) (hb_font_t *font, void *font_data,
0585 hb_codepoint_t glyph,
0586 hb_paint_funcs_t *paint_funcs, void *paint_data,
0587 unsigned int palette_index,
0588 hb_color_t foreground,
0589 void *user_data);
0590
0591
0592
0593
0594
0595
0596
0597
0598
0599
0600
0601
0602
0603
0604 HB_EXTERN void
0605 hb_font_funcs_set_font_h_extents_func (hb_font_funcs_t *ffuncs,
0606 hb_font_get_font_h_extents_func_t func,
0607 void *user_data, hb_destroy_func_t destroy);
0608
0609
0610
0611
0612
0613
0614
0615
0616
0617
0618
0619
0620 HB_EXTERN void
0621 hb_font_funcs_set_font_v_extents_func (hb_font_funcs_t *ffuncs,
0622 hb_font_get_font_v_extents_func_t func,
0623 void *user_data, hb_destroy_func_t destroy);
0624
0625
0626
0627
0628
0629
0630
0631
0632
0633
0634
0635
0636 HB_EXTERN void
0637 hb_font_funcs_set_nominal_glyph_func (hb_font_funcs_t *ffuncs,
0638 hb_font_get_nominal_glyph_func_t func,
0639 void *user_data, hb_destroy_func_t destroy);
0640
0641
0642
0643
0644
0645
0646
0647
0648
0649
0650
0651
0652 HB_EXTERN void
0653 hb_font_funcs_set_nominal_glyphs_func (hb_font_funcs_t *ffuncs,
0654 hb_font_get_nominal_glyphs_func_t func,
0655 void *user_data, hb_destroy_func_t destroy);
0656
0657
0658
0659
0660
0661
0662
0663
0664
0665
0666
0667
0668 HB_EXTERN void
0669 hb_font_funcs_set_variation_glyph_func (hb_font_funcs_t *ffuncs,
0670 hb_font_get_variation_glyph_func_t func,
0671 void *user_data, hb_destroy_func_t destroy);
0672
0673
0674
0675
0676
0677
0678
0679
0680
0681
0682
0683
0684 HB_EXTERN void
0685 hb_font_funcs_set_glyph_h_advance_func (hb_font_funcs_t *ffuncs,
0686 hb_font_get_glyph_h_advance_func_t func,
0687 void *user_data, hb_destroy_func_t destroy);
0688
0689
0690
0691
0692
0693
0694
0695
0696
0697
0698
0699
0700 HB_EXTERN void
0701 hb_font_funcs_set_glyph_v_advance_func (hb_font_funcs_t *ffuncs,
0702 hb_font_get_glyph_v_advance_func_t func,
0703 void *user_data, hb_destroy_func_t destroy);
0704
0705
0706
0707
0708
0709
0710
0711
0712
0713
0714
0715
0716 HB_EXTERN void
0717 hb_font_funcs_set_glyph_h_advances_func (hb_font_funcs_t *ffuncs,
0718 hb_font_get_glyph_h_advances_func_t func,
0719 void *user_data, hb_destroy_func_t destroy);
0720
0721
0722
0723
0724
0725
0726
0727
0728
0729
0730
0731
0732 HB_EXTERN void
0733 hb_font_funcs_set_glyph_v_advances_func (hb_font_funcs_t *ffuncs,
0734 hb_font_get_glyph_v_advances_func_t func,
0735 void *user_data, hb_destroy_func_t destroy);
0736
0737
0738
0739
0740
0741
0742
0743
0744
0745
0746
0747
0748 HB_EXTERN void
0749 hb_font_funcs_set_glyph_h_origin_func (hb_font_funcs_t *ffuncs,
0750 hb_font_get_glyph_h_origin_func_t func,
0751 void *user_data, hb_destroy_func_t destroy);
0752
0753
0754
0755
0756
0757
0758
0759
0760
0761
0762
0763
0764 HB_EXTERN void
0765 hb_font_funcs_set_glyph_v_origin_func (hb_font_funcs_t *ffuncs,
0766 hb_font_get_glyph_v_origin_func_t func,
0767 void *user_data, hb_destroy_func_t destroy);
0768
0769
0770
0771
0772
0773
0774
0775
0776
0777
0778
0779
0780 HB_EXTERN void
0781 hb_font_funcs_set_glyph_h_origins_func (hb_font_funcs_t *ffuncs,
0782 hb_font_get_glyph_h_origins_func_t func,
0783 void *user_data, hb_destroy_func_t destroy);
0784
0785
0786
0787
0788
0789
0790
0791
0792
0793
0794
0795
0796 HB_EXTERN void
0797 hb_font_funcs_set_glyph_v_origins_func (hb_font_funcs_t *ffuncs,
0798 hb_font_get_glyph_v_origins_func_t func,
0799 void *user_data, hb_destroy_func_t destroy);
0800
0801
0802
0803
0804
0805
0806
0807
0808
0809
0810
0811
0812 HB_EXTERN void
0813 hb_font_funcs_set_glyph_h_kerning_func (hb_font_funcs_t *ffuncs,
0814 hb_font_get_glyph_h_kerning_func_t func,
0815 void *user_data, hb_destroy_func_t destroy);
0816
0817
0818
0819
0820
0821
0822
0823
0824
0825
0826
0827
0828 HB_EXTERN void
0829 hb_font_funcs_set_glyph_extents_func (hb_font_funcs_t *ffuncs,
0830 hb_font_get_glyph_extents_func_t func,
0831 void *user_data, hb_destroy_func_t destroy);
0832
0833
0834
0835
0836
0837
0838
0839
0840
0841
0842
0843
0844 HB_EXTERN void
0845 hb_font_funcs_set_glyph_contour_point_func (hb_font_funcs_t *ffuncs,
0846 hb_font_get_glyph_contour_point_func_t func,
0847 void *user_data, hb_destroy_func_t destroy);
0848
0849
0850
0851
0852
0853
0854
0855
0856
0857
0858
0859
0860 HB_EXTERN void
0861 hb_font_funcs_set_glyph_name_func (hb_font_funcs_t *ffuncs,
0862 hb_font_get_glyph_name_func_t func,
0863 void *user_data, hb_destroy_func_t destroy);
0864
0865
0866
0867
0868
0869
0870
0871
0872
0873
0874
0875
0876 HB_EXTERN void
0877 hb_font_funcs_set_glyph_from_name_func (hb_font_funcs_t *ffuncs,
0878 hb_font_get_glyph_from_name_func_t func,
0879 void *user_data, hb_destroy_func_t destroy);
0880
0881
0882
0883
0884
0885
0886
0887
0888
0889
0890
0891
0892 HB_EXTERN void
0893 hb_font_funcs_set_draw_glyph_or_fail_func (hb_font_funcs_t *ffuncs,
0894 hb_font_draw_glyph_or_fail_func_t func,
0895 void *user_data, hb_destroy_func_t destroy);
0896
0897
0898
0899
0900
0901
0902
0903
0904
0905
0906
0907
0908 HB_EXTERN void
0909 hb_font_funcs_set_paint_glyph_or_fail_func (hb_font_funcs_t *ffuncs,
0910 hb_font_paint_glyph_or_fail_func_t func,
0911 void *user_data, hb_destroy_func_t destroy);
0912
0913
0914
0915 HB_EXTERN hb_bool_t
0916 hb_font_get_h_extents (hb_font_t *font,
0917 hb_font_extents_t *extents);
0918 HB_EXTERN hb_bool_t
0919 hb_font_get_v_extents (hb_font_t *font,
0920 hb_font_extents_t *extents);
0921
0922 HB_EXTERN hb_bool_t
0923 hb_font_get_nominal_glyph (hb_font_t *font,
0924 hb_codepoint_t unicode,
0925 hb_codepoint_t *glyph);
0926 HB_EXTERN hb_bool_t
0927 hb_font_get_variation_glyph (hb_font_t *font,
0928 hb_codepoint_t unicode, hb_codepoint_t variation_selector,
0929 hb_codepoint_t *glyph);
0930
0931 HB_EXTERN unsigned int
0932 hb_font_get_nominal_glyphs (hb_font_t *font,
0933 unsigned int count,
0934 const hb_codepoint_t *first_unicode,
0935 unsigned int unicode_stride,
0936 hb_codepoint_t *first_glyph,
0937 unsigned int glyph_stride);
0938
0939 HB_EXTERN hb_position_t
0940 hb_font_get_glyph_h_advance (hb_font_t *font,
0941 hb_codepoint_t glyph);
0942 HB_EXTERN hb_position_t
0943 hb_font_get_glyph_v_advance (hb_font_t *font,
0944 hb_codepoint_t glyph);
0945
0946 HB_EXTERN void
0947 hb_font_get_glyph_h_advances (hb_font_t* font,
0948 unsigned int count,
0949 const hb_codepoint_t *first_glyph,
0950 unsigned glyph_stride,
0951 hb_position_t *first_advance,
0952 unsigned advance_stride);
0953 HB_EXTERN void
0954 hb_font_get_glyph_v_advances (hb_font_t* font,
0955 unsigned int count,
0956 const hb_codepoint_t *first_glyph,
0957 unsigned glyph_stride,
0958 hb_position_t *first_advance,
0959 unsigned advance_stride);
0960
0961 HB_EXTERN hb_bool_t
0962 hb_font_get_glyph_h_origin (hb_font_t *font,
0963 hb_codepoint_t glyph,
0964 hb_position_t *x, hb_position_t *y);
0965 HB_EXTERN hb_bool_t
0966 hb_font_get_glyph_v_origin (hb_font_t *font,
0967 hb_codepoint_t glyph,
0968 hb_position_t *x, hb_position_t *y);
0969
0970 HB_EXTERN hb_bool_t
0971 hb_font_get_glyph_h_origins (hb_font_t *font,
0972 unsigned int count,
0973 const hb_codepoint_t *first_glyph,
0974 unsigned glyph_stride,
0975 hb_position_t *first_x,
0976 unsigned x_stride,
0977 hb_position_t *first_y,
0978 unsigned y_stride);
0979
0980 HB_EXTERN hb_bool_t
0981 hb_font_get_glyph_v_origins (hb_font_t *font,
0982 unsigned int count,
0983 const hb_codepoint_t *first_glyph,
0984 unsigned glyph_stride,
0985 hb_position_t *first_x,
0986 unsigned x_stride,
0987 hb_position_t *first_y,
0988 unsigned y_stride);
0989
0990 HB_EXTERN hb_position_t
0991 hb_font_get_glyph_h_kerning (hb_font_t *font,
0992 hb_codepoint_t left_glyph, hb_codepoint_t right_glyph);
0993
0994 HB_EXTERN hb_bool_t
0995 hb_font_get_glyph_extents (hb_font_t *font,
0996 hb_codepoint_t glyph,
0997 hb_glyph_extents_t *extents);
0998
0999 HB_EXTERN hb_bool_t
1000 hb_font_get_glyph_contour_point (hb_font_t *font,
1001 hb_codepoint_t glyph, unsigned int point_index,
1002 hb_position_t *x, hb_position_t *y);
1003
1004 HB_EXTERN hb_bool_t
1005 hb_font_get_glyph_name (hb_font_t *font,
1006 hb_codepoint_t glyph,
1007 char *name, unsigned int size);
1008 HB_EXTERN hb_bool_t
1009 hb_font_get_glyph_from_name (hb_font_t *font,
1010 const char *name, int len,
1011 hb_codepoint_t *glyph);
1012
1013 HB_EXTERN hb_bool_t
1014 hb_font_draw_glyph_or_fail (hb_font_t *font,
1015 hb_codepoint_t glyph,
1016 hb_draw_funcs_t *dfuncs, void *draw_data);
1017
1018 HB_EXTERN hb_bool_t
1019 hb_font_paint_glyph_or_fail (hb_font_t *font,
1020 hb_codepoint_t glyph,
1021 hb_paint_funcs_t *pfuncs, void *paint_data,
1022 unsigned int palette_index,
1023 hb_color_t foreground);
1024
1025
1026
1027
1028
1029 HB_EXTERN hb_bool_t
1030 hb_font_get_glyph (hb_font_t *font,
1031 hb_codepoint_t unicode, hb_codepoint_t variation_selector,
1032 hb_codepoint_t *glyph);
1033
1034 HB_EXTERN void
1035 hb_font_get_extents_for_direction (hb_font_t *font,
1036 hb_direction_t direction,
1037 hb_font_extents_t *extents);
1038 HB_EXTERN void
1039 hb_font_get_glyph_advance_for_direction (hb_font_t *font,
1040 hb_codepoint_t glyph,
1041 hb_direction_t direction,
1042 hb_position_t *x, hb_position_t *y);
1043 HB_EXTERN void
1044 hb_font_get_glyph_advances_for_direction (hb_font_t* font,
1045 hb_direction_t direction,
1046 unsigned int count,
1047 const hb_codepoint_t *first_glyph,
1048 unsigned glyph_stride,
1049 hb_position_t *first_advance,
1050 unsigned advance_stride);
1051 HB_EXTERN void
1052 hb_font_get_glyph_origin_for_direction (hb_font_t *font,
1053 hb_codepoint_t glyph,
1054 hb_direction_t direction,
1055 hb_position_t *x, hb_position_t *y);
1056 HB_EXTERN void
1057 hb_font_add_glyph_origin_for_direction (hb_font_t *font,
1058 hb_codepoint_t glyph,
1059 hb_direction_t direction,
1060 hb_position_t *x, hb_position_t *y);
1061 HB_EXTERN void
1062 hb_font_subtract_glyph_origin_for_direction (hb_font_t *font,
1063 hb_codepoint_t glyph,
1064 hb_direction_t direction,
1065 hb_position_t *x, hb_position_t *y);
1066
1067 HB_EXTERN void
1068 hb_font_get_glyph_kerning_for_direction (hb_font_t *font,
1069 hb_codepoint_t first_glyph, hb_codepoint_t second_glyph,
1070 hb_direction_t direction,
1071 hb_position_t *x, hb_position_t *y);
1072
1073 HB_EXTERN hb_bool_t
1074 hb_font_get_glyph_extents_for_origin (hb_font_t *font,
1075 hb_codepoint_t glyph,
1076 hb_direction_t direction,
1077 hb_glyph_extents_t *extents);
1078
1079 HB_EXTERN hb_bool_t
1080 hb_font_get_glyph_contour_point_for_origin (hb_font_t *font,
1081 hb_codepoint_t glyph, unsigned int point_index,
1082 hb_direction_t direction,
1083 hb_position_t *x, hb_position_t *y);
1084
1085
1086 HB_EXTERN void
1087 hb_font_glyph_to_string (hb_font_t *font,
1088 hb_codepoint_t glyph,
1089 char *s, unsigned int size);
1090
1091 HB_EXTERN hb_bool_t
1092 hb_font_glyph_from_string (hb_font_t *font,
1093 const char *s, int len,
1094 hb_codepoint_t *glyph);
1095
1096
1097 HB_EXTERN void
1098 hb_font_draw_glyph (hb_font_t *font,
1099 hb_codepoint_t glyph,
1100 hb_draw_funcs_t *dfuncs, void *draw_data);
1101
1102
1103 HB_EXTERN void
1104 hb_font_paint_glyph (hb_font_t *font,
1105 hb_codepoint_t glyph,
1106 hb_paint_funcs_t *pfuncs, void *paint_data,
1107 unsigned int palette_index,
1108 hb_color_t foreground);
1109
1110
1111
1112
1113
1114
1115
1116 HB_EXTERN hb_font_t *
1117 hb_font_create (hb_face_t *face);
1118
1119 HB_EXTERN hb_font_t *
1120 hb_font_create_sub_font (hb_font_t *parent);
1121
1122 HB_EXTERN hb_font_t *
1123 hb_font_get_empty (void);
1124
1125 HB_EXTERN hb_font_t *
1126 hb_font_reference (hb_font_t *font);
1127
1128 HB_EXTERN void
1129 hb_font_destroy (hb_font_t *font);
1130
1131 HB_EXTERN hb_bool_t
1132 hb_font_set_user_data (hb_font_t *font,
1133 hb_user_data_key_t *key,
1134 void * data,
1135 hb_destroy_func_t destroy,
1136 hb_bool_t replace);
1137
1138
1139 HB_EXTERN void *
1140 hb_font_get_user_data (const hb_font_t *font,
1141 hb_user_data_key_t *key);
1142
1143 HB_EXTERN void
1144 hb_font_make_immutable (hb_font_t *font);
1145
1146 HB_EXTERN hb_bool_t
1147 hb_font_is_immutable (hb_font_t *font);
1148
1149 HB_EXTERN unsigned int
1150 hb_font_get_serial (hb_font_t *font);
1151
1152 HB_EXTERN void
1153 hb_font_changed (hb_font_t *font);
1154
1155 HB_EXTERN void
1156 hb_font_set_parent (hb_font_t *font,
1157 hb_font_t *parent);
1158
1159 HB_EXTERN hb_font_t *
1160 hb_font_get_parent (hb_font_t *font);
1161
1162 HB_EXTERN void
1163 hb_font_set_face (hb_font_t *font,
1164 hb_face_t *face);
1165
1166 HB_EXTERN hb_face_t *
1167 hb_font_get_face (hb_font_t *font);
1168
1169
1170 HB_EXTERN void
1171 hb_font_set_funcs (hb_font_t *font,
1172 hb_font_funcs_t *klass,
1173 void *font_data,
1174 hb_destroy_func_t destroy);
1175
1176
1177 HB_EXTERN void
1178 hb_font_set_funcs_data (hb_font_t *font,
1179 void *font_data,
1180 hb_destroy_func_t destroy);
1181
1182 HB_EXTERN hb_bool_t
1183 hb_font_set_funcs_using (hb_font_t *font,
1184 const char *name);
1185
1186 HB_EXTERN const char **
1187 hb_font_list_funcs (void);
1188
1189 HB_EXTERN void
1190 hb_font_set_scale (hb_font_t *font,
1191 int x_scale,
1192 int y_scale);
1193
1194 HB_EXTERN void
1195 hb_font_get_scale (hb_font_t *font,
1196 int *x_scale,
1197 int *y_scale);
1198
1199
1200
1201
1202 HB_EXTERN void
1203 hb_font_set_ppem (hb_font_t *font,
1204 unsigned int x_ppem,
1205 unsigned int y_ppem);
1206
1207 HB_EXTERN void
1208 hb_font_get_ppem (hb_font_t *font,
1209 unsigned int *x_ppem,
1210 unsigned int *y_ppem);
1211
1212
1213
1214
1215
1216 HB_EXTERN void
1217 hb_font_set_ptem (hb_font_t *font, float ptem);
1218
1219 HB_EXTERN float
1220 hb_font_get_ptem (hb_font_t *font);
1221
1222 HB_EXTERN hb_bool_t
1223 hb_font_is_synthetic (hb_font_t *font);
1224
1225 HB_EXTERN void
1226 hb_font_set_synthetic_bold (hb_font_t *font,
1227 float x_embolden, float y_embolden,
1228 hb_bool_t in_place);
1229
1230 HB_EXTERN void
1231 hb_font_get_synthetic_bold (hb_font_t *font,
1232 float *x_embolden, float *y_embolden,
1233 hb_bool_t *in_place);
1234
1235 HB_EXTERN void
1236 hb_font_set_synthetic_slant (hb_font_t *font, float slant);
1237
1238 HB_EXTERN float
1239 hb_font_get_synthetic_slant (hb_font_t *font);
1240
1241 HB_EXTERN void
1242 hb_font_set_variations (hb_font_t *font,
1243 const hb_variation_t *variations,
1244 unsigned int variations_length);
1245
1246 HB_EXTERN void
1247 hb_font_set_variation (hb_font_t *font,
1248 hb_tag_t tag,
1249 float value);
1250
1251 HB_EXTERN void
1252 hb_font_set_var_coords_design (hb_font_t *font,
1253 const float *coords,
1254 unsigned int coords_length);
1255
1256 HB_EXTERN const float *
1257 hb_font_get_var_coords_design (hb_font_t *font,
1258 unsigned int *length);
1259
1260 HB_EXTERN void
1261 hb_font_set_var_coords_normalized (hb_font_t *font,
1262 const int *coords,
1263 unsigned int coords_length);
1264
1265 HB_EXTERN const int *
1266 hb_font_get_var_coords_normalized (hb_font_t *font,
1267 unsigned int *length);
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278 #define HB_FONT_NO_VAR_NAMED_INSTANCE 0xFFFFFFFF
1279
1280 HB_EXTERN void
1281 hb_font_set_var_named_instance (hb_font_t *font,
1282 unsigned int instance_index);
1283
1284 HB_EXTERN unsigned int
1285 hb_font_get_var_named_instance (hb_font_t *font);
1286
1287 HB_END_DECLS
1288
1289 #endif