/***************************************************************************/ | |
/* */ | |
/* ttcmap.h */ | |
/* */ | |
/* TrueType character mapping table (cmap) support (specification). */ | |
/* */ | |
/* Copyright 2002-2015 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 __TTCMAP_H__ | |
#define __TTCMAP_H__ | |
#include <ft2build.h> | |
#include FT_INTERNAL_TRUETYPE_TYPES_H | |
#include FT_INTERNAL_VALIDATE_H | |
#include FT_SERVICE_TT_CMAP_H | |
FT_BEGIN_HEADER | |
#define TT_CMAP_FLAG_UNSORTED 1 | |
#define TT_CMAP_FLAG_OVERLAPPING 2 | |
typedef struct TT_CMapRec_ | |
{ | |
FT_CMapRec cmap; | |
FT_Byte* data; /* pointer to in-memory cmap table */ | |
FT_Int flags; /* for format 4 only */ | |
} TT_CMapRec, *TT_CMap; | |
typedef const struct TT_CMap_ClassRec_* TT_CMap_Class; | |
typedef FT_Error | |
(*TT_CMap_ValidateFunc)( FT_Byte* data, | |
FT_Validator valid ); | |
typedef struct TT_CMap_ClassRec_ | |
{ | |
FT_CMap_ClassRec clazz; | |
FT_UInt format; | |
TT_CMap_ValidateFunc validate; | |
TT_CMap_Info_GetFunc get_cmap_info; | |
} TT_CMap_ClassRec; | |
#ifndef FT_CONFIG_OPTION_PIC | |
#define FT_DEFINE_TT_CMAP( class_, \ | |
size_, \ | |
init_, \ | |
done_, \ | |
char_index_, \ | |
char_next_, \ | |
char_var_index_, \ | |
char_var_default_, \ | |
variant_list_, \ | |
charvariant_list_, \ | |
variantchar_list_, \ | |
format_, \ | |
validate_, \ | |
get_cmap_info_ ) \ | |
FT_CALLBACK_TABLE_DEF \ | |
const TT_CMap_ClassRec class_ = \ | |
{ \ | |
{ size_, \ | |
init_, \ | |
done_, \ | |
char_index_, \ | |
char_next_, \ | |
char_var_index_, \ | |
char_var_default_, \ | |
variant_list_, \ | |
charvariant_list_, \ | |
variantchar_list_ \ | |
}, \ | |
\ | |
format_, \ | |
validate_, \ | |
get_cmap_info_ \ | |
}; | |
#else /* FT_CONFIG_OPTION_PIC */ | |
#define FT_DEFINE_TT_CMAP( class_, \ | |
size_, \ | |
init_, \ | |
done_, \ | |
char_index_, \ | |
char_next_, \ | |
char_var_index_, \ | |
char_var_default_, \ | |
variant_list_, \ | |
charvariant_list_, \ | |
variantchar_list_, \ | |
format_, \ | |
validate_, \ | |
get_cmap_info_ ) \ | |
void \ | |
FT_Init_Class_ ## class_( TT_CMap_ClassRec* clazz ) \ | |
{ \ | |
clazz->clazz.size = size_; \ | |
clazz->clazz.init = init_; \ | |
clazz->clazz.done = done_; \ | |
clazz->clazz.char_index = char_index_; \ | |
clazz->clazz.char_next = char_next_; \ | |
clazz->clazz.char_var_index = char_var_index_; \ | |
clazz->clazz.char_var_default = char_var_default_; \ | |
clazz->clazz.variant_list = variant_list_; \ | |
clazz->clazz.charvariant_list = charvariant_list_; \ | |
clazz->clazz.variantchar_list = variantchar_list_; \ | |
clazz->format = format_; \ | |
clazz->validate = validate_; \ | |
clazz->get_cmap_info = get_cmap_info_; \ | |
} | |
#endif /* FT_CONFIG_OPTION_PIC */ | |
typedef struct TT_ValidatorRec_ | |
{ | |
FT_ValidatorRec validator; | |
FT_UInt num_glyphs; | |
} TT_ValidatorRec, *TT_Validator; | |
#define TT_VALIDATOR( x ) ( (TT_Validator)( x ) ) | |
#define TT_VALID_GLYPH_COUNT( x ) TT_VALIDATOR( x )->num_glyphs | |
FT_LOCAL( FT_Error ) | |
tt_face_build_cmaps( TT_Face face ); | |
/* used in tt-cmaps service */ | |
FT_LOCAL( FT_Error ) | |
tt_get_cmap_info( FT_CharMap charmap, | |
TT_CMapInfo *cmap_info ); | |
FT_END_HEADER | |
#endif /* __TTCMAP_H__ */ | |
/* END */ |