/**************************************************************************** * * tfm.h * * Auxiliary functions and data structures related to TFM metric files * (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. * */ #ifndef TFM_H_ #define TFM_H_ #include #include FT_INTERNAL_OBJECTS_H #include FT_INTERNAL_HASH_H #include FT_INTERNAL_TRUETYPE_TYPES_H FT_BEGIN_HEADER /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ /*** ***/ /*** ***/ /*** TFM FONT INFORMATION STRUCTURES ***/ /*** ***/ /*** ***/ /*************************************************************************/ /*************************************************************************/ /*************************************************************************/ typedef struct TFM_FontInfoRec_ { /* Font Info */ FT_Long cs; /* Check Sum */ /* Metrics */ FT_ULong ds, fs; /* Design Size */ FT_UInt design_size; FT_ULong slant; FT_UInt begin_char, end_char; FT_Long *width, *height, *depth; /* Font bounding box */ FT_Long font_bbx_w, font_bbx_h; FT_Long font_bbx_xoff, font_bbx_yoff; } TFM_FontInfoRec, *TFM_FontInfo; #define RDS2PT(rds) (tfm->design_size * ((FT_Long)(rds)/(FT_Long)(1<<20))) /*************************************************************************/ /*************************************************************************/ /***** *****/ /***** TFM PARSER *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ typedef struct TFM_ParserRec_* TFM_Parser; typedef struct TFM_Parser_FuncsRec_ { FT_Error (*init)( TFM_Parser parser, FT_Memory memory, FT_Stream stream ); FT_Error (*parse_metrics)( TFM_Parser parser ); void (*done)( TFM_Parser parser ); } TFM_Parser_FuncsRec; /************************************************************************** * * @struct: * TFM_ParserRec * * @description: * An TFM_Parser is a parser for the TFM files. * * @fields: * memory :: * The object used for memory operations (alloc and * realloc). * * stream :: * This is an FT_Stream object. * * FontInfo :: * The result will be stored here. */ typedef struct TFM_ParserRec_ { FT_Memory memory; FT_Stream stream; TFM_FontInfo FontInfo; void* user_data; /* To be checked for compatibility */ } TFM_ParserRec; /*************************************************************************/ /*************************************************************************/ /***** *****/ /***** TFM Module Interface *****/ /***** *****/ /*************************************************************************/ /*************************************************************************/ typedef struct TFM_ServiceRec_ { const TFM_Parser_FuncsRec* tfm_parser_funcs; } TFM_ServiceRec, *TFM_Service; /* backward compatible type definition */ typedef TFM_ServiceRec TFM_Interface; FT_END_HEADER #endif /* PSAUX_H_ */ /* END */