godot/thirdparty/freetype/src/autofit/afcjk.h

/****************************************************************************
 *
 * afcjk.h
 *
 *   Auto-fitter hinting routines for CJK writing system (specification).
 *
 * Copyright (C) 2006-2023 by
 * David Turner, Robert Wilhelm, and Werner Lemberg.
 *
 * This file is part of the FreeType project, and may only be used,
 * modified, and distributed under the terms of the FreeType project
 * license, LICENSE.TXT.  By continuing to use, modify, or distribute
 * this file you indicate that you have read the license and
 * understand and accept it fully.
 *
 */


#ifndef AFCJK_H_
#define AFCJK_H_

#include "afhints.h"
#include "aflatin.h"


FT_BEGIN_HEADER


  /* the CJK-specific writing system */

  AF_DECLARE_WRITING_SYSTEM_CLASS( af_cjk_writing_system_class )


  /*************************************************************************/
  /*************************************************************************/
  /*****                                                               *****/
  /*****              C J K   G L O B A L   M E T R I C S              *****/
  /*****                                                               *****/
  /*************************************************************************/
  /*************************************************************************/


  /*
   * CJK glyphs tend to fill the square.  So we have both vertical and
   * horizontal blue zones.  But some glyphs have flat bounding strokes that
   * leave some space between neighbour glyphs.
   */

#define AF_CJK_IS_TOP_BLUE( b )
#define AF_CJK_IS_HORIZ_BLUE( b )
#define AF_CJK_IS_RIGHT_BLUE

#define AF_CJK_MAX_WIDTHS


#define AF_CJK_BLUE_ACTIVE
#define AF_CJK_BLUE_TOP
#define AF_CJK_BLUE_ADJUSTMENT
                                            /* optimization                 */


  AF_CJKBlue;


  AF_CJKAxis;


  AF_CJKMetrics;


#ifdef AF_CONFIG_OPTION_CJK
  FT_LOCAL( FT_Error )
  af_cjk_metrics_init( AF_StyleMetrics  metrics,
                       FT_Face          face );

  FT_LOCAL( void )
  af_cjk_metrics_scale( AF_StyleMetrics  metrics,
                        AF_Scaler        scaler );

  FT_LOCAL( FT_Error )
  af_cjk_hints_init( AF_GlyphHints    hints,
                     AF_StyleMetrics  metrics );

  FT_LOCAL( FT_Error )
  af_cjk_hints_apply( FT_UInt          glyph_index,
                      AF_GlyphHints    hints,
                      FT_Outline*      outline,
                      AF_StyleMetrics  metrics );

  /* shared; called from afindic.c */
  FT_LOCAL( void )
  af_cjk_metrics_check_digits( AF_CJKMetrics  metrics,
                               FT_Face        face );

  FT_LOCAL( void )
  af_cjk_metrics_init_widths( AF_CJKMetrics  metrics,
                              FT_Face        face );
#endif /* AF_CONFIG_OPTION_CJK */


/* */

FT_END_HEADER

#endif /* AFCJK_H_ */


/* END */