< prev index next >
src/java.desktop/share/native/libfreetype/include/freetype/internal/autohint.h
Print this page
*** 1,75 ****
! /***************************************************************************/
! /* */
! /* autohint.h */
! /* */
! /* High-level `autohint' module-specific interface (specification). */
! /* */
! /* Copyright 1996-2018 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. */
! /* */
! /***************************************************************************/
!
!
! /*************************************************************************/
! /* */
! /* The auto-hinter is used to load and automatically hint glyphs if a */
! /* format-specific hinter isn't available. */
! /* */
! /*************************************************************************/
#ifndef AUTOHINT_H_
#define AUTOHINT_H_
! /*************************************************************************/
! /* */
! /* A small technical note regarding automatic hinting in order to */
! /* clarify this module interface. */
! /* */
! /* An automatic hinter might compute two kinds of data for a given face: */
! /* */
! /* - global hints: Usually some metrics that describe global properties */
! /* of the face. It is computed by scanning more or less */
! /* aggressively the glyphs in the face, and thus can be */
! /* very slow to compute (even if the size of global */
! /* hints is really small). */
! /* */
! /* - glyph hints: These describe some important features of the glyph */
! /* outline, as well as how to align them. They are */
! /* generally much faster to compute than global hints. */
! /* */
! /* The current FreeType auto-hinter does a pretty good job while */
! /* performing fast computations for both global and glyph hints. */
! /* However, we might be interested in introducing more complex and */
! /* powerful algorithms in the future, like the one described in the John */
! /* D. Hobby paper, which unfortunately requires a lot more horsepower. */
! /* */
! /* Because a sufficiently sophisticated font management system would */
! /* typically implement an LRU cache of opened face objects to reduce */
! /* memory usage, it is a good idea to be able to avoid recomputing */
! /* global hints every time the same face is re-opened. */
! /* */
! /* We thus provide the ability to cache global hints outside of the face */
! /* object, in order to speed up font re-opening time. Of course, this */
! /* feature is purely optional, so most client programs won't even notice */
! /* it. */
! /* */
! /* I initially thought that it would be a good idea to cache the glyph */
! /* hints too. However, my general idea now is that if you really need */
! /* to cache these too, you are simply in need of a new font format, */
! /* where all this information could be stored within the font file and */
! /* decoded on the fly. */
! /* */
! /*************************************************************************/
#include <ft2build.h>
#include FT_FREETYPE_H
--- 1,75 ----
! /****************************************************************************
! *
! * autohint.h
! *
! * High-level 'autohint' module-specific interface (specification).
! *
! * Copyright (C) 1996-2019 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.
! *
! */
!
!
! /**************************************************************************
! *
! * The auto-hinter is used to load and automatically hint glyphs if a
! * format-specific hinter isn't available.
! *
! */
#ifndef AUTOHINT_H_
#define AUTOHINT_H_
! /**************************************************************************
! *
! * A small technical note regarding automatic hinting in order to clarify
! * this module interface.
! *
! * An automatic hinter might compute two kinds of data for a given face:
! *
! * - global hints: Usually some metrics that describe global properties
! * of the face. It is computed by scanning more or less
! * aggressively the glyphs in the face, and thus can be
! * very slow to compute (even if the size of global hints
! * is really small).
! *
! * - glyph hints: These describe some important features of the glyph
! * outline, as well as how to align them. They are
! * generally much faster to compute than global hints.
! *
! * The current FreeType auto-hinter does a pretty good job while performing
! * fast computations for both global and glyph hints. However, we might be
! * interested in introducing more complex and powerful algorithms in the
! * future, like the one described in the John D. Hobby paper, which
! * unfortunately requires a lot more horsepower.
! *
! * Because a sufficiently sophisticated font management system would
! * typically implement an LRU cache of opened face objects to reduce memory
! * usage, it is a good idea to be able to avoid recomputing global hints
! * every time the same face is re-opened.
! *
! * We thus provide the ability to cache global hints outside of the face
! * object, in order to speed up font re-opening time. Of course, this
! * feature is purely optional, so most client programs won't even notice
! * it.
! *
! * I initially thought that it would be a good idea to cache the glyph
! * hints too. However, my general idea now is that if you really need to
! * cache these too, you are simply in need of a new font format, where all
! * this information could be stored within the font file and decoded on the
! * fly.
! *
! */
#include <ft2build.h>
#include FT_FREETYPE_H
*** 78,206 ****
typedef struct FT_AutoHinterRec_ *FT_AutoHinter;
! /*************************************************************************/
! /* */
! /* <FuncType> */
! /* FT_AutoHinter_GlobalGetFunc */
! /* */
! /* <Description> */
! /* Retrieve the global hints computed for a given face object. The */
! /* resulting data is dissociated from the face and will survive a */
! /* call to FT_Done_Face(). It must be discarded through the API */
! /* FT_AutoHinter_GlobalDoneFunc(). */
! /* */
! /* <Input> */
! /* hinter :: A handle to the source auto-hinter. */
! /* */
! /* face :: A handle to the source face object. */
! /* */
! /* <Output> */
! /* global_hints :: A typeless pointer to the global hints. */
! /* */
! /* global_len :: The size in bytes of the global hints. */
! /* */
typedef void
(*FT_AutoHinter_GlobalGetFunc)( FT_AutoHinter hinter,
FT_Face face,
void** global_hints,
long* global_len );
! /*************************************************************************/
! /* */
! /* <FuncType> */
! /* FT_AutoHinter_GlobalDoneFunc */
! /* */
! /* <Description> */
! /* Discard the global hints retrieved through */
! /* FT_AutoHinter_GlobalGetFunc(). This is the only way these hints */
! /* are freed from memory. */
! /* */
! /* <Input> */
! /* hinter :: A handle to the auto-hinter module. */
! /* */
! /* global :: A pointer to retrieved global hints to discard. */
! /* */
typedef void
(*FT_AutoHinter_GlobalDoneFunc)( FT_AutoHinter hinter,
void* global );
! /*************************************************************************/
! /* */
! /* <FuncType> */
! /* FT_AutoHinter_GlobalResetFunc */
! /* */
! /* <Description> */
! /* This function is used to recompute the global metrics in a given */
! /* font. This is useful when global font data changes (e.g. Multiple */
! /* Masters fonts where blend coordinates change). */
! /* */
! /* <Input> */
! /* hinter :: A handle to the source auto-hinter. */
! /* */
! /* face :: A handle to the face. */
! /* */
typedef void
(*FT_AutoHinter_GlobalResetFunc)( FT_AutoHinter hinter,
FT_Face face );
! /*************************************************************************/
! /* */
! /* <FuncType> */
! /* FT_AutoHinter_GlyphLoadFunc */
! /* */
! /* <Description> */
! /* This function is used to load, scale, and automatically hint a */
! /* glyph from a given face. */
! /* */
! /* <Input> */
! /* face :: A handle to the face. */
! /* */
! /* glyph_index :: The glyph index. */
! /* */
! /* load_flags :: The load flags. */
! /* */
! /* <Note> */
! /* This function is capable of loading composite glyphs by hinting */
! /* each sub-glyph independently (which improves quality). */
! /* */
! /* It will call the font driver with @FT_Load_Glyph, with */
! /* @FT_LOAD_NO_SCALE set. */
! /* */
typedef FT_Error
(*FT_AutoHinter_GlyphLoadFunc)( FT_AutoHinter hinter,
FT_GlyphSlot slot,
FT_Size size,
FT_UInt glyph_index,
FT_Int32 load_flags );
! /*************************************************************************/
! /* */
! /* <Struct> */
! /* FT_AutoHinter_InterfaceRec */
! /* */
! /* <Description> */
! /* The auto-hinter module's interface. */
! /* */
typedef struct FT_AutoHinter_InterfaceRec_
{
FT_AutoHinter_GlobalResetFunc reset_face;
FT_AutoHinter_GlobalGetFunc get_global_hints;
FT_AutoHinter_GlobalDoneFunc done_global_hints;
FT_AutoHinter_GlyphLoadFunc load_glyph;
} FT_AutoHinter_InterfaceRec, *FT_AutoHinter_Interface;
- #ifndef FT_CONFIG_OPTION_PIC
-
#define FT_DEFINE_AUTOHINTER_INTERFACE( \
class_, \
reset_face_, \
get_global_hints_, \
done_global_hints_, \
--- 78,215 ----
typedef struct FT_AutoHinterRec_ *FT_AutoHinter;
! /**************************************************************************
! *
! * @functype:
! * FT_AutoHinter_GlobalGetFunc
! *
! * @description:
! * Retrieve the global hints computed for a given face object. The
! * resulting data is dissociated from the face and will survive a call to
! * FT_Done_Face(). It must be discarded through the API
! * FT_AutoHinter_GlobalDoneFunc().
! *
! * @input:
! * hinter ::
! * A handle to the source auto-hinter.
! *
! * face ::
! * A handle to the source face object.
! *
! * @output:
! * global_hints ::
! * A typeless pointer to the global hints.
! *
! * global_len ::
! * The size in bytes of the global hints.
! */
typedef void
(*FT_AutoHinter_GlobalGetFunc)( FT_AutoHinter hinter,
FT_Face face,
void** global_hints,
long* global_len );
! /**************************************************************************
! *
! * @functype:
! * FT_AutoHinter_GlobalDoneFunc
! *
! * @description:
! * Discard the global hints retrieved through
! * FT_AutoHinter_GlobalGetFunc(). This is the only way these hints are
! * freed from memory.
! *
! * @input:
! * hinter ::
! * A handle to the auto-hinter module.
! *
! * global ::
! * A pointer to retrieved global hints to discard.
! */
typedef void
(*FT_AutoHinter_GlobalDoneFunc)( FT_AutoHinter hinter,
void* global );
! /**************************************************************************
! *
! * @functype:
! * FT_AutoHinter_GlobalResetFunc
! *
! * @description:
! * This function is used to recompute the global metrics in a given font.
! * This is useful when global font data changes (e.g. Multiple Masters
! * fonts where blend coordinates change).
! *
! * @input:
! * hinter ::
! * A handle to the source auto-hinter.
! *
! * face ::
! * A handle to the face.
! */
typedef void
(*FT_AutoHinter_GlobalResetFunc)( FT_AutoHinter hinter,
FT_Face face );
! /**************************************************************************
! *
! * @functype:
! * FT_AutoHinter_GlyphLoadFunc
! *
! * @description:
! * This function is used to load, scale, and automatically hint a glyph
! * from a given face.
! *
! * @input:
! * face ::
! * A handle to the face.
! *
! * glyph_index ::
! * The glyph index.
! *
! * load_flags ::
! * The load flags.
! *
! * @note:
! * This function is capable of loading composite glyphs by hinting each
! * sub-glyph independently (which improves quality).
! *
! * It will call the font driver with @FT_Load_Glyph, with
! * @FT_LOAD_NO_SCALE set.
! */
typedef FT_Error
(*FT_AutoHinter_GlyphLoadFunc)( FT_AutoHinter hinter,
FT_GlyphSlot slot,
FT_Size size,
FT_UInt glyph_index,
FT_Int32 load_flags );
! /**************************************************************************
! *
! * @struct:
! * FT_AutoHinter_InterfaceRec
! *
! * @description:
! * The auto-hinter module's interface.
! */
typedef struct FT_AutoHinter_InterfaceRec_
{
FT_AutoHinter_GlobalResetFunc reset_face;
FT_AutoHinter_GlobalGetFunc get_global_hints;
FT_AutoHinter_GlobalDoneFunc done_global_hints;
FT_AutoHinter_GlyphLoadFunc load_glyph;
} FT_AutoHinter_InterfaceRec, *FT_AutoHinter_Interface;
#define FT_DEFINE_AUTOHINTER_INTERFACE( \
class_, \
reset_face_, \
get_global_hints_, \
done_global_hints_, \
*** 212,242 ****
get_global_hints_, \
done_global_hints_, \
load_glyph_ \
};
- #else /* FT_CONFIG_OPTION_PIC */
-
- #define FT_DEFINE_AUTOHINTER_INTERFACE( \
- class_, \
- reset_face_, \
- get_global_hints_, \
- done_global_hints_, \
- load_glyph_ ) \
- void \
- FT_Init_Class_ ## class_( FT_Library library, \
- FT_AutoHinter_InterfaceRec* clazz ) \
- { \
- FT_UNUSED( library ); \
- \
- clazz->reset_face = reset_face_; \
- clazz->get_global_hints = get_global_hints_; \
- clazz->done_global_hints = done_global_hints_; \
- clazz->load_glyph = load_glyph_; \
- }
-
- #endif /* FT_CONFIG_OPTION_PIC */
FT_END_HEADER
#endif /* AUTOHINT_H_ */
--- 221,230 ----
< prev index next >