565 #ifndef FT_CONFIG_OPTION_PIC
566
567 #define FT_DEFINE_SFNT_INTERFACE( \
568 class_, \
569 goto_table_, \
570 init_face_, \
571 load_face_, \
572 done_face_, \
573 get_interface_, \
574 load_any_, \
575 load_head_, \
576 load_hhea_, \
577 load_cmap_, \
578 load_maxp_, \
579 load_os2_, \
580 load_post_, \
581 load_name_, \
582 free_name_, \
583 load_kern_, \
584 load_gasp_, \
585 load_pclt_, \
586 load_bhed_, \
587 load_sbit_image_, \
588 get_psname_, \
589 free_psnames_, \
590 get_kerning_, \
591 load_font_dir_, \
592 load_hmtx_, \
593 load_eblc_, \
594 free_eblc_, \
595 set_sbit_strike_, \
596 load_strike_metrics_, \
597 get_metrics_ ) \
598 static const SFNT_Interface class_ = \
599 { \
600 goto_table_, \
601 init_face_, \
602 load_face_, \
603 done_face_, \
604 get_interface_, \
605 load_any_, \
606 load_head_, \
607 load_hhea_, \
608 load_cmap_, \
609 load_maxp_, \
610 load_os2_, \
611 load_post_, \
612 load_name_, \
613 free_name_, \
614 load_kern_, \
615 load_gasp_, \
616 load_pclt_, \
617 load_bhed_, \
618 load_sbit_image_, \
619 get_psname_, \
620 free_psnames_, \
621 get_kerning_, \
622 load_font_dir_, \
623 load_hmtx_, \
624 load_eblc_, \
625 free_eblc_, \
626 set_sbit_strike_, \
627 load_strike_metrics_, \
628 get_metrics_, \
629 };
630
631 #else
632
633 #define FT_INTERNAL( a, a_ ) \
634 clazz->a = a_;
635
636 #define FT_DEFINE_SFNT_INTERFACE( \
637 class_, \
638 goto_table_, \
639 init_face_, \
640 load_face_, \
641 done_face_, \
642 get_interface_, \
643 load_any_, \
644 load_head_, \
645 load_hhea_, \
646 load_cmap_, \
647 load_maxp_, \
648 load_os2_, \
649 load_post_, \
650 load_name_, \
651 free_name_, \
652 load_kern_, \
653 load_gasp_, \
654 load_pclt_, \
655 load_bhed_, \
656 load_sbit_image_, \
657 get_psname_, \
658 free_psnames_, \
659 get_kerning_, \
660 load_font_dir_, \
661 load_hmtx_, \
662 load_eblc_, \
663 free_eblc_, \
664 set_sbit_strike_, \
665 load_strike_metrics_, \
666 get_metrics_ ) \
667 void \
668 FT_Init_Class_ ## class_( FT_Library library, \
669 SFNT_Interface* clazz ) \
670 { \
671 FT_UNUSED( library ); \
672 \
673 clazz->goto_table = goto_table_; \
674 clazz->init_face = init_face_; \
675 clazz->load_face = load_face_; \
676 clazz->done_face = done_face_; \
677 clazz->get_interface = get_interface_; \
678 clazz->load_any = load_any_; \
679 clazz->load_head = load_head_; \
680 clazz->load_hhea = load_hhea_; \
681 clazz->load_cmap = load_cmap_; \
682 clazz->load_maxp = load_maxp_; \
683 clazz->load_os2 = load_os2_; \
684 clazz->load_post = load_post_; \
685 clazz->load_name = load_name_; \
686 clazz->free_name = free_name_; \
687 clazz->load_kern = load_kern_; \
688 clazz->load_gasp = load_gasp_; \
689 clazz->load_pclt = load_pclt_; \
690 clazz->load_bhed = load_bhed_; \
691 clazz->load_sbit_image = load_sbit_image_; \
692 clazz->get_psname = get_psname_; \
693 clazz->free_psnames = free_psnames_; \
694 clazz->get_kerning = get_kerning_; \
695 clazz->load_font_dir = load_font_dir_; \
696 clazz->load_hmtx = load_hmtx_; \
697 clazz->load_eblc = load_eblc_; \
698 clazz->free_eblc = free_eblc_; \
699 clazz->set_sbit_strike = set_sbit_strike_; \
700 clazz->load_strike_metrics = load_strike_metrics_; \
701 clazz->get_metrics = get_metrics_; \
702 }
703
704 #endif