File indexing completed on 2025-09-17 09:01:46
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 typedef hb_position_t (*hb_font_get_glyph_kerning_func_t) (hb_font_t *font, void *font_data,
0384 hb_codepoint_t first_glyph, hb_codepoint_t second_glyph,
0385 void *user_data);
0386
0387
0388
0389
0390
0391
0392
0393
0394
0395 typedef hb_font_get_glyph_kerning_func_t hb_font_get_glyph_h_kerning_func_t;
0396
0397
0398
0399
0400
0401
0402
0403
0404
0405
0406
0407
0408
0409
0410
0411
0412
0413
0414 typedef hb_bool_t (*hb_font_get_glyph_extents_func_t) (hb_font_t *font, void *font_data,
0415 hb_codepoint_t glyph,
0416 hb_glyph_extents_t *extents,
0417 void *user_data);
0418
0419
0420
0421
0422
0423
0424
0425
0426
0427
0428
0429
0430
0431
0432
0433
0434
0435
0436
0437
0438 typedef hb_bool_t (*hb_font_get_glyph_contour_point_func_t) (hb_font_t *font, void *font_data,
0439 hb_codepoint_t glyph, unsigned int point_index,
0440 hb_position_t *x, hb_position_t *y,
0441 void *user_data);
0442
0443
0444
0445
0446
0447
0448
0449
0450
0451
0452
0453
0454
0455
0456
0457
0458
0459
0460
0461 typedef hb_bool_t (*hb_font_get_glyph_name_func_t) (hb_font_t *font, void *font_data,
0462 hb_codepoint_t glyph,
0463 char *name, unsigned int size,
0464 void *user_data);
0465
0466
0467
0468
0469
0470
0471
0472
0473
0474
0475
0476
0477
0478
0479
0480
0481
0482
0483 typedef hb_bool_t (*hb_font_get_glyph_from_name_func_t) (hb_font_t *font, void *font_data,
0484 const char *name, int len,
0485 hb_codepoint_t *glyph,
0486 void *user_data);
0487
0488
0489
0490
0491
0492
0493
0494
0495
0496
0497
0498
0499
0500
0501
0502
0503 typedef hb_bool_t (*hb_font_draw_glyph_or_fail_func_t) (hb_font_t *font, void *font_data,
0504 hb_codepoint_t glyph,
0505 hb_draw_funcs_t *draw_funcs, void *draw_data,
0506 void *user_data);
0507
0508
0509
0510
0511
0512
0513
0514
0515
0516
0517
0518
0519
0520
0521
0522
0523
0524
0525 typedef hb_bool_t (*hb_font_paint_glyph_or_fail_func_t) (hb_font_t *font, void *font_data,
0526 hb_codepoint_t glyph,
0527 hb_paint_funcs_t *paint_funcs, void *paint_data,
0528 unsigned int palette_index,
0529 hb_color_t foreground,
0530 void *user_data);
0531
0532
0533
0534
0535
0536
0537
0538
0539
0540
0541
0542
0543
0544
0545 HB_EXTERN void
0546 hb_font_funcs_set_font_h_extents_func (hb_font_funcs_t *ffuncs,
0547 hb_font_get_font_h_extents_func_t func,
0548 void *user_data, hb_destroy_func_t destroy);
0549
0550
0551
0552
0553
0554
0555
0556
0557
0558
0559
0560
0561 HB_EXTERN void
0562 hb_font_funcs_set_font_v_extents_func (hb_font_funcs_t *ffuncs,
0563 hb_font_get_font_v_extents_func_t func,
0564 void *user_data, hb_destroy_func_t destroy);
0565
0566
0567
0568
0569
0570
0571
0572
0573
0574
0575
0576
0577 HB_EXTERN void
0578 hb_font_funcs_set_nominal_glyph_func (hb_font_funcs_t *ffuncs,
0579 hb_font_get_nominal_glyph_func_t func,
0580 void *user_data, hb_destroy_func_t destroy);
0581
0582
0583
0584
0585
0586
0587
0588
0589
0590
0591
0592
0593 HB_EXTERN void
0594 hb_font_funcs_set_nominal_glyphs_func (hb_font_funcs_t *ffuncs,
0595 hb_font_get_nominal_glyphs_func_t func,
0596 void *user_data, hb_destroy_func_t destroy);
0597
0598
0599
0600
0601
0602
0603
0604
0605
0606
0607
0608
0609 HB_EXTERN void
0610 hb_font_funcs_set_variation_glyph_func (hb_font_funcs_t *ffuncs,
0611 hb_font_get_variation_glyph_func_t func,
0612 void *user_data, hb_destroy_func_t destroy);
0613
0614
0615
0616
0617
0618
0619
0620
0621
0622
0623
0624
0625 HB_EXTERN void
0626 hb_font_funcs_set_glyph_h_advance_func (hb_font_funcs_t *ffuncs,
0627 hb_font_get_glyph_h_advance_func_t func,
0628 void *user_data, hb_destroy_func_t destroy);
0629
0630
0631
0632
0633
0634
0635
0636
0637
0638
0639
0640
0641 HB_EXTERN void
0642 hb_font_funcs_set_glyph_v_advance_func (hb_font_funcs_t *ffuncs,
0643 hb_font_get_glyph_v_advance_func_t func,
0644 void *user_data, hb_destroy_func_t destroy);
0645
0646
0647
0648
0649
0650
0651
0652
0653
0654
0655
0656
0657 HB_EXTERN void
0658 hb_font_funcs_set_glyph_h_advances_func (hb_font_funcs_t *ffuncs,
0659 hb_font_get_glyph_h_advances_func_t func,
0660 void *user_data, hb_destroy_func_t destroy);
0661
0662
0663
0664
0665
0666
0667
0668
0669
0670
0671
0672
0673 HB_EXTERN void
0674 hb_font_funcs_set_glyph_v_advances_func (hb_font_funcs_t *ffuncs,
0675 hb_font_get_glyph_v_advances_func_t func,
0676 void *user_data, hb_destroy_func_t destroy);
0677
0678
0679
0680
0681
0682
0683
0684
0685
0686
0687
0688
0689 HB_EXTERN void
0690 hb_font_funcs_set_glyph_h_origin_func (hb_font_funcs_t *ffuncs,
0691 hb_font_get_glyph_h_origin_func_t func,
0692 void *user_data, hb_destroy_func_t destroy);
0693
0694
0695
0696
0697
0698
0699
0700
0701
0702
0703
0704
0705 HB_EXTERN void
0706 hb_font_funcs_set_glyph_v_origin_func (hb_font_funcs_t *ffuncs,
0707 hb_font_get_glyph_v_origin_func_t func,
0708 void *user_data, hb_destroy_func_t destroy);
0709
0710
0711
0712
0713
0714
0715
0716
0717
0718
0719
0720
0721 HB_EXTERN void
0722 hb_font_funcs_set_glyph_h_kerning_func (hb_font_funcs_t *ffuncs,
0723 hb_font_get_glyph_h_kerning_func_t func,
0724 void *user_data, hb_destroy_func_t destroy);
0725
0726
0727
0728
0729
0730
0731
0732
0733
0734
0735
0736
0737 HB_EXTERN void
0738 hb_font_funcs_set_glyph_extents_func (hb_font_funcs_t *ffuncs,
0739 hb_font_get_glyph_extents_func_t func,
0740 void *user_data, hb_destroy_func_t destroy);
0741
0742
0743
0744
0745
0746
0747
0748
0749
0750
0751
0752
0753 HB_EXTERN void
0754 hb_font_funcs_set_glyph_contour_point_func (hb_font_funcs_t *ffuncs,
0755 hb_font_get_glyph_contour_point_func_t func,
0756 void *user_data, hb_destroy_func_t destroy);
0757
0758
0759
0760
0761
0762
0763
0764
0765
0766
0767
0768
0769 HB_EXTERN void
0770 hb_font_funcs_set_glyph_name_func (hb_font_funcs_t *ffuncs,
0771 hb_font_get_glyph_name_func_t func,
0772 void *user_data, hb_destroy_func_t destroy);
0773
0774
0775
0776
0777
0778
0779
0780
0781
0782
0783
0784
0785 HB_EXTERN void
0786 hb_font_funcs_set_glyph_from_name_func (hb_font_funcs_t *ffuncs,
0787 hb_font_get_glyph_from_name_func_t func,
0788 void *user_data, hb_destroy_func_t destroy);
0789
0790
0791
0792
0793
0794
0795
0796
0797
0798
0799
0800
0801 HB_EXTERN void
0802 hb_font_funcs_set_draw_glyph_or_fail_func (hb_font_funcs_t *ffuncs,
0803 hb_font_draw_glyph_or_fail_func_t func,
0804 void *user_data, hb_destroy_func_t destroy);
0805
0806
0807
0808
0809
0810
0811
0812
0813
0814
0815
0816
0817 HB_EXTERN void
0818 hb_font_funcs_set_paint_glyph_or_fail_func (hb_font_funcs_t *ffuncs,
0819 hb_font_paint_glyph_or_fail_func_t func,
0820 void *user_data, hb_destroy_func_t destroy);
0821
0822
0823
0824 HB_EXTERN hb_bool_t
0825 hb_font_get_h_extents (hb_font_t *font,
0826 hb_font_extents_t *extents);
0827 HB_EXTERN hb_bool_t
0828 hb_font_get_v_extents (hb_font_t *font,
0829 hb_font_extents_t *extents);
0830
0831 HB_EXTERN hb_bool_t
0832 hb_font_get_nominal_glyph (hb_font_t *font,
0833 hb_codepoint_t unicode,
0834 hb_codepoint_t *glyph);
0835 HB_EXTERN hb_bool_t
0836 hb_font_get_variation_glyph (hb_font_t *font,
0837 hb_codepoint_t unicode, hb_codepoint_t variation_selector,
0838 hb_codepoint_t *glyph);
0839
0840 HB_EXTERN unsigned int
0841 hb_font_get_nominal_glyphs (hb_font_t *font,
0842 unsigned int count,
0843 const hb_codepoint_t *first_unicode,
0844 unsigned int unicode_stride,
0845 hb_codepoint_t *first_glyph,
0846 unsigned int glyph_stride);
0847
0848 HB_EXTERN hb_position_t
0849 hb_font_get_glyph_h_advance (hb_font_t *font,
0850 hb_codepoint_t glyph);
0851 HB_EXTERN hb_position_t
0852 hb_font_get_glyph_v_advance (hb_font_t *font,
0853 hb_codepoint_t glyph);
0854
0855 HB_EXTERN void
0856 hb_font_get_glyph_h_advances (hb_font_t* font,
0857 unsigned int count,
0858 const hb_codepoint_t *first_glyph,
0859 unsigned glyph_stride,
0860 hb_position_t *first_advance,
0861 unsigned advance_stride);
0862 HB_EXTERN void
0863 hb_font_get_glyph_v_advances (hb_font_t* font,
0864 unsigned int count,
0865 const hb_codepoint_t *first_glyph,
0866 unsigned glyph_stride,
0867 hb_position_t *first_advance,
0868 unsigned advance_stride);
0869
0870 HB_EXTERN hb_bool_t
0871 hb_font_get_glyph_h_origin (hb_font_t *font,
0872 hb_codepoint_t glyph,
0873 hb_position_t *x, hb_position_t *y);
0874 HB_EXTERN hb_bool_t
0875 hb_font_get_glyph_v_origin (hb_font_t *font,
0876 hb_codepoint_t glyph,
0877 hb_position_t *x, hb_position_t *y);
0878
0879 HB_EXTERN hb_position_t
0880 hb_font_get_glyph_h_kerning (hb_font_t *font,
0881 hb_codepoint_t left_glyph, hb_codepoint_t right_glyph);
0882
0883 HB_EXTERN hb_bool_t
0884 hb_font_get_glyph_extents (hb_font_t *font,
0885 hb_codepoint_t glyph,
0886 hb_glyph_extents_t *extents);
0887
0888 HB_EXTERN hb_bool_t
0889 hb_font_get_glyph_contour_point (hb_font_t *font,
0890 hb_codepoint_t glyph, unsigned int point_index,
0891 hb_position_t *x, hb_position_t *y);
0892
0893 HB_EXTERN hb_bool_t
0894 hb_font_get_glyph_name (hb_font_t *font,
0895 hb_codepoint_t glyph,
0896 char *name, unsigned int size);
0897 HB_EXTERN hb_bool_t
0898 hb_font_get_glyph_from_name (hb_font_t *font,
0899 const char *name, int len,
0900 hb_codepoint_t *glyph);
0901
0902 HB_EXTERN hb_bool_t
0903 hb_font_draw_glyph_or_fail (hb_font_t *font,
0904 hb_codepoint_t glyph,
0905 hb_draw_funcs_t *dfuncs, void *draw_data);
0906
0907 HB_EXTERN hb_bool_t
0908 hb_font_paint_glyph_or_fail (hb_font_t *font,
0909 hb_codepoint_t glyph,
0910 hb_paint_funcs_t *pfuncs, void *paint_data,
0911 unsigned int palette_index,
0912 hb_color_t foreground);
0913
0914
0915
0916
0917
0918 HB_EXTERN hb_bool_t
0919 hb_font_get_glyph (hb_font_t *font,
0920 hb_codepoint_t unicode, hb_codepoint_t variation_selector,
0921 hb_codepoint_t *glyph);
0922
0923 HB_EXTERN void
0924 hb_font_get_extents_for_direction (hb_font_t *font,
0925 hb_direction_t direction,
0926 hb_font_extents_t *extents);
0927 HB_EXTERN void
0928 hb_font_get_glyph_advance_for_direction (hb_font_t *font,
0929 hb_codepoint_t glyph,
0930 hb_direction_t direction,
0931 hb_position_t *x, hb_position_t *y);
0932 HB_EXTERN void
0933 hb_font_get_glyph_advances_for_direction (hb_font_t* font,
0934 hb_direction_t direction,
0935 unsigned int count,
0936 const hb_codepoint_t *first_glyph,
0937 unsigned glyph_stride,
0938 hb_position_t *first_advance,
0939 unsigned advance_stride);
0940 HB_EXTERN void
0941 hb_font_get_glyph_origin_for_direction (hb_font_t *font,
0942 hb_codepoint_t glyph,
0943 hb_direction_t direction,
0944 hb_position_t *x, hb_position_t *y);
0945 HB_EXTERN void
0946 hb_font_add_glyph_origin_for_direction (hb_font_t *font,
0947 hb_codepoint_t glyph,
0948 hb_direction_t direction,
0949 hb_position_t *x, hb_position_t *y);
0950 HB_EXTERN void
0951 hb_font_subtract_glyph_origin_for_direction (hb_font_t *font,
0952 hb_codepoint_t glyph,
0953 hb_direction_t direction,
0954 hb_position_t *x, hb_position_t *y);
0955
0956 HB_EXTERN void
0957 hb_font_get_glyph_kerning_for_direction (hb_font_t *font,
0958 hb_codepoint_t first_glyph, hb_codepoint_t second_glyph,
0959 hb_direction_t direction,
0960 hb_position_t *x, hb_position_t *y);
0961
0962 HB_EXTERN hb_bool_t
0963 hb_font_get_glyph_extents_for_origin (hb_font_t *font,
0964 hb_codepoint_t glyph,
0965 hb_direction_t direction,
0966 hb_glyph_extents_t *extents);
0967
0968 HB_EXTERN hb_bool_t
0969 hb_font_get_glyph_contour_point_for_origin (hb_font_t *font,
0970 hb_codepoint_t glyph, unsigned int point_index,
0971 hb_direction_t direction,
0972 hb_position_t *x, hb_position_t *y);
0973
0974
0975 HB_EXTERN void
0976 hb_font_glyph_to_string (hb_font_t *font,
0977 hb_codepoint_t glyph,
0978 char *s, unsigned int size);
0979
0980 HB_EXTERN hb_bool_t
0981 hb_font_glyph_from_string (hb_font_t *font,
0982 const char *s, int len,
0983 hb_codepoint_t *glyph);
0984
0985
0986 HB_EXTERN void
0987 hb_font_draw_glyph (hb_font_t *font,
0988 hb_codepoint_t glyph,
0989 hb_draw_funcs_t *dfuncs, void *draw_data);
0990
0991
0992 HB_EXTERN void
0993 hb_font_paint_glyph (hb_font_t *font,
0994 hb_codepoint_t glyph,
0995 hb_paint_funcs_t *pfuncs, void *paint_data,
0996 unsigned int palette_index,
0997 hb_color_t foreground);
0998
0999
1000
1001
1002
1003
1004
1005 HB_EXTERN hb_font_t *
1006 hb_font_create (hb_face_t *face);
1007
1008 HB_EXTERN hb_font_t *
1009 hb_font_create_sub_font (hb_font_t *parent);
1010
1011 HB_EXTERN hb_font_t *
1012 hb_font_get_empty (void);
1013
1014 HB_EXTERN hb_font_t *
1015 hb_font_reference (hb_font_t *font);
1016
1017 HB_EXTERN void
1018 hb_font_destroy (hb_font_t *font);
1019
1020 HB_EXTERN hb_bool_t
1021 hb_font_set_user_data (hb_font_t *font,
1022 hb_user_data_key_t *key,
1023 void * data,
1024 hb_destroy_func_t destroy,
1025 hb_bool_t replace);
1026
1027
1028 HB_EXTERN void *
1029 hb_font_get_user_data (const hb_font_t *font,
1030 hb_user_data_key_t *key);
1031
1032 HB_EXTERN void
1033 hb_font_make_immutable (hb_font_t *font);
1034
1035 HB_EXTERN hb_bool_t
1036 hb_font_is_immutable (hb_font_t *font);
1037
1038 HB_EXTERN unsigned int
1039 hb_font_get_serial (hb_font_t *font);
1040
1041 HB_EXTERN void
1042 hb_font_changed (hb_font_t *font);
1043
1044 HB_EXTERN void
1045 hb_font_set_parent (hb_font_t *font,
1046 hb_font_t *parent);
1047
1048 HB_EXTERN hb_font_t *
1049 hb_font_get_parent (hb_font_t *font);
1050
1051 HB_EXTERN void
1052 hb_font_set_face (hb_font_t *font,
1053 hb_face_t *face);
1054
1055 HB_EXTERN hb_face_t *
1056 hb_font_get_face (hb_font_t *font);
1057
1058
1059 HB_EXTERN void
1060 hb_font_set_funcs (hb_font_t *font,
1061 hb_font_funcs_t *klass,
1062 void *font_data,
1063 hb_destroy_func_t destroy);
1064
1065
1066 HB_EXTERN void
1067 hb_font_set_funcs_data (hb_font_t *font,
1068 void *font_data,
1069 hb_destroy_func_t destroy);
1070
1071 HB_EXTERN hb_bool_t
1072 hb_font_set_funcs_using (hb_font_t *font,
1073 const char *name);
1074
1075 HB_EXTERN const char **
1076 hb_font_list_funcs (void);
1077
1078 HB_EXTERN void
1079 hb_font_set_scale (hb_font_t *font,
1080 int x_scale,
1081 int y_scale);
1082
1083 HB_EXTERN void
1084 hb_font_get_scale (hb_font_t *font,
1085 int *x_scale,
1086 int *y_scale);
1087
1088
1089
1090
1091 HB_EXTERN void
1092 hb_font_set_ppem (hb_font_t *font,
1093 unsigned int x_ppem,
1094 unsigned int y_ppem);
1095
1096 HB_EXTERN void
1097 hb_font_get_ppem (hb_font_t *font,
1098 unsigned int *x_ppem,
1099 unsigned int *y_ppem);
1100
1101
1102
1103
1104
1105 HB_EXTERN void
1106 hb_font_set_ptem (hb_font_t *font, float ptem);
1107
1108 HB_EXTERN float
1109 hb_font_get_ptem (hb_font_t *font);
1110
1111 HB_EXTERN hb_bool_t
1112 hb_font_is_synthetic (hb_font_t *font);
1113
1114 HB_EXTERN void
1115 hb_font_set_synthetic_bold (hb_font_t *font,
1116 float x_embolden, float y_embolden,
1117 hb_bool_t in_place);
1118
1119 HB_EXTERN void
1120 hb_font_get_synthetic_bold (hb_font_t *font,
1121 float *x_embolden, float *y_embolden,
1122 hb_bool_t *in_place);
1123
1124 HB_EXTERN void
1125 hb_font_set_synthetic_slant (hb_font_t *font, float slant);
1126
1127 HB_EXTERN float
1128 hb_font_get_synthetic_slant (hb_font_t *font);
1129
1130 HB_EXTERN void
1131 hb_font_set_variations (hb_font_t *font,
1132 const hb_variation_t *variations,
1133 unsigned int variations_length);
1134
1135 HB_EXTERN void
1136 hb_font_set_variation (hb_font_t *font,
1137 hb_tag_t tag,
1138 float value);
1139
1140 HB_EXTERN void
1141 hb_font_set_var_coords_design (hb_font_t *font,
1142 const float *coords,
1143 unsigned int coords_length);
1144
1145 HB_EXTERN const float *
1146 hb_font_get_var_coords_design (hb_font_t *font,
1147 unsigned int *length);
1148
1149 HB_EXTERN void
1150 hb_font_set_var_coords_normalized (hb_font_t *font,
1151 const int *coords,
1152 unsigned int coords_length);
1153
1154 HB_EXTERN const int *
1155 hb_font_get_var_coords_normalized (hb_font_t *font,
1156 unsigned int *length);
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167 #define HB_FONT_NO_VAR_NAMED_INSTANCE 0xFFFFFFFF
1168
1169 HB_EXTERN void
1170 hb_font_set_var_named_instance (hb_font_t *font,
1171 unsigned int instance_index);
1172
1173 HB_EXTERN unsigned int
1174 hb_font_get_var_named_instance (hb_font_t *font);
1175
1176 HB_END_DECLS
1177
1178 #endif