(root)/
freetype-2.13.2/
src/
psaux/
psauxmod.c
       1  /****************************************************************************
       2   *
       3   * psauxmod.c
       4   *
       5   *   FreeType auxiliary PostScript module implementation (body).
       6   *
       7   * Copyright (C) 2000-2023 by
       8   * David Turner, Robert Wilhelm, and Werner Lemberg.
       9   *
      10   * This file is part of the FreeType project, and may only be used,
      11   * modified, and distributed under the terms of the FreeType project
      12   * license, LICENSE.TXT.  By continuing to use, modify, or distribute
      13   * this file you indicate that you have read the license and
      14   * understand and accept it fully.
      15   *
      16   */
      17  
      18  
      19  #include "psauxmod.h"
      20  #include "psobjs.h"
      21  #include "t1decode.h"
      22  #include "t1cmap.h"
      23  #include "psft.h"
      24  #include "cffdecode.h"
      25  
      26  #ifndef T1_CONFIG_OPTION_NO_AFM
      27  #include "afmparse.h"
      28  #endif
      29  
      30  
      31    FT_CALLBACK_TABLE_DEF
      32    const PS_Table_FuncsRec  ps_table_funcs =
      33    {
      34      ps_table_new,     /* init    */
      35      ps_table_done,    /* done    */
      36      ps_table_add,     /* add     */
      37      ps_table_release  /* release */
      38    };
      39  
      40  
      41    FT_CALLBACK_TABLE_DEF
      42    const PS_Parser_FuncsRec  ps_parser_funcs =
      43    {
      44      ps_parser_init,             /* init             */
      45      ps_parser_done,             /* done             */
      46  
      47      ps_parser_skip_spaces,      /* skip_spaces      */
      48      ps_parser_skip_PS_token,    /* skip_PS_token    */
      49  
      50      ps_parser_to_int,           /* to_int           */
      51      ps_parser_to_fixed,         /* to_fixed         */
      52      ps_parser_to_bytes,         /* to_bytes         */
      53      ps_parser_to_coord_array,   /* to_coord_array   */
      54      ps_parser_to_fixed_array,   /* to_fixed_array   */
      55      ps_parser_to_token,         /* to_token         */
      56      ps_parser_to_token_array,   /* to_token_array   */
      57  
      58      ps_parser_load_field,       /* load_field       */
      59      ps_parser_load_field_table  /* load_field_table */
      60    };
      61  
      62  
      63    FT_CALLBACK_TABLE_DEF
      64    const PS_Builder_FuncsRec  ps_builder_funcs =
      65    {
      66      ps_builder_init,          /* init */
      67      ps_builder_done           /* done */
      68    };
      69  
      70  
      71    FT_CALLBACK_TABLE_DEF
      72    const T1_Builder_FuncsRec  t1_builder_funcs =
      73    {
      74      t1_builder_init,          /* init */
      75      t1_builder_done,          /* done */
      76  
      77      t1_builder_check_points,  /* check_points  */
      78      t1_builder_add_point,     /* add_point     */
      79      t1_builder_add_point1,    /* add_point1    */
      80      t1_builder_add_contour,   /* add_contour   */
      81      t1_builder_start_point,   /* start_point   */
      82      t1_builder_close_contour  /* close_contour */
      83    };
      84  
      85  
      86    FT_CALLBACK_TABLE_DEF
      87    const T1_Decoder_FuncsRec  t1_decoder_funcs =
      88    {
      89      t1_decoder_init,               /* init                  */
      90      t1_decoder_done,               /* done                  */
      91  #ifdef T1_CONFIG_OPTION_OLD_ENGINE
      92      t1_decoder_parse_charstrings,  /* parse_charstrings_old */
      93  #else
      94      t1_decoder_parse_metrics,      /* parse_metrics         */
      95  #endif
      96      cf2_decoder_parse_charstrings  /* parse_charstrings     */
      97    };
      98  
      99  
     100  #ifndef T1_CONFIG_OPTION_NO_AFM
     101    FT_CALLBACK_TABLE_DEF
     102    const AFM_Parser_FuncsRec  afm_parser_funcs =
     103    {
     104      afm_parser_init,  /* init  */
     105      afm_parser_done,  /* done  */
     106      afm_parser_parse  /* parse */
     107    };
     108  #endif
     109  
     110  
     111    FT_CALLBACK_TABLE_DEF
     112    const T1_CMap_ClassesRec  t1_cmap_classes =
     113    {
     114      &t1_cmap_standard_class_rec,
     115      &t1_cmap_expert_class_rec,
     116      &t1_cmap_custom_class_rec,
     117      &t1_cmap_unicode_class_rec
     118    };
     119  
     120  
     121    FT_CALLBACK_TABLE_DEF
     122    const CFF_Builder_FuncsRec  cff_builder_funcs =
     123    {
     124      cff_builder_init,          /* init */
     125      cff_builder_done,          /* done */
     126  
     127      cff_check_points,          /* check_points  */
     128      cff_builder_add_point,     /* add_point     */
     129      cff_builder_add_point1,    /* add_point1    */
     130      cff_builder_add_contour,   /* add_contour   */
     131      cff_builder_start_point,   /* start_point   */
     132      cff_builder_close_contour  /* close_contour */
     133    };
     134  
     135  
     136    FT_CALLBACK_TABLE_DEF
     137    const CFF_Decoder_FuncsRec  cff_decoder_funcs =
     138    {
     139      cff_decoder_init,              /* init    */
     140      cff_decoder_prepare,           /* prepare */
     141  
     142  #ifdef CFF_CONFIG_OPTION_OLD_ENGINE
     143      cff_decoder_parse_charstrings, /* parse_charstrings_old */
     144  #endif
     145      cf2_decoder_parse_charstrings  /* parse_charstrings     */
     146    };
     147  
     148  
     149    static
     150    const PSAux_Interface  psaux_interface =
     151    {
     152      &ps_table_funcs,
     153      &ps_parser_funcs,
     154      &t1_builder_funcs,
     155      &t1_decoder_funcs,
     156      t1_decrypt,
     157      cff_random,
     158      ps_decoder_init,
     159      t1_make_subfont,
     160  
     161      (const T1_CMap_ClassesRec*) &t1_cmap_classes,
     162  
     163  #ifndef T1_CONFIG_OPTION_NO_AFM
     164      &afm_parser_funcs,
     165  #else
     166      0,
     167  #endif
     168  
     169      &cff_decoder_funcs,
     170    };
     171  
     172  
     173    FT_DEFINE_MODULE(
     174      psaux_module_class,
     175  
     176      0,
     177      sizeof ( FT_ModuleRec ),
     178      "psaux",
     179      0x20000L,
     180      0x20000L,
     181  
     182      &psaux_interface,  /* module-specific interface */
     183  
     184      (FT_Module_Constructor)NULL,  /* module_init   */
     185      (FT_Module_Destructor) NULL,  /* module_done   */
     186      (FT_Module_Requester)  NULL   /* get_interface */
     187    )
     188  
     189  
     190  /* END */