< 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 >