Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /***************************************************************************/
  2. /*                                                                         */
  3. /*  pshints.h                                                              */
  4. /*                                                                         */
  5. /*    Interface to Postscript-specific (Type 1 and Type 2) hints           */
  6. /*    recorders (specification only).  These are used to support native    */
  7. /*    T1/T2 hints in the `type1', `cid', and `cff' font drivers.           */
  8. /*                                                                         */
  9. /*  Copyright 2001, 2002, 2003, 2005, 2006, 2007, 2009 by                  */
  10. /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
  11. /*                                                                         */
  12. /*  This file is part of the FreeType project, and may only be used,       */
  13. /*  modified, and distributed under the terms of the FreeType project      */
  14. /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
  15. /*  this file you indicate that you have read the license and              */
  16. /*  understand and accept it fully.                                        */
  17. /*                                                                         */
  18. /***************************************************************************/
  19.  
  20.  
  21. #ifndef __PSHINTS_H__
  22. #define __PSHINTS_H__
  23.  
  24.  
  25. #include <ft2build.h>
  26. #include FT_FREETYPE_H
  27. #include FT_TYPE1_TABLES_H
  28.  
  29.  
  30. FT_BEGIN_HEADER
  31.  
  32.  
  33.   /*************************************************************************/
  34.   /*************************************************************************/
  35.   /*****                                                               *****/
  36.   /*****               INTERNAL REPRESENTATION OF GLOBALS              *****/
  37.   /*****                                                               *****/
  38.   /*************************************************************************/
  39.   /*************************************************************************/
  40.  
  41.   typedef struct PSH_GlobalsRec_*  PSH_Globals;
  42.  
  43.   typedef FT_Error
  44.   (*PSH_Globals_NewFunc)( FT_Memory     memory,
  45.                           T1_Private*   private_dict,
  46.                           PSH_Globals*  aglobals );
  47.  
  48.   typedef FT_Error
  49.   (*PSH_Globals_SetScaleFunc)( PSH_Globals  globals,
  50.                                FT_Fixed     x_scale,
  51.                                FT_Fixed     y_scale,
  52.                                FT_Fixed     x_delta,
  53.                                FT_Fixed     y_delta );
  54.  
  55.   typedef void
  56.   (*PSH_Globals_DestroyFunc)( PSH_Globals  globals );
  57.  
  58.  
  59.   typedef struct  PSH_Globals_FuncsRec_
  60.   {
  61.     PSH_Globals_NewFunc       create;
  62.     PSH_Globals_SetScaleFunc  set_scale;
  63.     PSH_Globals_DestroyFunc   destroy;
  64.  
  65.   } PSH_Globals_FuncsRec, *PSH_Globals_Funcs;
  66.  
  67.  
  68.   /*************************************************************************/
  69.   /*************************************************************************/
  70.   /*****                                                               *****/
  71.   /*****                  PUBLIC TYPE 1 HINTS RECORDER                 *****/
  72.   /*****                                                               *****/
  73.   /*************************************************************************/
  74.   /*************************************************************************/
  75.  
  76.   /*************************************************************************
  77.    *
  78.    * @type:
  79.    *   T1_Hints
  80.    *
  81.    * @description:
  82.    *   This is a handle to an opaque structure used to record glyph hints
  83.    *   from a Type 1 character glyph character string.
  84.    *
  85.    *   The methods used to operate on this object are defined by the
  86.    *   @T1_Hints_FuncsRec structure.  Recording glyph hints is normally
  87.    *   achieved through the following scheme:
  88.    *
  89.    *   - Open a new hint recording session by calling the `open' method.
  90.    *     This rewinds the recorder and prepare it for new input.
  91.    *
  92.    *   - For each hint found in the glyph charstring, call the corresponding
  93.    *     method (`stem', `stem3', or `reset').  Note that these functions do
  94.    *     not return an error code.
  95.    *
  96.    *   - Close the recording session by calling the `close' method.  It
  97.    *     returns an error code if the hints were invalid or something
  98.    *     strange happened (e.g., memory shortage).
  99.    *
  100.    *   The hints accumulated in the object can later be used by the
  101.    *   PostScript hinter.
  102.    *
  103.    */
  104.   typedef struct T1_HintsRec_*  T1_Hints;
  105.  
  106.  
  107.   /*************************************************************************
  108.    *
  109.    * @type:
  110.    *   T1_Hints_Funcs
  111.    *
  112.    * @description:
  113.    *   A pointer to the @T1_Hints_FuncsRec structure that defines the API of
  114.    *   a given @T1_Hints object.
  115.    *
  116.    */
  117.   typedef const struct T1_Hints_FuncsRec_*  T1_Hints_Funcs;
  118.  
  119.  
  120.   /*************************************************************************
  121.    *
  122.    * @functype:
  123.    *   T1_Hints_OpenFunc
  124.    *
  125.    * @description:
  126.    *   A method of the @T1_Hints class used to prepare it for a new Type 1
  127.    *   hints recording session.
  128.    *
  129.    * @input:
  130.    *   hints ::
  131.    *     A handle to the Type 1 hints recorder.
  132.    *
  133.    * @note:
  134.    *   You should always call the @T1_Hints_CloseFunc method in order to
  135.    *   close an opened recording session.
  136.    *
  137.    */
  138.   typedef void
  139.   (*T1_Hints_OpenFunc)( T1_Hints  hints );
  140.  
  141.  
  142.   /*************************************************************************
  143.    *
  144.    * @functype:
  145.    *   T1_Hints_SetStemFunc
  146.    *
  147.    * @description:
  148.    *   A method of the @T1_Hints class used to record a new horizontal or
  149.    *   vertical stem.  This corresponds to the Type 1 `hstem' and `vstem'
  150.    *   operators.
  151.    *
  152.    * @input:
  153.    *   hints ::
  154.    *     A handle to the Type 1 hints recorder.
  155.    *
  156.    *   dimension ::
  157.    *     0 for horizontal stems (hstem), 1 for vertical ones (vstem).
  158.    *
  159.    *   coords ::
  160.    *     Array of 2 coordinates in 16.16 format, used as (position,length)
  161.    *     stem descriptor.
  162.    *
  163.    * @note:
  164.    *   Use vertical coordinates (y) for horizontal stems (dim=0).  Use
  165.    *   horizontal coordinates (x) for vertical stems (dim=1).
  166.    *
  167.    *   `coords[0]' is the absolute stem position (lowest coordinate);
  168.    *   `coords[1]' is the length.
  169.    *
  170.    *   The length can be negative, in which case it must be either -20 or
  171.    *   -21.  It is interpreted as a `ghost' stem, according to the Type 1
  172.    *   specification.
  173.    *
  174.    *   If the length is -21 (corresponding to a bottom ghost stem), then
  175.    *   the real stem position is `coords[0]+coords[1]'.
  176.    *
  177.    */
  178.   typedef void
  179.   (*T1_Hints_SetStemFunc)( T1_Hints   hints,
  180.                            FT_UInt    dimension,
  181.                            FT_Fixed*  coords );
  182.  
  183.  
  184.   /*************************************************************************
  185.    *
  186.    * @functype:
  187.    *   T1_Hints_SetStem3Func
  188.    *
  189.    * @description:
  190.    *   A method of the @T1_Hints class used to record three
  191.    *   counter-controlled horizontal or vertical stems at once.
  192.    *
  193.    * @input:
  194.    *   hints ::
  195.    *     A handle to the Type 1 hints recorder.
  196.    *
  197.    *   dimension ::
  198.    *     0 for horizontal stems, 1 for vertical ones.
  199.    *
  200.    *   coords ::
  201.    *     An array of 6 values in 16.16 format, holding 3 (position,length)
  202.    *     pairs for the counter-controlled stems.
  203.    *
  204.    * @note:
  205.    *   Use vertical coordinates (y) for horizontal stems (dim=0).  Use
  206.    *   horizontal coordinates (x) for vertical stems (dim=1).
  207.    *
  208.    *   The lengths cannot be negative (ghost stems are never
  209.    *   counter-controlled).
  210.    *
  211.    */
  212.   typedef void
  213.   (*T1_Hints_SetStem3Func)( T1_Hints   hints,
  214.                             FT_UInt    dimension,
  215.                             FT_Fixed*  coords );
  216.  
  217.  
  218.   /*************************************************************************
  219.    *
  220.    * @functype:
  221.    *   T1_Hints_ResetFunc
  222.    *
  223.    * @description:
  224.    *   A method of the @T1_Hints class used to reset the stems hints in a
  225.    *   recording session.
  226.    *
  227.    * @input:
  228.    *   hints ::
  229.    *     A handle to the Type 1 hints recorder.
  230.    *
  231.    *   end_point ::
  232.    *     The index of the last point in the input glyph in which the
  233.    *     previously defined hints apply.
  234.    *
  235.    */
  236.   typedef void
  237.   (*T1_Hints_ResetFunc)( T1_Hints  hints,
  238.                          FT_UInt   end_point );
  239.  
  240.  
  241.   /*************************************************************************
  242.    *
  243.    * @functype:
  244.    *   T1_Hints_CloseFunc
  245.    *
  246.    * @description:
  247.    *   A method of the @T1_Hints class used to close a hint recording
  248.    *   session.
  249.    *
  250.    * @input:
  251.    *   hints ::
  252.    *     A handle to the Type 1 hints recorder.
  253.    *
  254.    *   end_point ::
  255.    *     The index of the last point in the input glyph.
  256.    *
  257.    * @return:
  258.    *   FreeType error code.  0 means success.
  259.    *
  260.    * @note:
  261.    *   The error code is set to indicate that an error occurred during the
  262.    *   recording session.
  263.    *
  264.    */
  265.   typedef FT_Error
  266.   (*T1_Hints_CloseFunc)( T1_Hints  hints,
  267.                          FT_UInt   end_point );
  268.  
  269.  
  270.   /*************************************************************************
  271.    *
  272.    * @functype:
  273.    *   T1_Hints_ApplyFunc
  274.    *
  275.    * @description:
  276.    *   A method of the @T1_Hints class used to apply hints to the
  277.    *   corresponding glyph outline.  Must be called once all hints have been
  278.    *   recorded.
  279.    *
  280.    * @input:
  281.    *   hints ::
  282.    *     A handle to the Type 1 hints recorder.
  283.    *
  284.    *   outline ::
  285.    *     A pointer to the target outline descriptor.
  286.    *
  287.    *   globals ::
  288.    *     The hinter globals for this font.
  289.    *
  290.    *   hint_mode ::
  291.    *     Hinting information.
  292.    *
  293.    * @return:
  294.    *   FreeType error code.  0 means success.
  295.    *
  296.    * @note:
  297.    *   On input, all points within the outline are in font coordinates. On
  298.    *   output, they are in 1/64th of pixels.
  299.    *
  300.    *   The scaling transformation is taken from the `globals' object which
  301.    *   must correspond to the same font as the glyph.
  302.    *
  303.    */
  304.   typedef FT_Error
  305.   (*T1_Hints_ApplyFunc)( T1_Hints        hints,
  306.                          FT_Outline*     outline,
  307.                          PSH_Globals     globals,
  308.                          FT_Render_Mode  hint_mode );
  309.  
  310.  
  311.   /*************************************************************************
  312.    *
  313.    * @struct:
  314.    *   T1_Hints_FuncsRec
  315.    *
  316.    * @description:
  317.    *   The structure used to provide the API to @T1_Hints objects.
  318.    *
  319.    * @fields:
  320.    *   hints ::
  321.    *     A handle to the T1 Hints recorder.
  322.    *
  323.    *   open ::
  324.    *     The function to open a recording session.
  325.    *
  326.    *   close ::
  327.    *     The function to close a recording session.
  328.    *
  329.    *   stem ::
  330.    *     The function to set a simple stem.
  331.    *
  332.    *   stem3 ::
  333.    *     The function to set counter-controlled stems.
  334.    *
  335.    *   reset ::
  336.    *     The function to reset stem hints.
  337.    *
  338.    *   apply ::
  339.    *     The function to apply the hints to the corresponding glyph outline.
  340.    *
  341.    */
  342.   typedef struct  T1_Hints_FuncsRec_
  343.   {
  344.     T1_Hints               hints;
  345.     T1_Hints_OpenFunc      open;
  346.     T1_Hints_CloseFunc     close;
  347.     T1_Hints_SetStemFunc   stem;
  348.     T1_Hints_SetStem3Func  stem3;
  349.     T1_Hints_ResetFunc     reset;
  350.     T1_Hints_ApplyFunc     apply;
  351.  
  352.   } T1_Hints_FuncsRec;
  353.  
  354.  
  355.   /*************************************************************************/
  356.   /*************************************************************************/
  357.   /*****                                                               *****/
  358.   /*****                  PUBLIC TYPE 2 HINTS RECORDER                 *****/
  359.   /*****                                                               *****/
  360.   /*************************************************************************/
  361.   /*************************************************************************/
  362.  
  363.   /*************************************************************************
  364.    *
  365.    * @type:
  366.    *   T2_Hints
  367.    *
  368.    * @description:
  369.    *   This is a handle to an opaque structure used to record glyph hints
  370.    *   from a Type 2 character glyph character string.
  371.    *
  372.    *   The methods used to operate on this object are defined by the
  373.    *   @T2_Hints_FuncsRec structure.  Recording glyph hints is normally
  374.    *   achieved through the following scheme:
  375.    *
  376.    *   - Open a new hint recording session by calling the `open' method.
  377.    *     This rewinds the recorder and prepare it for new input.
  378.    *
  379.    *   - For each hint found in the glyph charstring, call the corresponding
  380.    *     method (`stems', `hintmask', `counters').  Note that these
  381.    *     functions do not return an error code.
  382.    *
  383.    *   - Close the recording session by calling the `close' method.  It
  384.    *     returns an error code if the hints were invalid or something
  385.    *     strange happened (e.g., memory shortage).
  386.    *
  387.    *   The hints accumulated in the object can later be used by the
  388.    *   Postscript hinter.
  389.    *
  390.    */
  391.   typedef struct T2_HintsRec_*  T2_Hints;
  392.  
  393.  
  394.   /*************************************************************************
  395.    *
  396.    * @type:
  397.    *   T2_Hints_Funcs
  398.    *
  399.    * @description:
  400.    *   A pointer to the @T2_Hints_FuncsRec structure that defines the API of
  401.    *   a given @T2_Hints object.
  402.    *
  403.    */
  404.   typedef const struct T2_Hints_FuncsRec_*  T2_Hints_Funcs;
  405.  
  406.  
  407.   /*************************************************************************
  408.    *
  409.    * @functype:
  410.    *   T2_Hints_OpenFunc
  411.    *
  412.    * @description:
  413.    *   A method of the @T2_Hints class used to prepare it for a new Type 2
  414.    *   hints recording session.
  415.    *
  416.    * @input:
  417.    *   hints ::
  418.    *     A handle to the Type 2 hints recorder.
  419.    *
  420.    * @note:
  421.    *   You should always call the @T2_Hints_CloseFunc method in order to
  422.    *   close an opened recording session.
  423.    *
  424.    */
  425.   typedef void
  426.   (*T2_Hints_OpenFunc)( T2_Hints  hints );
  427.  
  428.  
  429.   /*************************************************************************
  430.    *
  431.    * @functype:
  432.    *   T2_Hints_StemsFunc
  433.    *
  434.    * @description:
  435.    *   A method of the @T2_Hints class used to set the table of stems in
  436.    *   either the vertical or horizontal dimension.  Equivalent to the
  437.    *   `hstem', `vstem', `hstemhm', and `vstemhm' Type 2 operators.
  438.    *
  439.    * @input:
  440.    *   hints ::
  441.    *     A handle to the Type 2 hints recorder.
  442.    *
  443.    *   dimension ::
  444.    *     0 for horizontal stems (hstem), 1 for vertical ones (vstem).
  445.    *
  446.    *   count ::
  447.    *     The number of stems.
  448.    *
  449.    *   coords ::
  450.    *     An array of `count' (position,length) pairs in 16.16 format.
  451.    *
  452.    * @note:
  453.    *   Use vertical coordinates (y) for horizontal stems (dim=0).  Use
  454.    *   horizontal coordinates (x) for vertical stems (dim=1).
  455.    *
  456.    *   There are `2*count' elements in the `coords' array.  Each even
  457.    *   element is an absolute position in font units, each odd element is a
  458.    *   length in font units.
  459.    *
  460.    *   A length can be negative, in which case it must be either -20 or
  461.    *   -21.  It is interpreted as a `ghost' stem, according to the Type 1
  462.    *   specification.
  463.    *
  464.    */
  465.   typedef void
  466.   (*T2_Hints_StemsFunc)( T2_Hints   hints,
  467.                          FT_UInt    dimension,
  468.                          FT_UInt    count,
  469.                          FT_Fixed*  coordinates );
  470.  
  471.  
  472.   /*************************************************************************
  473.    *
  474.    * @functype:
  475.    *   T2_Hints_MaskFunc
  476.    *
  477.    * @description:
  478.    *   A method of the @T2_Hints class used to set a given hintmask (this
  479.    *   corresponds to the `hintmask' Type 2 operator).
  480.    *
  481.    * @input:
  482.    *   hints ::
  483.    *     A handle to the Type 2 hints recorder.
  484.    *
  485.    *   end_point ::
  486.    *     The glyph index of the last point to which the previously defined
  487.    *     or activated hints apply.
  488.    *
  489.    *   bit_count ::
  490.    *     The number of bits in the hint mask.
  491.    *
  492.    *   bytes ::
  493.    *     An array of bytes modelling the hint mask.
  494.    *
  495.    * @note:
  496.    *   If the hintmask starts the charstring (before any glyph point
  497.    *   definition), the value of `end_point' should be 0.
  498.    *
  499.    *   `bit_count' is the number of meaningful bits in the `bytes' array; it
  500.    *   must be equal to the total number of hints defined so far (i.e.,
  501.    *   horizontal+verticals).
  502.    *
  503.    *   The `bytes' array can come directly from the Type 2 charstring and
  504.    *   respects the same format.
  505.    *
  506.    */
  507.   typedef void
  508.   (*T2_Hints_MaskFunc)( T2_Hints        hints,
  509.                         FT_UInt         end_point,
  510.                         FT_UInt         bit_count,
  511.                         const FT_Byte*  bytes );
  512.  
  513.  
  514.   /*************************************************************************
  515.    *
  516.    * @functype:
  517.    *   T2_Hints_CounterFunc
  518.    *
  519.    * @description:
  520.    *   A method of the @T2_Hints class used to set a given counter mask
  521.    *   (this corresponds to the `hintmask' Type 2 operator).
  522.    *
  523.    * @input:
  524.    *   hints ::
  525.    *     A handle to the Type 2 hints recorder.
  526.    *
  527.    *   end_point ::
  528.    *     A glyph index of the last point to which the previously defined or
  529.    *     active hints apply.
  530.    *
  531.    *   bit_count ::
  532.    *     The number of bits in the hint mask.
  533.    *
  534.    *   bytes ::
  535.    *     An array of bytes modelling the hint mask.
  536.    *
  537.    * @note:
  538.    *   If the hintmask starts the charstring (before any glyph point
  539.    *   definition), the value of `end_point' should be 0.
  540.    *
  541.    *   `bit_count' is the number of meaningful bits in the `bytes' array; it
  542.    *   must be equal to the total number of hints defined so far (i.e.,
  543.    *   horizontal+verticals).
  544.    *
  545.    *    The `bytes' array can come directly from the Type 2 charstring and
  546.    *    respects the same format.
  547.    *
  548.    */
  549.   typedef void
  550.   (*T2_Hints_CounterFunc)( T2_Hints        hints,
  551.                            FT_UInt         bit_count,
  552.                            const FT_Byte*  bytes );
  553.  
  554.  
  555.   /*************************************************************************
  556.    *
  557.    * @functype:
  558.    *   T2_Hints_CloseFunc
  559.    *
  560.    * @description:
  561.    *   A method of the @T2_Hints class used to close a hint recording
  562.    *   session.
  563.    *
  564.    * @input:
  565.    *   hints ::
  566.    *     A handle to the Type 2 hints recorder.
  567.    *
  568.    *   end_point ::
  569.    *     The index of the last point in the input glyph.
  570.    *
  571.    * @return:
  572.    *   FreeType error code.  0 means success.
  573.    *
  574.    * @note:
  575.    *   The error code is set to indicate that an error occurred during the
  576.    *   recording session.
  577.    *
  578.    */
  579.   typedef FT_Error
  580.   (*T2_Hints_CloseFunc)( T2_Hints  hints,
  581.                          FT_UInt   end_point );
  582.  
  583.  
  584.   /*************************************************************************
  585.    *
  586.    * @functype:
  587.    *   T2_Hints_ApplyFunc
  588.    *
  589.    * @description:
  590.    *   A method of the @T2_Hints class used to apply hints to the
  591.    *   corresponding glyph outline.  Must be called after the `close'
  592.    *   method.
  593.    *
  594.    * @input:
  595.    *   hints ::
  596.    *     A handle to the Type 2 hints recorder.
  597.    *
  598.    *   outline ::
  599.    *     A pointer to the target outline descriptor.
  600.    *
  601.    *   globals ::
  602.    *     The hinter globals for this font.
  603.    *
  604.    *   hint_mode ::
  605.    *     Hinting information.
  606.    *
  607.    * @return:
  608.    *   FreeType error code.  0 means success.
  609.    *
  610.    * @note:
  611.    *   On input, all points within the outline are in font coordinates. On
  612.    *   output, they are in 1/64th of pixels.
  613.    *
  614.    *   The scaling transformation is taken from the `globals' object which
  615.    *   must correspond to the same font than the glyph.
  616.    *
  617.    */
  618.   typedef FT_Error
  619.   (*T2_Hints_ApplyFunc)( T2_Hints        hints,
  620.                          FT_Outline*     outline,
  621.                          PSH_Globals     globals,
  622.                          FT_Render_Mode  hint_mode );
  623.  
  624.  
  625.   /*************************************************************************
  626.    *
  627.    * @struct:
  628.    *   T2_Hints_FuncsRec
  629.    *
  630.    * @description:
  631.    *   The structure used to provide the API to @T2_Hints objects.
  632.    *
  633.    * @fields:
  634.    *   hints ::
  635.    *     A handle to the T2 hints recorder object.
  636.    *
  637.    *   open ::
  638.    *     The function to open a recording session.
  639.    *
  640.    *   close ::
  641.    *     The function to close a recording session.
  642.    *
  643.    *   stems ::
  644.    *     The function to set the dimension's stems table.
  645.    *
  646.    *   hintmask ::
  647.    *     The function to set hint masks.
  648.    *
  649.    *   counter ::
  650.    *     The function to set counter masks.
  651.    *
  652.    *   apply ::
  653.    *     The function to apply the hints on the corresponding glyph outline.
  654.    *
  655.    */
  656.   typedef struct  T2_Hints_FuncsRec_
  657.   {
  658.     T2_Hints              hints;
  659.     T2_Hints_OpenFunc     open;
  660.     T2_Hints_CloseFunc    close;
  661.     T2_Hints_StemsFunc    stems;
  662.     T2_Hints_MaskFunc     hintmask;
  663.     T2_Hints_CounterFunc  counter;
  664.     T2_Hints_ApplyFunc    apply;
  665.  
  666.   } T2_Hints_FuncsRec;
  667.  
  668.  
  669.   /* */
  670.  
  671.  
  672.   typedef struct  PSHinter_Interface_
  673.   {
  674.     PSH_Globals_Funcs  (*get_globals_funcs)( FT_Module  module );
  675.     T1_Hints_Funcs     (*get_t1_funcs)     ( FT_Module  module );
  676.     T2_Hints_Funcs     (*get_t2_funcs)     ( FT_Module  module );
  677.  
  678.   } PSHinter_Interface;
  679.  
  680.   typedef PSHinter_Interface*  PSHinter_Service;
  681.  
  682. #ifndef FT_CONFIG_OPTION_PIC
  683.  
  684. #define FT_DEFINE_PSHINTER_INTERFACE(class_, get_globals_funcs_,             \
  685.                                      get_t1_funcs_, get_t2_funcs_)           \
  686.   static const PSHinter_Interface class_ =                                   \
  687.   {                                                                          \
  688.     get_globals_funcs_, get_t1_funcs_, get_t2_funcs_                         \
  689.   };
  690.  
  691. #else /* FT_CONFIG_OPTION_PIC */
  692.  
  693. #define FT_DEFINE_PSHINTER_INTERFACE(class_, get_globals_funcs_,             \
  694.                                      get_t1_funcs_, get_t2_funcs_)           \
  695.   void                                                                       \
  696.   FT_Init_Class_##class_( FT_Library library,                                \
  697.                           PSHinter_Interface*  clazz)                        \
  698.   {                                                                          \
  699.     FT_UNUSED(library);                                                      \
  700.     clazz->get_globals_funcs = get_globals_funcs_;                           \
  701.     clazz->get_t1_funcs = get_t1_funcs_;                                     \
  702.     clazz->get_t2_funcs = get_t2_funcs_;                                     \
  703.   }
  704.  
  705. #endif /* FT_CONFIG_OPTION_PIC */
  706.  
  707. FT_END_HEADER
  708.  
  709. #endif /* __PSHINTS_H__ */
  710.  
  711.  
  712. /* END */
  713.