< prev index next >

src/java.desktop/share/native/libfreetype/src/truetype/ttdriver.c

Print this page

        

*** 1,21 **** ! /***************************************************************************/ ! /* */ ! /* ttdriver.c */ ! /* */ ! /* TrueType font driver implementation (body). */ ! /* */ ! /* 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. */ ! /* */ ! /***************************************************************************/ #include <ft2build.h> #include FT_INTERNAL_DEBUG_H #include FT_INTERNAL_STREAM_H --- 1,21 ---- ! /**************************************************************************** ! * ! * ttdriver.c ! * ! * TrueType font driver implementation (body). ! * ! * 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. ! * ! */ #include <ft2build.h> #include FT_INTERNAL_DEBUG_H #include FT_INTERNAL_STREAM_H
*** 41,60 **** #include "ttgxvar.h" #endif #include "tterrors.h" - #include "ttpic.h" ! /*************************************************************************/ ! /* */ ! /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ ! /* parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log */ ! /* messages during execution. */ ! /* */ #undef FT_COMPONENT ! #define FT_COMPONENT trace_ttdriver /* * PROPERTY SERVICE * --- 41,59 ---- #include "ttgxvar.h" #endif #include "tterrors.h" ! /************************************************************************** ! * ! * The macro FT_COMPONENT is used in trace mode. It is an implicit ! * parameter of the FT_TRACE() and FT_ERROR() macros, used to print/log ! * messages during execution. ! */ #undef FT_COMPONENT ! #define FT_COMPONENT ttdriver /* * PROPERTY SERVICE *
*** 162,203 **** /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ ! /*************************************************************************/ ! /* */ ! /* <Function> */ ! /* tt_get_kerning */ ! /* */ ! /* <Description> */ ! /* A driver method used to return the kerning vector between two */ ! /* glyphs of the same face. */ ! /* */ ! /* <Input> */ ! /* face :: A handle to the source face object. */ ! /* */ ! /* left_glyph :: The index of the left glyph in the kern pair. */ ! /* */ ! /* right_glyph :: The index of the right glyph in the kern pair. */ ! /* */ ! /* <Output> */ ! /* kerning :: The kerning vector. This is in font units for */ ! /* scalable formats, and in pixels for fixed-sizes */ ! /* formats. */ ! /* */ ! /* <Return> */ ! /* FreeType error code. 0 means success. */ ! /* */ ! /* <Note> */ ! /* Only horizontal layouts (left-to-right & right-to-left) are */ ! /* supported by this function. Other layouts, or more sophisticated */ ! /* kernings, are out of scope of this method (the basic driver */ ! /* interface is meant to be simple). */ ! /* */ ! /* They can be implemented by format-specific interfaces. */ ! /* */ static FT_Error tt_get_kerning( FT_Face ttface, /* TT_Face */ FT_UInt left_glyph, FT_UInt right_glyph, FT_Vector* kerning ) --- 161,206 ---- /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ ! /************************************************************************** ! * ! * @Function: ! * tt_get_kerning ! * ! * @Description: ! * A driver method used to return the kerning vector between two ! * glyphs of the same face. ! * ! * @Input: ! * face :: ! * A handle to the source face object. ! * ! * left_glyph :: ! * The index of the left glyph in the kern pair. ! * ! * right_glyph :: ! * The index of the right glyph in the kern pair. ! * ! * @Output: ! * kerning :: ! * The kerning vector. This is in font units for ! * scalable formats, and in pixels for fixed-sizes ! * formats. ! * ! * @Return: ! * FreeType error code. 0 means success. ! * ! * @Note: ! * Only horizontal layouts (left-to-right & right-to-left) are ! * supported by this function. Other layouts, or more sophisticated ! * kernings, are out of scope of this method (the basic driver ! * interface is meant to be simple). ! * ! * They can be implemented by format-specific interfaces. ! */ static FT_Error tt_get_kerning( FT_Face ttface, /* TT_Face */ FT_UInt left_glyph, FT_UInt right_glyph, FT_Vector* kerning )
*** 382,417 **** return error; } ! /*************************************************************************/ ! /* */ ! /* <Function> */ ! /* tt_glyph_load */ ! /* */ ! /* <Description> */ ! /* A driver method used to load a glyph within a given glyph slot. */ ! /* */ ! /* <Input> */ ! /* slot :: A handle to the target slot object where the glyph */ ! /* will be loaded. */ ! /* */ ! /* size :: A handle to the source face size at which the glyph */ ! /* must be scaled, loaded, etc. */ ! /* */ ! /* glyph_index :: The index of the glyph in the font file. */ ! /* */ ! /* load_flags :: A flag indicating what to load for this glyph. The */ ! /* FT_LOAD_XXX constants can be used to control the */ ! /* glyph loading process (e.g., whether the outline */ ! /* should be scaled, whether to load bitmaps or not, */ ! /* whether to hint the outline, etc). */ ! /* */ ! /* <Return> */ ! /* FreeType error code. 0 means success. */ ! /* */ static FT_Error tt_glyph_load( FT_GlyphSlot ttslot, /* TT_GlyphSlot */ FT_Size ttsize, /* TT_Size */ FT_UInt glyph_index, FT_Int32 load_flags ) --- 385,424 ---- return error; } ! /************************************************************************** ! * ! * @Function: ! * tt_glyph_load ! * ! * @Description: ! * A driver method used to load a glyph within a given glyph slot. ! * ! * @Input: ! * slot :: ! * A handle to the target slot object where the glyph ! * will be loaded. ! * ! * size :: ! * A handle to the source face size at which the glyph ! * must be scaled, loaded, etc. ! * ! * glyph_index :: ! * The index of the glyph in the font file. ! * ! * load_flags :: ! * A flag indicating what to load for this glyph. The ! * FT_LOAD_XXX constants can be used to control the ! * glyph loading process (e.g., whether the outline ! * should be scaled, whether to load bitmaps or not, ! * whether to hint the outline, etc). ! * ! * @Return: ! * FreeType error code. 0 means success. ! */ static FT_Error tt_glyph_load( FT_GlyphSlot ttslot, /* TT_GlyphSlot */ FT_Size ttsize, /* TT_Size */ FT_UInt glyph_index, FT_Int32 load_flags )
*** 462,472 **** /* use hinted metrics only if we load a glyph with hinting */ size->metrics = ( load_flags & FT_LOAD_NO_HINTING ) ? &ttsize->metrics : &size->hinted_metrics; ! /* now load the glyph outline if necessary */ error = TT_Load_Glyph( size, slot, glyph_index, load_flags ); /* force drop-out mode to 2 - irrelevant now */ /* slot->outline.dropout_mode = 2; */ --- 469,479 ---- /* use hinted metrics only if we load a glyph with hinting */ size->metrics = ( load_flags & FT_LOAD_NO_HINTING ) ? &ttsize->metrics : &size->hinted_metrics; ! /* now fill in the glyph slot with outline/bitmap/layered */ error = TT_Load_Glyph( size, slot, glyph_index, load_flags ); /* force drop-out mode to 2 - irrelevant now */ /* slot->outline.dropout_mode = 2; */
*** 494,506 **** (FT_Get_MM_Func) NULL, /* get_mm */ (FT_Set_MM_Design_Func) NULL, /* set_mm_design */ (FT_Set_MM_Blend_Func) TT_Set_MM_Blend, /* set_mm_blend */ (FT_Get_MM_Blend_Func) TT_Get_MM_Blend, /* get_mm_blend */ (FT_Get_MM_Var_Func) TT_Get_MM_Var, /* get_mm_var */ ! (FT_Set_Var_Design_Func)TT_Set_Var_Design, /* set_var_design */ ! (FT_Get_Var_Design_Func)TT_Get_Var_Design, /* get_var_design */ (FT_Set_Instance_Func) TT_Set_Named_Instance, /* set_instance */ (FT_Get_Var_Blend_Func) tt_get_var_blend, /* get_var_blend */ (FT_Done_Blend_Func) tt_done_blend /* done_blend */ ) --- 501,515 ---- (FT_Get_MM_Func) NULL, /* get_mm */ (FT_Set_MM_Design_Func) NULL, /* set_mm_design */ (FT_Set_MM_Blend_Func) TT_Set_MM_Blend, /* set_mm_blend */ (FT_Get_MM_Blend_Func) TT_Get_MM_Blend, /* get_mm_blend */ (FT_Get_MM_Var_Func) TT_Get_MM_Var, /* get_mm_var */ ! (FT_Set_Var_Design_Func) TT_Set_Var_Design, /* set_var_design */ ! (FT_Get_Var_Design_Func) TT_Get_Var_Design, /* get_var_design */ (FT_Set_Instance_Func) TT_Set_Named_Instance, /* set_instance */ + (FT_Set_MM_WeightVector_Func)NULL, /* set_mm_weightvector */ + (FT_Get_MM_WeightVector_Func)NULL, /* get_mm_weightvector */ (FT_Get_Var_Blend_Func) tt_get_var_blend, /* get_var_blend */ (FT_Done_Blend_Func) tt_done_blend /* done_blend */ )
*** 546,568 **** #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT FT_DEFINE_SERVICEDESCREC6( tt_services, FT_SERVICE_ID_FONT_FORMAT, FT_FONT_FORMAT_TRUETYPE, ! FT_SERVICE_ID_MULTI_MASTERS, &TT_SERVICE_GX_MULTI_MASTERS_GET, ! FT_SERVICE_ID_METRICS_VARIATIONS, &TT_SERVICE_METRICS_VARIATIONS_GET, FT_SERVICE_ID_TRUETYPE_ENGINE, &tt_service_truetype_engine, ! FT_SERVICE_ID_TT_GLYF, &TT_SERVICE_TRUETYPE_GLYF_GET, ! FT_SERVICE_ID_PROPERTIES, &TT_SERVICE_PROPERTIES_GET ) #else FT_DEFINE_SERVICEDESCREC4( tt_services, FT_SERVICE_ID_FONT_FORMAT, FT_FONT_FORMAT_TRUETYPE, FT_SERVICE_ID_TRUETYPE_ENGINE, &tt_service_truetype_engine, ! FT_SERVICE_ID_TT_GLYF, &TT_SERVICE_TRUETYPE_GLYF_GET, ! FT_SERVICE_ID_PROPERTIES, &TT_SERVICE_PROPERTIES_GET ) #endif FT_CALLBACK_DEF( FT_Module_Interface ) tt_get_interface( FT_Module driver, /* TT_Driver */ --- 555,577 ---- #ifdef TT_CONFIG_OPTION_GX_VAR_SUPPORT FT_DEFINE_SERVICEDESCREC6( tt_services, FT_SERVICE_ID_FONT_FORMAT, FT_FONT_FORMAT_TRUETYPE, ! FT_SERVICE_ID_MULTI_MASTERS, &tt_service_gx_multi_masters, ! FT_SERVICE_ID_METRICS_VARIATIONS, &tt_service_metrics_variations, FT_SERVICE_ID_TRUETYPE_ENGINE, &tt_service_truetype_engine, ! FT_SERVICE_ID_TT_GLYF, &tt_service_truetype_glyf, ! FT_SERVICE_ID_PROPERTIES, &tt_service_properties ) #else FT_DEFINE_SERVICEDESCREC4( tt_services, FT_SERVICE_ID_FONT_FORMAT, FT_FONT_FORMAT_TRUETYPE, FT_SERVICE_ID_TRUETYPE_ENGINE, &tt_service_truetype_engine, ! FT_SERVICE_ID_TT_GLYF, &tt_service_truetype_glyf, ! FT_SERVICE_ID_PROPERTIES, &tt_service_properties ) #endif FT_CALLBACK_DEF( FT_Module_Interface ) tt_get_interface( FT_Module driver, /* TT_Driver */
*** 572,601 **** FT_Module_Interface result; FT_Module sfntd; SFNT_Service sfnt; ! /* TT_SERVICES_GET dereferences `library' in PIC mode */ ! #ifdef FT_CONFIG_OPTION_PIC ! if ( !driver ) ! return NULL; ! library = driver->library; ! if ( !library ) ! return NULL; ! #endif ! ! result = ft_service_list_lookup( TT_SERVICES_GET, tt_interface ); if ( result ) return result; - #ifndef FT_CONFIG_OPTION_PIC if ( !driver ) return NULL; library = driver->library; if ( !library ) return NULL; - #endif /* only return the default interface from the SFNT module */ sfntd = FT_Get_Module( library, "sfnt" ); if ( sfntd ) { --- 581,599 ---- FT_Module_Interface result; FT_Module sfntd; SFNT_Service sfnt; ! result = ft_service_list_lookup( tt_services, tt_interface ); if ( result ) return result; if ( !driver ) return NULL; library = driver->library; if ( !library ) return NULL; /* only return the default interface from the SFNT module */ sfntd = FT_Get_Module( library, "sfnt" ); if ( sfntd ) {
< prev index next >