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