FreeType 1.31.1
This commit is contained in:
169
lib/ttcmap.h
Normal file
169
lib/ttcmap.h
Normal file
@@ -0,0 +1,169 @@
|
||||
/*******************************************************************
|
||||
*
|
||||
* ttcmap.h 1.0
|
||||
*
|
||||
* TrueType Character Mappings
|
||||
*
|
||||
* Copyright 1996-1999 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 "ttconfig.h"
|
||||
#include "tttypes.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* format 0 */
|
||||
|
||||
struct TCMap0_
|
||||
{
|
||||
PByte glyphIdArray;
|
||||
};
|
||||
|
||||
typedef struct TCMap0_ TCMap0;
|
||||
typedef TCMap0* PCMap0;
|
||||
|
||||
|
||||
/* format 2 */
|
||||
|
||||
struct TCMap2SubHeader_
|
||||
{
|
||||
UShort firstCode; /* first valid low byte */
|
||||
UShort entryCount; /* number of valid low bytes */
|
||||
Short idDelta; /* delta value to glyphIndex */
|
||||
UShort idRangeOffset; /* offset from here to 1st code */
|
||||
};
|
||||
|
||||
typedef struct TCMap2SubHeader_ TCMap2SubHeader;
|
||||
typedef TCMap2SubHeader* PCMap2SubHeader;
|
||||
|
||||
struct TCMap2_
|
||||
{
|
||||
PUShort subHeaderKeys;
|
||||
/* high byte mapping table */
|
||||
/* value = subHeader index * 8 */
|
||||
|
||||
PCMap2SubHeader subHeaders;
|
||||
PUShort glyphIdArray;
|
||||
UShort numGlyphId; /* control value */
|
||||
};
|
||||
|
||||
typedef struct TCMap2_ TCMap2;
|
||||
typedef TCMap2* PCMap2;
|
||||
|
||||
|
||||
/* format 4 */
|
||||
|
||||
struct TCMap4Segment_
|
||||
{
|
||||
UShort endCount;
|
||||
UShort startCount;
|
||||
Short idDelta; /* in the specs defined as UShort but the
|
||||
example there gives negative values... */
|
||||
UShort idRangeOffset;
|
||||
};
|
||||
|
||||
typedef struct TCMap4Segment_ TCMap4Segment;
|
||||
typedef TCMap4Segment* PCMap4Segment;
|
||||
|
||||
struct TCMap4_
|
||||
{
|
||||
UShort segCountX2; /* number of segments * 2 */
|
||||
UShort searchRange; /* these parameters can be used */
|
||||
UShort entrySelector; /* for a binary search */
|
||||
UShort rangeShift;
|
||||
|
||||
PCMap4Segment segments;
|
||||
PUShort glyphIdArray;
|
||||
UShort numGlyphId; /* control value */
|
||||
};
|
||||
|
||||
typedef struct TCMap4_ TCMap4;
|
||||
typedef TCMap4* PCMap4;
|
||||
|
||||
|
||||
/* format 6 */
|
||||
|
||||
struct TCMap6_
|
||||
{
|
||||
UShort firstCode; /* first character code of subrange */
|
||||
UShort entryCount; /* number of character codes in subrange */
|
||||
|
||||
PUShort glyphIdArray;
|
||||
};
|
||||
|
||||
typedef struct TCMap6_ TCMap6;
|
||||
typedef TCMap6* PCMap6;
|
||||
|
||||
|
||||
/* charmap table */
|
||||
|
||||
struct TCMapTable_
|
||||
{
|
||||
UShort platformID;
|
||||
UShort platformEncodingID;
|
||||
UShort format;
|
||||
UShort length;
|
||||
UShort version;
|
||||
|
||||
Bool loaded;
|
||||
ULong offset;
|
||||
|
||||
union
|
||||
{
|
||||
TCMap0 cmap0;
|
||||
TCMap2 cmap2;
|
||||
TCMap4 cmap4;
|
||||
TCMap6 cmap6;
|
||||
} c;
|
||||
};
|
||||
|
||||
typedef struct TCMapTable_ TCMapTable;
|
||||
typedef TCMapTable* PCMapTable;
|
||||
|
||||
|
||||
|
||||
/* Load character mappings directory when face is loaded. */
|
||||
/* The mappings themselves are only loaded on demand. */
|
||||
|
||||
LOCAL_DEF
|
||||
TT_Error CharMap_Load( PCMapTable table,
|
||||
TT_Stream input );
|
||||
|
||||
|
||||
/* Destroy one character mapping table */
|
||||
|
||||
LOCAL_DEF
|
||||
TT_Error CharMap_Free( PCMapTable table );
|
||||
|
||||
|
||||
/* Use character mapping table to perform mapping */
|
||||
|
||||
LOCAL_DEF
|
||||
UShort CharMap_Index( PCMapTable cmap,
|
||||
UShort charCode );
|
||||
|
||||
/* NOTE: The PFace type isn't defined at this point */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TTCMAP_H */
|
||||
|
||||
|
||||
/* END */
|
||||
Reference in New Issue
Block a user