[pk] Define `pk_cmap_class' functions.
This commit is contained in:
parent
0d109109df
commit
20230216aa
|
@ -42,7 +42,8 @@
|
|||
typedef struct PK_CMapRec_
|
||||
{
|
||||
FT_CMapRec cmap;
|
||||
/* TO-DO */
|
||||
FT_UInt32 bc; /* Beginning Character */
|
||||
FT_UInt32 ec; /* End Character */
|
||||
} PK_CMapRec, *PK_CMap;
|
||||
|
||||
|
||||
|
@ -50,7 +51,13 @@
|
|||
pk_cmap_init( FT_CMap pkcmap,
|
||||
FT_Pointer init_data )
|
||||
{
|
||||
/* TO-DO */
|
||||
PK_CMap cmap = (PK_CMap)pkcmap;
|
||||
PK_Face face = (PK_Face)FT_CMAP_FACE( cmap );
|
||||
FT_UNUSED( init_data );
|
||||
|
||||
cmap->bc = face->pk_glyph->code_min;
|
||||
cmap->ec = face->pk_glyph->code_max;
|
||||
|
||||
return FT_Err_Ok;
|
||||
}
|
||||
|
||||
|
@ -58,7 +65,10 @@
|
|||
FT_CALLBACK_DEF( void )
|
||||
pk_cmap_done( FT_CMap pkcmap )
|
||||
{
|
||||
/* TO-DO */
|
||||
PK_CMap cmap = (PK_CMap)pkcmap;
|
||||
|
||||
cmap->bc = 0;
|
||||
cmap->ec = -1;
|
||||
}
|
||||
|
||||
|
||||
|
@ -66,7 +76,14 @@
|
|||
pk_cmap_char_index( FT_CMap pkcmap,
|
||||
FT_UInt32 char_code )
|
||||
{
|
||||
/* TO-DO */
|
||||
FT_UInt gindex = 0;
|
||||
PK_CMap cmap = (PK_CMap)pkcmap;
|
||||
|
||||
char_code -= cmap->bc;
|
||||
|
||||
if ( char_code < cmap->ec - cmap->bc + 1 )
|
||||
gindex = (FT_UInt)( char_code );
|
||||
|
||||
return gindex;
|
||||
}
|
||||
|
||||
|
@ -74,7 +91,28 @@
|
|||
pk_cmap_char_next( FT_CMap pkcmap,
|
||||
FT_UInt32 *achar_code )
|
||||
{
|
||||
/* To-DO */
|
||||
PK_CMap cmap = (PK_CMap)pkcmap;
|
||||
FT_UInt gindex = 0;
|
||||
FT_UInt32 result = 0;
|
||||
FT_UInt32 char_code = *achar_code + 1;
|
||||
|
||||
|
||||
if ( char_code <= cmap->bc )
|
||||
{
|
||||
result = cmap->bc;
|
||||
gindex = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
char_code -= cmap->bc;
|
||||
if ( char_code < cmap->ec - cmap->bc + 1 )
|
||||
{
|
||||
result = char_code;
|
||||
gindex = (FT_UInt)( char_code );
|
||||
}
|
||||
}
|
||||
|
||||
*achar_code = result;
|
||||
return gindex;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue