summaryrefslogtreecommitdiff
path: root/src/cache/ftcsbits.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cache/ftcsbits.c')
-rw-r--r--src/cache/ftcsbits.c40
1 files changed, 24 insertions, 16 deletions
diff --git a/src/cache/ftcsbits.c b/src/cache/ftcsbits.c
index e917e2d56..7386ad72e 100644
--- a/src/cache/ftcsbits.c
+++ b/src/cache/ftcsbits.c
@@ -120,19 +120,19 @@
static FT_Error
- ftc_sbit_node_load( FTC_SBitNode snode,
- FTC_Manager manager,
- FT_UInt gindex,
- FT_ULong *asize )
+ ftc_sbit_node_load( FTC_SBitNode snode,
+ FTC_Manager manager,
+ FTC_SBitFamily sfam,
+ FT_UInt gindex,
+ FT_ULong *asize )
{
- FT_Error error;
- FTC_GlyphNode gnode = FTC_GLYPH_NODE(snode);
- FTC_GlyphFamily gfam;
- FTC_SBitFamily sfam;
- FT_Memory memory;
- FT_Face face;
- FT_Size size;
- FTC_SBit sbit;
+ FT_Error error;
+ FTC_GlyphNode gnode = FTC_GLYPH_NODE(snode);
+ FTC_GlyphFamily gfam = FTC_GLYPH_FAMILY(sfam);
+ FT_Memory memory;
+ FT_Face face;
+ FT_Size size;
+ FTC_SBit sbit;
if ( gindex < (FT_UInt)gnode->item_start ||
gindex >= (FT_UInt)gnode->item_start + gnode->item_count )
@@ -141,8 +141,6 @@
return FTC_Err_Invalid_Argument;
}
- gfam = FTC_GLYPH_FAMILY( manager->families.entries[ gnode->node.fam_index ].family );
- sfam = FTC_SBIT_FAMILY(gfam);
memory = manager->library->memory;
sbit = snode->sbits + (gindex - gnode->item_start);
@@ -275,7 +273,11 @@
gquery->gindex,
FTC_GLYPH_FAMILY(gquery->query.family) );
- error = ftc_sbit_node_load( snode, cache->manager, gquery->gindex, NULL );
+ error = ftc_sbit_node_load( snode,
+ cache->manager,
+ FTC_SBIT_FAMILY( FTC_QUERY(gquery)->family ),
+ gquery->gindex,
+ NULL );
if ( error )
ftc_glyph_node_done( FTC_GLYPH_NODE(snode), cache );
@@ -336,7 +338,13 @@
{
FT_ULong size;
- ftc_sbit_node_load( snode, cache->manager, gindex, &size );
+ /* yes, it's safe to ignore errors here */
+ ftc_sbit_node_load( snode,
+ cache->manager,
+ FTC_SBIT_FAMILY( FTC_QUERY(squery)->family ),
+ gindex,
+ &size );
+
cache->manager->cur_weight += size;
}
}