/* ATTENTION: This file doesn't compile.  It is only here as a reference */
/*            of an alternative latin hinting algorithm that was always  */
/*            marked as experimental.                                    */


/****************************************************************************
 *
 * aflatin2.h
 *
 *   Auto-fitter hinting routines for latin writing system
 *   (specification).
 *
 * Copyright (C) 2003-2021 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 AFLATIN2_H_
#define AFLATIN2_H_

#include "afhints.h"


FT_BEGIN_HEADER


  /* the `latin' writing system */

  AF_DECLARE_WRITING_SYSTEM_CLASS( af_latin2_writing_system_class )


/* */

FT_END_HEADER

#endif /* AFLATIN_H_ */


/* END */
