freetype2/include/freetype/cache/ftccmap.h

235 lines
6.3 KiB
C

/***************************************************************************/
/* */
/* ftccmap.h */
/* */
/* FreeType charmap cache (specification). */
/* */
/* Copyright 2000-2001, 2003, 2005 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 __FTCCMAP_H__
#define __FTCCMAP_H__
#include <ft2build.h>
#include FT_CACHE_H
FT_BEGIN_HEADER
/*************************************************************************/
/* */
/* <Section> */
/* cache_subsystem */
/* */
/*************************************************************************/
/*************************************************************************
*
* @type:
* FTC_CMapCache
*
* @description:
* An opaque handle used to manager a charmap cache. This cache is to
* hold character codes -> glyph indices mappings.
*
*/
typedef struct FTC_CMapCacheRec_* FTC_CMapCache;
/*************************************************************************
*
* @type:
* FTC_CMapDesc
*
* @description:
* A handle to an @FTC_CMapDescRec structure used to describe a given
* charmap in a charmap cache.
*
* Each @FTC_CMapDesc describes which charmap (of which @FTC_FaceID) we
* want to use in @FTC_CMapCache_Lookup.
*
*/
typedef struct FTC_CMapDescRec_* FTC_CMapDesc;
/*************************************************************************
*
* @enum:
* FTC_CMapType
*
* @description:
* The list of valid @FTC_CMapDesc types. They indicate how we want to
* address a charmap within an @FTC_FaceID.
*
* @values:
* FTC_CMAP_BY_INDEX ::
* Address a charmap by its index in the corresponding @FT_Face.
*
* FTC_CMAP_BY_ENCODING ::
* Use a @FT_Face charmap that corresponds to a given encoding.
*
* FTC_CMAP_BY_ID ::
* Use an @FT_Face charmap that corresponds to a given
* (platform,encoding) ID. See @FTC_CMapIdRec.
*
*/
typedef enum FTC_CMapType_
{
FTC_CMAP_BY_INDEX = 0,
FTC_CMAP_BY_ENCODING = 1,
FTC_CMAP_BY_ID = 2
} FTC_CMapType;
/*************************************************************************
*
* @struct:
* FTC_CMapIdRec
*
* @description:
* A short structure to identify a charmap by a (platform,encoding) pair
* of values.
*
* @fields:
* platform ::
* The platform ID.
*
* encoding ::
* The encoding ID.
*
*/
typedef struct FTC_CMapIdRec_
{
FT_UInt platform;
FT_UInt encoding;
} FTC_CMapIdRec;
/*************************************************************************
*
* @struct:
* FTC_CMapDescRec
*
* @description:
* A structure to describe a given charmap to @FTC_CMapCache.
*
* @fields:
* face_id ::
* @FTC_FaceID of the face this charmap belongs to.
*
* type ::
* The type of charmap, see @FTC_CMapType.
*
* u.index ::
* For @FTC_CMAP_BY_INDEX types, this is the charmap index (within a
* @FT_Face) we want to use.
*
* u.encoding ::
* For @FTC_CMAP_BY_ENCODING types, this is the charmap encoding we
* want to use. see @FT_Encoding.
*
* u.id ::
* For @FTC_CMAP_BY_ID types, this is the (platform,encoding) pair we
* want to use. see @FTC_CMapIdRec and @FT_CharMapRec.
*
*/
typedef struct FTC_CMapDescRec_
{
FTC_FaceID face_id;
FTC_CMapType type;
union
{
FT_UInt index;
FT_Encoding encoding;
FTC_CMapIdRec id;
} u;
} FTC_CMapDescRec;
/*************************************************************************
*
* @function:
* FTC_CMapCache_New
*
* @description:
* Creates a new charmap cache.
*
* @input:
* manager ::
* A handle to the cache manager.
*
* @output:
* acache ::
* A new cache handle. NULL in case of error.
*
* @return:
* FreeType error code. 0 means success.
*
* @note:
* Like all other caches, this one will be destroyed with the cache
* manager.
*
*/
FT_EXPORT( FT_Error )
FTC_CMapCache_New( FTC_Manager manager,
FTC_CMapCache *acache );
/*************************************************************************
*
* @function:
* FTC_CMapCache_Lookup
*
* @description:
* Translates a character code into a glyph index, using the charmap
* cache.
*
* @input:
* cache ::
* A charmap cache handle.
*
* cmap_desc ::
* A charmap descriptor handle.
*
* char_code ::
* The character code (in the corresponding charmap).
*
* @return:
* Glyph index. 0 means `no glyph'.
*
* @note:
* This function doesn't return @FTC_Node handles, since there is no
* real use for them with typical uses of charmaps.
*
*/
FT_EXPORT( FT_UInt )
FTC_CMapCache_Lookup( FTC_CMapCache cache,
FTC_CMapDesc cmap_desc,
FT_UInt32 char_code );
/* */
FT_END_HEADER
#endif /* __FTCCMAP_H__ */
/* END */