No effect yet; service functions will be implemented later on. Everything is guarded with TT_CONFIG_OPTION_GX_VAR_SUPPORT. * include/freetype/internal/services/svmetric.h: New file. * include/freetype/internal/ftserv.h (FT_SERVICE_METRICS_VARIATIONS_H): New macro. * include/freetype/internal/tttypes.h (TT_Face): New field `var'. * src/sfnt/sfobjs.c: Include FT_SERVICE_METRICS_VARIATIONS_H. (sfnt_init_face): Initialize `face->var'. * src/truetype/ttdriver.c: Include FT_SERVICE_METRICS_VARIATIONS_H. (tt_service_metrics_variations): New service. (tt_services): Updated. * src/truetype/ttpic.h: Updated.Harmony
parent
c628a7dfba
commit
0918325e3f
7 changed files with 226 additions and 15 deletions
@ -0,0 +1,155 @@ |
||||
/***************************************************************************/ |
||||
/* */ |
||||
/* svmetric.h */ |
||||
/* */ |
||||
/* The FreeType services for metrics variations (specification). */ |
||||
/* */ |
||||
/* Copyright 2016 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. */ |
||||
/* */ |
||||
/***************************************************************************/ |
||||
|
||||
|
||||
#ifndef SVMETRIC_H_ |
||||
#define SVMETRIC_H_ |
||||
|
||||
#include FT_INTERNAL_SERVICE_H |
||||
|
||||
|
||||
FT_BEGIN_HEADER |
||||
|
||||
|
||||
/*
|
||||
* A service to manage the `HVAR, `MVAR', and `VVAR' OpenType tables. |
||||
* |
||||
*/ |
||||
|
||||
#define FT_SERVICE_ID_METRICS_VARIATIONS "metrics-variations" |
||||
|
||||
|
||||
/* HVAR */ |
||||
|
||||
typedef FT_Error |
||||
(*FT_HAdvance_Adjust_Func)( FT_Face face, |
||||
FT_UInt gindex, |
||||
FT_Int *avalue ); |
||||
|
||||
typedef FT_Error |
||||
(*FT_LSB_Adjust_Func)( FT_Face face, |
||||
FT_UInt gindex, |
||||
FT_Int *avalue ); |
||||
|
||||
typedef FT_Error |
||||
(*FT_RSB_Adjust_Func)( FT_Face face, |
||||
FT_UInt gindex, |
||||
FT_Int *avalue ); |
||||
|
||||
/* VVAR */ |
||||
|
||||
typedef FT_Error |
||||
(*FT_VAdvance_Adjust_Func)( FT_Face face, |
||||
FT_UInt gindex, |
||||
FT_Int *avalue ); |
||||
|
||||
typedef FT_Error |
||||
(*FT_TSB_Adjust_Func)( FT_Face face, |
||||
FT_UInt gindex, |
||||
FT_Int *avalue ); |
||||
|
||||
typedef FT_Error |
||||
(*FT_BSB_Adjust_Func)( FT_Face face, |
||||
FT_UInt gindex, |
||||
FT_Int *avalue ); |
||||
|
||||
typedef FT_Error |
||||
(*FT_VOrg_Adjust_Func)( FT_Face face, |
||||
FT_UInt gindex, |
||||
FT_Int *avalue ); |
||||
|
||||
/* MVAR */ |
||||
|
||||
typedef FT_Error |
||||
(*FT_Metrics_Adjust_Func)( FT_Face face, |
||||
FT_ULong tag, |
||||
FT_Int *avalue ); |
||||
|
||||
|
||||
FT_DEFINE_SERVICE( MetricsVariations ) |
||||
{ |
||||
FT_HAdvance_Adjust_Func hadvance_adjust; |
||||
FT_LSB_Adjust_Func lsb_adjust; |
||||
FT_RSB_Adjust_Func rsb_adjust; |
||||
|
||||
FT_VAdvance_Adjust_Func vadvance_adjust; |
||||
FT_TSB_Adjust_Func tsb_adjust; |
||||
FT_BSB_Adjust_Func bsb_adjust; |
||||
FT_VOrg_Adjust_Func vorg_adjust; |
||||
|
||||
FT_Metrics_Adjust_Func metrics_adjust; |
||||
}; |
||||
|
||||
|
||||
#ifndef FT_CONFIG_OPTION_PIC |
||||
|
||||
#define FT_DEFINE_SERVICE_METRICSVARIATIONSREC( class_, \ |
||||
hadvance_adjust_, \
|
||||
lsb_adjust_, \
|
||||
rsb_adjust_, \
|
||||
vadvance_adjust_, \
|
||||
tsb_adjust_, \
|
||||
bsb_adjust_, \
|
||||
vorg_adjust_, \
|
||||
metrics_adjust_ ) \
|
||||
static const FT_Service_MetricsVariationsRec class_ = \
|
||||
{ \
|
||||
hadvance_adjust_, \
|
||||
lsb_adjust_, \
|
||||
rsb_adjust_, \
|
||||
vadvance_adjust_, \
|
||||
tsb_adjust_, \
|
||||
bsb_adjust_, \
|
||||
vorg_adjust_, \
|
||||
metrics_adjust_ \
|
||||
}; |
||||
|
||||
#else /* FT_CONFIG_OPTION_PIC */ |
||||
|
||||
#define FT_DEFINE_SERVICE_METRICSVARIATIONSREC( class_, \ |
||||
hadvance_adjust_, \
|
||||
lsb_adjust_, \
|
||||
rsb_adjust_, \
|
||||
vadvance_adjust_, \
|
||||
tsb_adjust_, \
|
||||
bsb_adjust_, \
|
||||
vorg_adjust_, \
|
||||
metrics_adjust_ ) \
|
||||
void \
|
||||
FT_Init_Class_ ## class_( FT_Service_MetricsVariationsRec* clazz ) \
|
||||
{ \
|
||||
clazz->hadvance_adjust = hadvance_adjust_; \
|
||||
clazz->lsb_adjust = lsb_adjust_; \
|
||||
clazz->rsb_adjust = rsb_adjust_; \
|
||||
clazz->vadvance_adjust = vadvance_adjust_; \
|
||||
clazz->tsb_adjust = tsb_adjust_; \
|
||||
clazz->bsb_adjust = bsb_adjust_; \
|
||||
clazz->vorg_adjust = vorg_adjust_; \
|
||||
clazz->metrics_adjust = metrics_adjust_; \
|
||||
}; |
||||
|
||||
#endif /* FT_CONFIG_OPTION_PIC */ |
||||
|
||||
/* */ |
||||
|
||||
|
||||
FT_END_HEADER |
||||
|
||||
#endif /* SVMETRIC_H_ */ |
||||
|
||||
|
||||
/* END */ |
Loading…
Reference in new issue