Source code
Revision control
Copy as Markdown
Other Tools
/****************************************************************************
*
* afadjust.h
*
* Auto-fitter routines to adjust components based on charcode (header).
*
* Copyright (C) 2023-2025 by
* David Turner, Robert Wilhelm, and Werner Lemberg.
*
* Written by Craig White <gerzytet@gmail.com>.
*
* 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 AFADJUST_H_
#define AFADJUST_H_
#include <freetype/fttypes.h>
#include "afglobal.h"
#include "aftypes.h"
FT_BEGIN_HEADER
/*
* Adjustment type flags.
*
* They also specify topological constraints that the auto-hinter relies
* on. For example, using `AF_ADJUST_UP` implies that we have two
* enclosing contours, one for the base glyph and one for the diacritic
* above, and no other contour inbetween or above. With 'enclosing' it is
* meant that such a contour can contain more inner contours.
*
*/
/* Find the topmost contour and push it up until its lowest point is */
/* one pixel above the highest point not enclosed by that contour. */
#define AF_ADJUST_UP 0x01
/* Find the bottommost contour and push it down until its highest point */
/* is one pixel below the lowest point not enclosed by that contour. */
#define AF_ADJUST_DOWN 0x02
/* Find the contour below the topmost contour and push it up, together */
/* with the topmost contour, until its lowest point is one pixel above */
/* the highest point not enclosed by that contour. This flag is */
/* mutually exclusive with `AF_ADJUST_UP`. */
#define AF_ADJUST_UP2 0x04
/* Find the contour above the bottommost contour and push it down, */
/* together with the bottommost contour, until its highest point is */
/* one pixel below the lowest point not enclosed by that contour. */
/* This flag is mutually exclusive with `AF_ADJUST_DOWN`. */
#define AF_ADJUST_DOWN2 0x08
/* The topmost contour is a tilde. Enlarge it vertically so that it */
/* stays legible at small sizes, not degenerating to a horizontal line. */
#define AF_ADJUST_TILDE_TOP 0x10
/* The bottommost contour is a tilde. Enlarge it vertically so that it */
/* stays legible at small sizes, not degenerating to a horizontal line. */
#define AF_ADJUST_TILDE_BOTTOM 0x20
/* The contour below the topmost contour is a tilde. Enlarge it */
/* vertically so that it stays legible at small sizes, not degenerating */
/* to a horizontal line. To be used with `AF_ADJUST_UP2` only. */
#define AF_ADJUST_TILDE_TOP2 0x40
/* The contour above the bottommost contour is a tilde. Enlarge it */
/* vertically so that it stays legible at small sizes, not degenerating */
/* to a horizontal line. To be used with `AF_ADJUST_DOWN2` only. */
#define AF_ADJUST_TILDE_BOTTOM2 0x80
/* Make the auto-hinter ignore any diacritic (either a separate contour */
/* or part of the base character outline) that is attached to the top */
/* of an uppercase base character. */
#define AF_IGNORE_CAPITAL_TOP 0x100
/* Make the auto-hinter ignore any diacritic (either a separate contour */
/* or part of the base character outline) that is attached to the */
/* bottom of an uppercase base character. */
#define AF_IGNORE_CAPITAL_BOTTOM 0x200
/* Make the auto-hinter ignore any diacritic (either a separate contour */
/* or part of the base character outline) that is attached to the top */
/* of a lowercase base character. */
#define AF_IGNORE_SMALL_TOP 0x400
/* Make the auto-hinter ignore any diacritic (either a separate contour */
/* or part of the base character outline) that is attached to the */
/* bottom of a lowercase base character. */
#define AF_IGNORE_SMALL_BOTTOM 0x800
/* By default, the AF_ADJUST_XXX flags are applied only if diacritics */
/* have a 'small' height (based on some heuristic checks). If this */
/* flag is set, no such check is performed. */
#define AF_ADJUST_NO_HEIGHT_CHECK 0x1000
/* No adjustment, i.e., no flag is set. */
#define AF_ADJUST_NONE 0x00
FT_LOCAL( FT_UInt32 )
af_adjustment_database_lookup( FT_UInt32 codepoint );
/* Allocate and populate the reverse character map, */
/* using the character map within the face. */
FT_LOCAL( FT_Error )
af_reverse_character_map_new( FT_Hash *map,
AF_StyleMetrics metrics );
/* Free the reverse character map. */
FT_LOCAL( FT_Error )
af_reverse_character_map_done( FT_Hash map,
FT_Memory memory );
FT_END_HEADER
#endif /* AFADJUST_H_ */
/* END */