Warning, file /include/harfbuzz/hb-font.h was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
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