Update from HarfBuzz. Lars Knoll fixed all the warnings.
2006-04-06 Behdad Esfahbod <behdad@gnome.org> * pango/opentype: Update from HarfBuzz. Lars Knoll fixed all the warnings.
This commit is contained in:
parent
ca57250bc9
commit
b31d6def96
|
@ -48,23 +48,23 @@ do_indent (FILE *stream, int indent)
|
|||
fprintf (stream, "%*s", indent * 3, "");
|
||||
}
|
||||
|
||||
static void
|
||||
dump (FILE *stream, int indent, const char *format, ...)
|
||||
static void
|
||||
dump (FILE *stream, int indent, const char *format, ...)
|
||||
{
|
||||
va_list list;
|
||||
|
||||
|
||||
do_indent (stream, indent);
|
||||
|
||||
|
||||
va_start (list, format);
|
||||
vfprintf (stream, format, list);
|
||||
va_end (list);
|
||||
}
|
||||
|
||||
static void
|
||||
Dump_UShort_Array (FT_UShort *array, int count, const char *name, FILE *stream, int indent)
|
||||
static void
|
||||
Dump_UShort_Array (FT_UShort *array, int count, const char *name, FILE *stream, int indent)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
do_indent (stream, indent);
|
||||
|
||||
fprintf (stream, "<%s>", name);
|
||||
|
@ -73,10 +73,10 @@ Dump_UShort_Array (FT_UShort *array, int count, const char *name, FILE *stream,
|
|||
fprintf (stream, "</%s>\n", name);
|
||||
}
|
||||
|
||||
static void
|
||||
static void
|
||||
Print_Tag (FT_ULong tag, FILE *stream)
|
||||
{
|
||||
fprintf (stream, "%c%c%c%c",
|
||||
fprintf (stream, "%c%c%c%c",
|
||||
(unsigned char)(tag >> 24),
|
||||
(unsigned char)((tag >> 16) & 0xff),
|
||||
(unsigned char)((tag >> 8) & 0xff),
|
||||
|
@ -87,6 +87,8 @@ DEF_DUMP (LangSys)
|
|||
{
|
||||
int i;
|
||||
|
||||
FT_UNUSED(hb_type);
|
||||
|
||||
DUMP_FUINT (LangSys, LookupOrderOffset);
|
||||
DUMP_FUINT (LangSys, ReqFeatureIndex);
|
||||
DUMP_FUINT (LangSys, FeatureCount);
|
||||
|
@ -116,11 +118,11 @@ DEF_DUMP (Script)
|
|||
DEF_DUMP (ScriptList)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
DUMP_FUINT (ScriptList, ScriptCount);
|
||||
|
||||
for (i=0; i < ScriptList->ScriptCount; i++)
|
||||
{
|
||||
{
|
||||
do_indent (stream, indent);
|
||||
fprintf (stream, "<ScriptTag>");
|
||||
Print_Tag (ScriptList->ScriptRecord[i].ScriptTag, stream);
|
||||
|
@ -132,7 +134,9 @@ DEF_DUMP (ScriptList)
|
|||
DEF_DUMP (Feature)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
FT_UNUSED(hb_type);
|
||||
|
||||
DUMP_FUINT (Feature, FeatureParams);
|
||||
DUMP_FUINT (Feature, LookupListCount);
|
||||
|
||||
|
@ -142,6 +146,8 @@ DEF_DUMP (Feature)
|
|||
|
||||
DEF_DUMP (MarkRecord)
|
||||
{
|
||||
FT_UNUSED(hb_type);
|
||||
|
||||
DUMP_FUINT (MarkRecord, Class);
|
||||
DUMP1("<Anchor>%d</Anchor>\n", MarkRecord->MarkAnchor.PosFormat );
|
||||
}
|
||||
|
@ -159,11 +165,11 @@ DEF_DUMP (MarkArray)
|
|||
DEF_DUMP (FeatureList)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
DUMP_FUINT (FeatureList, FeatureCount);
|
||||
|
||||
for (i=0; i < FeatureList->FeatureCount; i++)
|
||||
{
|
||||
{
|
||||
do_indent (stream, indent);
|
||||
fprintf (stream, "<FeatureTag>");
|
||||
Print_Tag (FeatureList->FeatureRecord[i].FeatureTag, stream);
|
||||
|
@ -174,6 +180,8 @@ DEF_DUMP (FeatureList)
|
|||
|
||||
DEF_DUMP (Coverage)
|
||||
{
|
||||
FT_UNUSED(hb_type);
|
||||
|
||||
DUMP_FUINT (Coverage, CoverageFormat);
|
||||
|
||||
if (Coverage->CoverageFormat == 1)
|
||||
|
@ -189,7 +197,7 @@ DEF_DUMP (Coverage)
|
|||
{
|
||||
int i;
|
||||
DUMP_FUINT (&Coverage->cf.cf2, RangeCount);
|
||||
|
||||
|
||||
for ( i = 0; i < Coverage->cf.cf2.RangeCount; i++ )
|
||||
DUMP3("<Glyph>%#06x - %#06x</Glyph> <!-- %d -->\n",
|
||||
Coverage->cf.cf2.RangeRecord[i].Start,
|
||||
|
@ -199,13 +207,17 @@ DEF_DUMP (Coverage)
|
|||
|
||||
DEF_DUMP (ClassRangeRecord)
|
||||
{
|
||||
FT_UNUSED(hb_type);
|
||||
|
||||
DUMP_FGLYPH (ClassRangeRecord, Start);
|
||||
DUMP_FGLYPH (ClassRangeRecord, End);
|
||||
DUMP_FUINT (ClassRangeRecord, Class);
|
||||
}
|
||||
|
||||
|
||||
DEF_DUMP (ClassDefinition)
|
||||
{
|
||||
FT_UNUSED(hb_type);
|
||||
|
||||
DUMP_FUINT( ClassDefinition, ClassFormat);
|
||||
DUMP_FUINT( ClassDefinition, loaded);
|
||||
|
||||
|
@ -225,7 +237,7 @@ DEF_DUMP (ClassDefinition)
|
|||
int i;
|
||||
HB_ClassDefFormat2 *ClassDefFormat2 = &ClassDefinition->cd.cd2;
|
||||
DUMP_FUINT (ClassDefFormat2, ClassRangeCount);
|
||||
|
||||
|
||||
for (i = 0; i < ClassDefFormat2->ClassRangeCount; i++)
|
||||
RECURSE_NUM (ClassRangeRecord, i, ClassRangeRecord, &ClassDefFormat2->ClassRangeRecord[i]);
|
||||
}
|
||||
|
@ -235,6 +247,8 @@ DEF_DUMP (ClassDefinition)
|
|||
|
||||
DEF_DUMP (SubstLookupRecord)
|
||||
{
|
||||
FT_UNUSED(hb_type);
|
||||
|
||||
DUMP_FUINT (SubstLookupRecord, SequenceIndex);
|
||||
DUMP_FUINT (SubstLookupRecord, LookupListIndex);
|
||||
}
|
||||
|
@ -246,7 +260,7 @@ DEF_DUMP (ChainSubClassRule)
|
|||
DUMP_USHORT_ARRAY (ChainSubClassRule, Backtrack, ChainSubClassRule->BacktrackGlyphCount);
|
||||
DUMP_USHORT_ARRAY (ChainSubClassRule, Input, ChainSubClassRule->InputGlyphCount - 1);
|
||||
DUMP_USHORT_ARRAY (ChainSubClassRule, Lookahead, ChainSubClassRule->LookaheadGlyphCount);
|
||||
|
||||
|
||||
for (i = 0; i < ChainSubClassRule->SubstCount; i++)
|
||||
RECURSE_NUM (SubstLookupRecord, i, SubstLookupRecord, &ChainSubClassRule->SubstLookupRecord[i]);
|
||||
|
||||
|
@ -256,7 +270,7 @@ DEF_DUMP (ChainSubClassRule)
|
|||
DEF_DUMP (ChainSubClassSet)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
DUMP_FUINT( ChainSubClassSet, ChainSubClassRuleCount );
|
||||
for (i = 0; i < ChainSubClassSet->ChainSubClassRuleCount; i++)
|
||||
RECURSE_NUM (ChainSubClassRule, i, ChainSubClassRule, &ChainSubClassSet->ChainSubClassRule[i]);
|
||||
|
@ -277,7 +291,7 @@ Dump_GSUB_Lookup_Single (HB_SubTable *subtable, FILE *stream, int indent, HB_Typ
|
|||
else
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
DUMP_FINT (&SingleSubst->ssf.ssf2, GlyphCount);
|
||||
for (i=0; i < SingleSubst->ssf.ssf2.GlyphCount; i++)
|
||||
DUMP2("<Substitute>%#06x</Substitute> <!-- %d -->\n", SingleSubst->ssf.ssf2.Substitute[i], i);
|
||||
|
@ -287,7 +301,9 @@ Dump_GSUB_Lookup_Single (HB_SubTable *subtable, FILE *stream, int indent, HB_Typ
|
|||
DEF_DUMP (Ligature)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
FT_UNUSED(hb_type);
|
||||
|
||||
DUMP_FGLYPH (Ligature, LigGlyph);
|
||||
DUMP_FUINT (Ligature, ComponentCount);
|
||||
|
||||
|
@ -298,7 +314,7 @@ DEF_DUMP (Ligature)
|
|||
DEF_DUMP (LigatureSet)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
DUMP_FUINT (LigatureSet, LigatureCount);
|
||||
|
||||
for (i=0; i < LigatureSet->LigatureCount; i++)
|
||||
|
@ -322,6 +338,10 @@ Dump_GSUB_Lookup_Ligature (HB_SubTable *subtable, FILE *stream, int indent, HB_T
|
|||
|
||||
DEF_DUMP (ContextSubstFormat1)
|
||||
{
|
||||
FT_UNUSED(hb_type);
|
||||
FT_UNUSED(ContextSubstFormat1);
|
||||
|
||||
|
||||
DUMP("<!-- Not implemented!!! -->\n");
|
||||
}
|
||||
|
||||
|
@ -334,6 +354,9 @@ DEF_DUMP (ContextSubstFormat2)
|
|||
|
||||
DEF_DUMP (ContextSubstFormat3)
|
||||
{
|
||||
FT_UNUSED(hb_type);
|
||||
FT_UNUSED(ContextSubstFormat3);
|
||||
|
||||
DUMP("<!-- Not implemented!!! -->\n");
|
||||
}
|
||||
|
||||
|
@ -361,13 +384,16 @@ Dump_GSUB_Lookup_Context (HB_SubTable *subtable, FILE *stream, int indent, HB_Ty
|
|||
|
||||
DEF_DUMP (ChainContextSubstFormat1)
|
||||
{
|
||||
FT_UNUSED(hb_type);
|
||||
FT_UNUSED(ChainContextSubstFormat1);
|
||||
|
||||
DUMP("<!-- Not implemented!!! -->\n");
|
||||
}
|
||||
|
||||
DEF_DUMP (ChainContextSubstFormat2)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
RECURSE (Coverage, Coverage, &ChainContextSubstFormat2->Coverage);
|
||||
DUMP_FUINT (ChainContextSubstFormat2, MaxBacktrackLength);
|
||||
RECURSE (ClassDefinition, ClassDefinition, &ChainContextSubstFormat2->BacktrackClassDef);
|
||||
|
@ -375,7 +401,7 @@ DEF_DUMP (ChainContextSubstFormat2)
|
|||
RECURSE (ClassDefinition, ClassDefinition, &ChainContextSubstFormat2->InputClassDef);
|
||||
DUMP_FUINT (ChainContextSubstFormat2, MaxLookaheadLength);
|
||||
RECURSE (ClassDefinition, ClassDefinition, &ChainContextSubstFormat2->LookaheadClassDef);
|
||||
|
||||
|
||||
DUMP_FUINT (ChainContextSubstFormat2, ChainSubClassSetCount);
|
||||
for (i = 0; i < ChainContextSubstFormat2->ChainSubClassSetCount; i++)
|
||||
RECURSE (ChainSubClassSet, ChainSubClassSet, &ChainContextSubstFormat2->ChainSubClassSet[i]);
|
||||
|
@ -384,7 +410,7 @@ DEF_DUMP (ChainContextSubstFormat2)
|
|||
DEF_DUMP (ChainContextSubstFormat3)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
DUMP_FUINT (ChainContextSubstFormat3, BacktrackGlyphCount);
|
||||
for (i = 0; i < ChainContextSubstFormat3->BacktrackGlyphCount; i++)
|
||||
RECURSE (BacktrackCoverage, Coverage, &ChainContextSubstFormat3->BacktrackCoverage[i]);
|
||||
|
@ -404,7 +430,7 @@ static void
|
|||
Dump_GSUB_Lookup_Chain (HB_SubTable *subtable, FILE *stream, int indent, HB_Type hb_type)
|
||||
{
|
||||
HB_ChainContextSubst *chain = &subtable->st.gsub.chain;
|
||||
|
||||
|
||||
DUMP_FUINT (chain, SubstFormat);
|
||||
switch (chain->SubstFormat)
|
||||
{
|
||||
|
@ -429,7 +455,9 @@ Dump_Device (HB_Device *Device, FILE *stream, int indent, HB_Type hb_type)
|
|||
int bits = 0;
|
||||
int n_per;
|
||||
unsigned int mask;
|
||||
|
||||
|
||||
FT_UNUSED(hb_type);
|
||||
|
||||
DUMP_FUINT (Device, StartSize);
|
||||
DUMP_FUINT (Device, EndSize);
|
||||
DUMP_FUINT (Device, DeltaFormat);
|
||||
|
@ -469,7 +497,7 @@ Dump_Device (HB_Device *Device, FILE *stream, int indent, HB_Type hb_type)
|
|||
}
|
||||
DUMP ("</DeltaValue>\n");
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
Dump_ValueRecord (HB_ValueRecord *ValueRecord, FILE *stream, int indent, HB_Type hb_type, FT_UShort value_format)
|
||||
{
|
||||
|
@ -516,7 +544,7 @@ Dump_GPOS_Lookup_Single (HB_SubTable *subtable, FILE *stream, int indent, HB_Typ
|
|||
else
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
DUMP_FUINT (&SinglePos->spf.spf2, ValueCount);
|
||||
for (i = 0; i < SinglePos->spf.spf2.ValueCount; i++)
|
||||
DUMP_VALUE_RECORD (&SinglePos->spf.spf2.Value[i], SinglePos->ValueFormat);
|
||||
|
@ -578,16 +606,16 @@ Dump_GPOS_Lookup_Markbase (HB_SubTable *subtable, FILE *stream, int indent, HB_T
|
|||
{
|
||||
int i;
|
||||
HB_MarkBasePos *markbase = &subtable->st.gpos.markbase;
|
||||
|
||||
|
||||
DUMP_FUINT (markbase, PosFormat);
|
||||
RECURSE (Coverage, Coverage, &markbase->MarkCoverage);
|
||||
RECURSE (Coverage, Coverage, &markbase->BaseCoverage);
|
||||
DUMP_FUINT (markbase, ClassCount);
|
||||
RECURSE (MarkArray, MarkArray, &markbase->MarkArray);
|
||||
|
||||
|
||||
DUMP ("<BaseArray>\n");
|
||||
indent++;
|
||||
|
||||
|
||||
DUMP_FUINT (&markbase->BaseArray, BaseCount);
|
||||
for (i = 0; i < markbase->BaseArray.BaseCount; i++)
|
||||
{
|
||||
|
@ -598,7 +626,7 @@ Dump_GPOS_Lookup_Markbase (HB_SubTable *subtable, FILE *stream, int indent, HB_T
|
|||
DUMP1 (" <Anchor>%d</Anchor>\n", r->BaseAnchor->PosFormat);
|
||||
DUMP ("<BaseRecord>\n");
|
||||
}
|
||||
|
||||
|
||||
indent--;
|
||||
DUMP ("</BaseArray>\n");
|
||||
}
|
||||
|
|
|
@ -48,6 +48,10 @@ static FT_Error default_mmfunc( FT_Face face,
|
|||
FT_Pos* metric_value,
|
||||
void* data )
|
||||
{
|
||||
FT_UNUSED(face);
|
||||
FT_UNUSED(metric_id);
|
||||
FT_UNUSED(metric_value);
|
||||
FT_UNUSED(data);
|
||||
return HB_Err_No_MM_Interpreter;
|
||||
}
|
||||
|
||||
|
@ -184,7 +188,7 @@ Fail4:
|
|||
FT_Error HB_Done_GPOS_Table( HB_GPOSHeader* gpos )
|
||||
{
|
||||
FT_Memory memory = gpos->memory;
|
||||
|
||||
|
||||
_HB_OPEN_Free_LookupList( &gpos->LookupList, HB_Type_GPOS, memory );
|
||||
_HB_OPEN_Free_FeatureList( &gpos->FeatureList, memory );
|
||||
_HB_OPEN_Free_ScriptList( &gpos->ScriptList, memory );
|
||||
|
@ -212,7 +216,7 @@ static FT_Error Load_ValueRecord( HB_ValueRecord* vr,
|
|||
{
|
||||
FT_Error error;
|
||||
FT_Memory memory = stream->memory;
|
||||
|
||||
|
||||
FT_ULong cur_offset, new_offset;
|
||||
|
||||
|
||||
|
@ -745,10 +749,10 @@ static FT_Error Get_Anchor( GPOS_Instance* gpi,
|
|||
return error;
|
||||
|
||||
if ( gpi->face->glyph->format != ft_glyph_format_outline )
|
||||
return HB_Err_Invalid_GPOS_SubTable;
|
||||
return HB_Err_Invalid_GPOS_SubTable;
|
||||
|
||||
ap = an->af.af2.AnchorPoint;
|
||||
|
||||
|
||||
outline = gpi->face->glyph->outline;
|
||||
|
||||
/* if outline.n_points is set to zero by gfunc(), we use the
|
||||
|
@ -824,7 +828,7 @@ static FT_Error Load_MarkArray ( HB_MarkArray* ma,
|
|||
return error;
|
||||
|
||||
count = ma->MarkCount = GET_UShort();
|
||||
|
||||
|
||||
FORGET_Frame();
|
||||
|
||||
ma->MarkRecord = NULL;
|
||||
|
@ -1013,6 +1017,12 @@ static FT_Error Lookup_DefaultPos( GPOS_Instance* gpi,
|
|||
FT_UShort context_length,
|
||||
int nesting_level )
|
||||
{
|
||||
FT_UNUSED(gpi);
|
||||
FT_UNUSED(st);
|
||||
FT_UNUSED(buffer);
|
||||
FT_UNUSED(flags);
|
||||
FT_UNUSED(context_length);
|
||||
FT_UNUSED(nesting_level);
|
||||
return HB_Err_Not_Covered;
|
||||
}
|
||||
|
||||
|
@ -1028,6 +1038,7 @@ static FT_Error Lookup_SinglePos( GPOS_Instance* gpi,
|
|||
HB_GPOSHeader* gpos = gpi->gpos;
|
||||
HB_SinglePos* sp = &st->single;
|
||||
|
||||
FT_UNUSED(nesting_level);
|
||||
|
||||
if ( context_length != 0xFFFF && context_length < 1 )
|
||||
return HB_Err_Not_Covered;
|
||||
|
@ -1091,7 +1102,7 @@ static FT_Error Load_PairSet ( HB_PairSet* ps,
|
|||
return error;
|
||||
|
||||
count = ps->PairValueCount = GET_UShort();
|
||||
|
||||
|
||||
FORGET_Frame();
|
||||
|
||||
ps->PairValueRecord = NULL;
|
||||
|
@ -1333,7 +1344,7 @@ static FT_Error Load_PairPos2( HB_PairPosFormat2* ppf2,
|
|||
if ( error )
|
||||
{
|
||||
if ( format1 )
|
||||
Free_ValueRecord( &c2r[n].Value1, format1, memory );
|
||||
Free_ValueRecord( &c2r[n].Value1, format1, memory );
|
||||
goto Fail0;
|
||||
}
|
||||
}
|
||||
|
@ -1591,6 +1602,7 @@ static FT_Error Lookup_PairPos( GPOS_Instance* gpi,
|
|||
HB_GPOSHeader* gpos = gpi->gpos;
|
||||
HB_PairPos* pp = &st->pair;
|
||||
|
||||
FT_UNUSED(nesting_level);
|
||||
|
||||
if ( buffer->in_pos >= buffer->in_length - 1 )
|
||||
return HB_Err_Not_Covered; /* Not enough glyphs in stream */
|
||||
|
@ -1697,7 +1709,7 @@ static FT_Error Load_CursivePos( HB_GPOS_SubTable* st,
|
|||
for ( n = 0; n < count; n++ )
|
||||
{
|
||||
FT_ULong entry_offset;
|
||||
|
||||
|
||||
if ( ACCESS_Frame( 2L ) )
|
||||
return error;
|
||||
|
||||
|
@ -1805,6 +1817,7 @@ static FT_Error Lookup_CursivePos( GPOS_Instance* gpi,
|
|||
FT_Pos entry_x, entry_y;
|
||||
FT_Pos exit_x, exit_y;
|
||||
|
||||
FT_UNUSED(nesting_level);
|
||||
|
||||
if ( context_length != 0xFFFF && context_length < 1 )
|
||||
{
|
||||
|
@ -2035,7 +2048,7 @@ static FT_Error Load_BaseArray( HB_BaseArray* ba,
|
|||
return error;
|
||||
|
||||
count = ba->BaseCount = GET_UShort();
|
||||
|
||||
|
||||
FORGET_Frame();
|
||||
|
||||
ba->BaseRecord = NULL;
|
||||
|
@ -2089,7 +2102,7 @@ Fail:
|
|||
for ( k = 0; k < m; k++ )
|
||||
{
|
||||
ban = br[k].BaseAnchor;
|
||||
|
||||
|
||||
for ( n = 0; n < num_classes; n++ )
|
||||
Free_Anchor( &ban[n], memory );
|
||||
|
||||
|
@ -2249,6 +2262,7 @@ static FT_Error Lookup_MarkBasePos( GPOS_Instance* gpi,
|
|||
|
||||
HB_Position o;
|
||||
|
||||
FT_UNUSED(nesting_level);
|
||||
|
||||
if ( context_length != 0xFFFF && context_length < 1 )
|
||||
return HB_Err_Not_Covered;
|
||||
|
@ -2367,7 +2381,7 @@ static FT_Error Load_LigatureAttach( HB_LigatureAttach* lat,
|
|||
return error;
|
||||
|
||||
count = lat->ComponentCount = GET_UShort();
|
||||
|
||||
|
||||
FORGET_Frame();
|
||||
|
||||
lat->ComponentRecord = NULL;
|
||||
|
@ -2422,7 +2436,7 @@ Fail:
|
|||
for ( k = 0; k < m; k++ )
|
||||
{
|
||||
lan = cr[k].LigatureAnchor;
|
||||
|
||||
|
||||
for ( n = 0; n < num_classes; n++ )
|
||||
Free_Anchor( &lan[n], memory );
|
||||
|
||||
|
@ -2664,6 +2678,7 @@ static FT_Error Lookup_MarkLigPos( GPOS_Instance* gpi,
|
|||
|
||||
HB_Position o;
|
||||
|
||||
FT_UNUSED(nesting_level);
|
||||
|
||||
if ( context_length != 0xFFFF && context_length < 1 )
|
||||
return HB_Err_Not_Covered;
|
||||
|
@ -2798,7 +2813,7 @@ static FT_Error Load_Mark2Array( HB_Mark2Array* m2a,
|
|||
return error;
|
||||
|
||||
count = m2a->Mark2Count = GET_UShort();
|
||||
|
||||
|
||||
FORGET_Frame();
|
||||
|
||||
m2a->Mark2Record = NULL;
|
||||
|
@ -2846,7 +2861,7 @@ Fail:
|
|||
for ( k = 0; k < m; k++ )
|
||||
{
|
||||
m2an = m2r[k].Mark2Anchor;
|
||||
|
||||
|
||||
for ( n = 0; n < num_classes; n++ )
|
||||
Free_Anchor( &m2an[n], memory );
|
||||
|
||||
|
@ -3006,6 +3021,7 @@ static FT_Error Lookup_MarkMarkPos( GPOS_Instance* gpi,
|
|||
|
||||
HB_Position o;
|
||||
|
||||
FT_UNUSED(nesting_level);
|
||||
|
||||
if ( context_length != 0xFFFF && context_length < 1 )
|
||||
return HB_Err_Not_Covered;
|
||||
|
@ -3897,7 +3913,7 @@ static FT_Error Lookup_ContextPos1( GPOS_Instance* gpi,
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
return error;
|
||||
|
||||
if ( j + pr[k].GlyphCount - i == buffer->in_length )
|
||||
if ( j + pr[k].GlyphCount - i == (FT_Long)buffer->in_length )
|
||||
goto next_posrule;
|
||||
j++;
|
||||
}
|
||||
|
@ -3910,7 +3926,7 @@ static FT_Error Lookup_ContextPos1( GPOS_Instance* gpi,
|
|||
pr[k].PosCount, pr[k].PosLookupRecord,
|
||||
buffer,
|
||||
nesting_level );
|
||||
|
||||
|
||||
next_posrule:
|
||||
;
|
||||
}
|
||||
|
@ -3990,7 +4006,7 @@ static FT_Error Lookup_ContextPos2( GPOS_Instance* gpi,
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
goto End;
|
||||
|
||||
if ( j + pr->GlyphCount - i == buffer->in_length )
|
||||
if ( j + pr->GlyphCount - i == (FT_Long)buffer->in_length )
|
||||
goto next_posclassrule;
|
||||
j++;
|
||||
}
|
||||
|
@ -4062,7 +4078,7 @@ static FT_Error Lookup_ContextPos3( GPOS_Instance* gpi,
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
return error;
|
||||
|
||||
if ( j + cpf3->GlyphCount - i == buffer->in_length )
|
||||
if ( j + cpf3->GlyphCount - i == (FT_Long)buffer->in_length )
|
||||
return HB_Err_Not_Covered;
|
||||
j++;
|
||||
}
|
||||
|
@ -5215,7 +5231,7 @@ static FT_Error Lookup_ChainContextPos1(
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
return error;
|
||||
|
||||
if ( j + igc - i + lgc == buffer->in_length )
|
||||
if ( j + igc - i + lgc == (FT_Long)buffer->in_length )
|
||||
goto next_chainposrule;
|
||||
j++;
|
||||
}
|
||||
|
@ -5234,7 +5250,7 @@ static FT_Error Lookup_ChainContextPos1(
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
return error;
|
||||
|
||||
if ( j + lgc - i == buffer->in_length )
|
||||
if ( j + lgc - i == (FT_Long)buffer->in_length )
|
||||
goto next_chainposrule;
|
||||
j++;
|
||||
}
|
||||
|
@ -5387,7 +5403,7 @@ static FT_Error Lookup_ChainContextPos2(
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
goto End1;
|
||||
|
||||
if ( j + igc - i + lgc == buffer->in_length )
|
||||
if ( j + igc - i + lgc == (FT_Long)buffer->in_length )
|
||||
goto next_chainposclassrule;
|
||||
j++;
|
||||
}
|
||||
|
@ -5417,7 +5433,7 @@ static FT_Error Lookup_ChainContextPos2(
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
goto End1;
|
||||
|
||||
if ( j + lgc - i == buffer->in_length )
|
||||
if ( j + lgc - i == (FT_Long)buffer->in_length )
|
||||
goto next_chainposclassrule;
|
||||
j++;
|
||||
}
|
||||
|
@ -5531,7 +5547,7 @@ static FT_Error Lookup_ChainContextPos3(
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
return error;
|
||||
|
||||
if ( j + igc - i + lgc == buffer->in_length )
|
||||
if ( j + igc - i + lgc == (FT_Long)buffer->in_length )
|
||||
return HB_Err_Not_Covered;
|
||||
j++;
|
||||
}
|
||||
|
@ -5553,7 +5569,7 @@ static FT_Error Lookup_ChainContextPos3(
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
return error;
|
||||
|
||||
if ( j + lgc - i == buffer->in_length )
|
||||
if ( j + lgc - i == (FT_Long)buffer->in_length )
|
||||
return HB_Err_Not_Covered;
|
||||
j++;
|
||||
}
|
||||
|
@ -5968,6 +5984,8 @@ static FT_Error GPOS_Do_Glyph_Lookup( GPOS_Instance* gpi,
|
|||
static FT_Error Load_DefaultPos( HB_GPOS_SubTable* st,
|
||||
FT_Stream stream )
|
||||
{
|
||||
FT_UNUSED(st);
|
||||
FT_UNUSED(stream);
|
||||
return HB_Err_Invalid_GPOS_SubTable_Format;
|
||||
}
|
||||
|
||||
|
@ -6004,6 +6022,8 @@ FT_Error _HB_GPOS_Load_SubTable( HB_GPOS_SubTable* st,
|
|||
static void Free_DefaultPos( HB_GPOS_SubTable* st,
|
||||
FT_Memory memory )
|
||||
{
|
||||
FT_UNUSED(st);
|
||||
FT_UNUSED(memory);
|
||||
}
|
||||
|
||||
typedef void (*Free_Pos_Func_Type)( HB_GPOS_SubTable* st,
|
||||
|
@ -6103,7 +6123,7 @@ static FT_Error Position_CursiveChain ( HB_Buffer buffer )
|
|||
if (positions[j].cursive_chain > 0)
|
||||
positions[j].y_pos += positions[j - positions[j].cursive_chain].y_pos;
|
||||
}
|
||||
|
||||
|
||||
/* Then handle all right-to-left connections */
|
||||
for (i = buffer->in_length; i > 0; i--)
|
||||
{
|
||||
|
@ -6112,7 +6132,7 @@ static FT_Error Position_CursiveChain ( HB_Buffer buffer )
|
|||
if (positions[j].cursive_chain < 0)
|
||||
positions[j].y_pos += positions[j - positions[j].cursive_chain].y_pos;
|
||||
}
|
||||
|
||||
|
||||
return FT_Err_Ok;
|
||||
}
|
||||
|
||||
|
@ -6129,7 +6149,7 @@ FT_Error HB_GPOS_Add_Feature( HB_GPOSHeader* gpos,
|
|||
FT_UShort lookup_count;
|
||||
|
||||
/* Each feature can only be added once */
|
||||
|
||||
|
||||
if ( !gpos ||
|
||||
feature_index >= gpos->FeatureList.FeatureCount ||
|
||||
gpos->FeatureList.ApplyCount == gpos->FeatureList.FeatureCount )
|
||||
|
@ -6228,11 +6248,11 @@ FT_Error HB_GPOS_Apply_String( FT_Face face,
|
|||
gpi.load_flags = load_flags;
|
||||
gpi.r2l = r2l;
|
||||
gpi.dvi = dvi;
|
||||
|
||||
|
||||
lookup_count = gpos->LookupList.LookupCount;
|
||||
|
||||
for ( i = 0; i < gpos->FeatureList.ApplyCount; i++ )
|
||||
{
|
||||
{
|
||||
/* index of i'th feature */
|
||||
feature_index = gpos->FeatureList.ApplyOrder[i];
|
||||
feature = gpos->FeatureList.FeatureRecord[feature_index].Feature;
|
||||
|
@ -6255,7 +6275,7 @@ FT_Error HB_GPOS_Apply_String( FT_Face face,
|
|||
retError = error;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
error = Position_CursiveChain ( buffer );
|
||||
if ( error )
|
||||
return error;
|
||||
|
|
|
@ -155,7 +155,7 @@ Fail4:
|
|||
FT_Error HB_Done_GSUB_Table( HB_GSUBHeader* gsub )
|
||||
{
|
||||
FT_Memory memory = gsub->memory;
|
||||
|
||||
|
||||
_HB_OPEN_Free_LookupList( &gsub->LookupList, HB_Type_GSUB, memory );
|
||||
_HB_OPEN_Free_FeatureList( &gsub->FeatureList, memory );
|
||||
_HB_OPEN_Free_ScriptList( &gsub->ScriptList, memory );
|
||||
|
@ -176,6 +176,12 @@ static FT_Error Lookup_DefaultSubst( HB_GSUBHeader* gsub,
|
|||
FT_UShort context_length,
|
||||
int nesting_level )
|
||||
{
|
||||
FT_UNUSED(gsub);
|
||||
FT_UNUSED(st);
|
||||
FT_UNUSED(buffer);
|
||||
FT_UNUSED(flags);
|
||||
FT_UNUSED(context_length);
|
||||
FT_UNUSED(nesting_level);
|
||||
return HB_Err_Not_Covered;
|
||||
}
|
||||
|
||||
|
@ -297,6 +303,8 @@ static FT_Error Lookup_SingleSubst( HB_GSUBHeader* gsub,
|
|||
HB_SingleSubst* ss = &st->single;
|
||||
HB_GDEFHeader* gdef = gsub->gdef;
|
||||
|
||||
FT_UNUSED(nesting_level);
|
||||
|
||||
|
||||
if ( context_length != 0xFFFF && context_length < 1 )
|
||||
return HB_Err_Not_Covered;
|
||||
|
@ -506,6 +514,7 @@ static FT_Error Lookup_MultipleSubst( HB_GSUBHeader* gsub,
|
|||
HB_MultipleSubst* ms = &st->multiple;
|
||||
HB_GDEFHeader* gdef = gsub->gdef;
|
||||
|
||||
FT_UNUSED(nesting_level);
|
||||
|
||||
if ( context_length != 0xFFFF && context_length < 1 )
|
||||
return HB_Err_Not_Covered;
|
||||
|
@ -705,10 +714,9 @@ static FT_Error Lookup_AlternateSubst( HB_GSUBHeader* gsub,
|
|||
FT_UShort index, alt_index, property;
|
||||
HB_AlternateSubst* as = &st->alternate;
|
||||
HB_GDEFHeader* gdef = gsub->gdef;
|
||||
|
||||
|
||||
HB_AlternateSet aset;
|
||||
|
||||
FT_UNUSED(nesting_level);
|
||||
|
||||
if ( context_length != 0xFFFF && context_length < 1 )
|
||||
return HB_Err_Not_Covered;
|
||||
|
@ -995,6 +1003,7 @@ static FT_Error Lookup_LigatureSubst( HB_GSUBHeader* gsub,
|
|||
|
||||
HB_Ligature* lig;
|
||||
|
||||
FT_UNUSED(nesting_level);
|
||||
|
||||
if ( CHECK_Property( gdef, IN_CURITEM(), flags, &property ) )
|
||||
return error;
|
||||
|
@ -1032,7 +1041,7 @@ static FT_Error Lookup_LigatureSubst( HB_GSUBHeader* gsub,
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
return error;
|
||||
|
||||
if ( j + lig->ComponentCount - i == buffer->in_length )
|
||||
if ( j + lig->ComponentCount - i == (FT_Long)buffer->in_length )
|
||||
goto next_ligature;
|
||||
j++;
|
||||
}
|
||||
|
@ -1924,7 +1933,7 @@ static FT_Error Lookup_ContextSubst1( HB_GSUBHeader* gsub,
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
return error;
|
||||
|
||||
if ( j + sr[k].GlyphCount - i == buffer->in_length )
|
||||
if ( j + sr[k].GlyphCount - i == (FT_Long)buffer->in_length )
|
||||
goto next_subrule;
|
||||
j++;
|
||||
}
|
||||
|
@ -2015,7 +2024,7 @@ static FT_Error Lookup_ContextSubst2( HB_GSUBHeader* gsub,
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
goto End;
|
||||
|
||||
if ( j + sr->GlyphCount - i < buffer->in_length )
|
||||
if ( j + sr->GlyphCount - i < (FT_Long)buffer->in_length )
|
||||
goto next_subclassrule;
|
||||
j++;
|
||||
}
|
||||
|
@ -2086,7 +2095,7 @@ static FT_Error Lookup_ContextSubst3( HB_GSUBHeader* gsub,
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
return error;
|
||||
|
||||
if ( j + csf3->GlyphCount - i == buffer->in_length )
|
||||
if ( j + csf3->GlyphCount - i == (FT_Long)buffer->in_length )
|
||||
return HB_Err_Not_Covered;
|
||||
j++;
|
||||
}
|
||||
|
@ -2786,7 +2795,7 @@ static FT_Error Load_ChainContextSubst2(
|
|||
backtrack_offset, base_offset,
|
||||
stream ) ) != FT_Err_Ok )
|
||||
goto Fail5;
|
||||
|
||||
|
||||
if ( ( error = GSUB_Load_EmptyOrClassDefinition( &ccsf2->InputClassDef, count,
|
||||
input_offset, base_offset,
|
||||
stream ) ) != FT_Err_Ok )
|
||||
|
@ -3242,7 +3251,7 @@ static FT_Error Lookup_ChainContextSubst1( HB_GSUBHeader* gsub,
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
return error;
|
||||
|
||||
if ( j + igc - i + lgc == buffer->in_length )
|
||||
if ( j + igc - i + lgc == (FT_Long)buffer->in_length )
|
||||
goto next_chainsubrule;
|
||||
j++;
|
||||
}
|
||||
|
@ -3261,7 +3270,7 @@ static FT_Error Lookup_ChainContextSubst1( HB_GSUBHeader* gsub,
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
return error;
|
||||
|
||||
if ( j + lgc - i == buffer->in_length )
|
||||
if ( j + lgc - i == (FT_Long)buffer->in_length )
|
||||
goto next_chainsubrule;
|
||||
j++;
|
||||
}
|
||||
|
@ -3413,7 +3422,7 @@ static FT_Error Lookup_ChainContextSubst2( HB_GSUBHeader* gsub,
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
goto End1;
|
||||
|
||||
if ( j + igc - i + lgc == buffer->in_length )
|
||||
if ( j + igc - i + lgc == (FT_Long)buffer->in_length )
|
||||
goto next_chainsubclassrule;
|
||||
j++;
|
||||
}
|
||||
|
@ -3443,7 +3452,7 @@ static FT_Error Lookup_ChainContextSubst2( HB_GSUBHeader* gsub,
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
goto End1;
|
||||
|
||||
if ( j + lgc - i == buffer->in_length )
|
||||
if ( j + lgc - i == (FT_Long)buffer->in_length )
|
||||
goto next_chainsubclassrule;
|
||||
j++;
|
||||
}
|
||||
|
@ -3554,8 +3563,8 @@ static FT_Error Lookup_ChainContextSubst3( HB_GSUBHeader* gsub,
|
|||
{
|
||||
if ( error && error != HB_Err_Not_Covered )
|
||||
return error;
|
||||
|
||||
if ( j + igc - i + lgc == buffer->in_length )
|
||||
|
||||
if ( j + igc - i + lgc == (FT_Long)buffer->in_length )
|
||||
return HB_Err_Not_Covered;
|
||||
j++;
|
||||
}
|
||||
|
@ -3577,7 +3586,7 @@ static FT_Error Lookup_ChainContextSubst3( HB_GSUBHeader* gsub,
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
return error;
|
||||
|
||||
if ( j + lgc - i == buffer->in_length )
|
||||
if ( j + lgc - i == (FT_Long)buffer->in_length )
|
||||
return HB_Err_Not_Covered;
|
||||
j++;
|
||||
}
|
||||
|
@ -3650,17 +3659,17 @@ static FT_Error Load_ReverseChainContextSubst( HB_GSUB_SubTable* st,
|
|||
|
||||
if ( ACCESS_Frame( 2L ) )
|
||||
return error;
|
||||
|
||||
|
||||
rccs->SubstFormat = GET_UShort();
|
||||
|
||||
|
||||
if ( rccs->SubstFormat != 1 )
|
||||
return HB_Err_Invalid_GSUB_SubTable_Format;
|
||||
|
||||
FORGET_Frame();
|
||||
FORGET_Frame();
|
||||
|
||||
if ( ACCESS_Frame( 2L ) )
|
||||
return error;
|
||||
|
||||
|
||||
new_offset = GET_UShort() + base_offset;
|
||||
|
||||
FORGET_Frame();
|
||||
|
@ -3671,12 +3680,12 @@ static FT_Error Load_ReverseChainContextSubst( HB_GSUB_SubTable* st,
|
|||
return error;
|
||||
(void)FILE_Seek( cur_offset );
|
||||
|
||||
|
||||
|
||||
if ( ACCESS_Frame( 2L ) )
|
||||
goto Fail4;
|
||||
|
||||
rccs->BacktrackGlyphCount = GET_UShort();
|
||||
|
||||
|
||||
FORGET_Frame();
|
||||
|
||||
rccs->BacktrackCoverage = NULL;
|
||||
|
@ -3686,7 +3695,7 @@ static FT_Error Load_ReverseChainContextSubst( HB_GSUB_SubTable* st,
|
|||
if ( ALLOC_ARRAY( rccs->BacktrackCoverage, backtrack_count,
|
||||
HB_Coverage ) )
|
||||
goto Fail4;
|
||||
|
||||
|
||||
b = rccs->BacktrackCoverage;
|
||||
|
||||
for ( nb = 0; nb < backtrack_count; nb++ )
|
||||
|
@ -3710,7 +3719,7 @@ static FT_Error Load_ReverseChainContextSubst( HB_GSUB_SubTable* st,
|
|||
goto Fail3;
|
||||
|
||||
rccs->LookaheadGlyphCount = GET_UShort();
|
||||
|
||||
|
||||
FORGET_Frame();
|
||||
|
||||
rccs->LookaheadCoverage = NULL;
|
||||
|
@ -3738,12 +3747,12 @@ static FT_Error Load_ReverseChainContextSubst( HB_GSUB_SubTable* st,
|
|||
goto Fail2;
|
||||
(void)FILE_Seek( cur_offset );
|
||||
}
|
||||
|
||||
|
||||
if ( ACCESS_Frame( 2L ) )
|
||||
goto Fail2;
|
||||
|
||||
rccs->GlyphCount = GET_UShort();
|
||||
|
||||
|
||||
FORGET_Frame();
|
||||
|
||||
rccs->Substitute = NULL;
|
||||
|
@ -3755,20 +3764,20 @@ static FT_Error Load_ReverseChainContextSubst( HB_GSUB_SubTable* st,
|
|||
goto Fail2;
|
||||
|
||||
sub = rccs->Substitute;
|
||||
|
||||
|
||||
if ( ACCESS_Frame( count * 2L ) )
|
||||
goto Fail1;
|
||||
|
||||
|
||||
for ( n = 0; n < count; n++ )
|
||||
sub[n] = GET_UShort();
|
||||
|
||||
|
||||
FORGET_Frame();
|
||||
|
||||
|
||||
return FT_Err_Ok;
|
||||
|
||||
Fail1:
|
||||
FREE( sub );
|
||||
|
||||
|
||||
Fail2:
|
||||
for ( m = 0; m < nl; m++ )
|
||||
_HB_OPEN_Free_Coverage( &l[m], memory );
|
||||
|
@ -3782,21 +3791,21 @@ Fail3:
|
|||
FREE( b );
|
||||
|
||||
Fail4:
|
||||
_HB_OPEN_Free_Coverage( &rccs->Coverage, memory );
|
||||
_HB_OPEN_Free_Coverage( &rccs->Coverage, memory );
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
static void Free_ReverseChainContextSubst( HB_GSUB_SubTable* st,
|
||||
FT_Memory memory )
|
||||
{
|
||||
{
|
||||
FT_UShort n, count;
|
||||
HB_ReverseChainContextSubst* rccs = &st->reverse;
|
||||
|
||||
HB_Coverage* c;
|
||||
|
||||
_HB_OPEN_Free_Coverage( &rccs->Coverage, memory );
|
||||
|
||||
|
||||
if ( rccs->LookaheadCoverage )
|
||||
{
|
||||
count = rccs->LookaheadGlyphCount;
|
||||
|
@ -3847,10 +3856,10 @@ static FT_Error Lookup_ReverseChainContextSubst( HB_GSUBHeader* gsub,
|
|||
lgc = rccs->LookaheadGlyphCount;
|
||||
|
||||
/* check whether context is too long; it is a first guess only */
|
||||
|
||||
|
||||
if ( bgc > string_index || string_index + 1 + lgc > buffer->in_length )
|
||||
return HB_Err_Not_Covered;
|
||||
|
||||
|
||||
if ( bgc )
|
||||
{
|
||||
/* Since we don't know in advance the number of glyphs to inspect,
|
||||
|
@ -3877,14 +3886,14 @@ static FT_Error Lookup_ReverseChainContextSubst( HB_GSUBHeader* gsub,
|
|||
}
|
||||
|
||||
j = string_index;
|
||||
|
||||
|
||||
error = _HB_OPEN_Coverage_Index( &rccs->Coverage, IN_GLYPH( j ), &input_index );
|
||||
if ( error )
|
||||
return error;
|
||||
|
||||
/* we are starting for lookahead glyphs right after the last context
|
||||
glyph */
|
||||
|
||||
|
||||
j += 1;
|
||||
|
||||
lc = rccs->LookaheadCoverage;
|
||||
|
@ -3896,7 +3905,7 @@ static FT_Error Lookup_ReverseChainContextSubst( HB_GSUBHeader* gsub,
|
|||
if ( error && error != HB_Err_Not_Covered )
|
||||
return error;
|
||||
|
||||
if ( j + lgc - i == buffer->in_length )
|
||||
if ( j + lgc - i == (FT_Long)buffer->in_length )
|
||||
return HB_Err_Not_Covered;
|
||||
j++;
|
||||
}
|
||||
|
@ -3907,7 +3916,7 @@ static FT_Error Lookup_ReverseChainContextSubst( HB_GSUBHeader* gsub,
|
|||
}
|
||||
|
||||
IN_GLYPH( string_index ) = rccs->Substitute[input_index];
|
||||
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
@ -4110,7 +4119,7 @@ FT_Error HB_GSUB_Query_Languages( HB_GSUBHeader* gsub,
|
|||
return FT_Err_Invalid_Argument;
|
||||
|
||||
memory = gsub->memory;
|
||||
|
||||
|
||||
sl = &gsub->ScriptList;
|
||||
sr = sl->ScriptRecord;
|
||||
|
||||
|
@ -4162,7 +4171,7 @@ FT_Error HB_GSUB_Query_Features( HB_GSUBHeader* gsub,
|
|||
return FT_Err_Invalid_Argument;
|
||||
|
||||
memory = gsub->memory;
|
||||
|
||||
|
||||
sl = &gsub->ScriptList;
|
||||
sr = sl->ScriptRecord;
|
||||
|
||||
|
@ -4283,6 +4292,9 @@ static FT_Error GSUB_Do_Glyph_Lookup( HB_GSUBHeader* gsub,
|
|||
static FT_Error Load_DefaultSubst( HB_GSUB_SubTable* st,
|
||||
FT_Stream stream )
|
||||
{
|
||||
FT_UNUSED(st);
|
||||
FT_UNUSED(stream);
|
||||
|
||||
return HB_Err_Invalid_GSUB_SubTable_Format;
|
||||
}
|
||||
|
||||
|
@ -4318,6 +4330,8 @@ FT_Error _HB_GSUB_Load_SubTable( HB_GSUB_SubTable* st,
|
|||
static void Free_DefaultSubst( HB_GSUB_SubTable* st,
|
||||
FT_Memory memory )
|
||||
{
|
||||
FT_UNUSED(st);
|
||||
FT_UNUSED(memory);
|
||||
}
|
||||
|
||||
typedef void (*Free_Subst_Func_Type)( HB_GSUB_SubTable* st,
|
||||
|
@ -4398,14 +4412,14 @@ static FT_Error Apply_ReverseChainContextSubst( HB_GSUBHeader* gsub,
|
|||
FT_Error error, retError = HB_Err_Not_Covered;
|
||||
FT_ULong subtable_Count, string_index;
|
||||
FT_UShort flags;
|
||||
HB_Lookup* lo;
|
||||
HB_Lookup* lo;
|
||||
|
||||
if ( buffer->in_length == 0 )
|
||||
return HB_Err_Not_Covered;
|
||||
|
||||
|
||||
lo = &gsub->LookupList.Lookup[lookup_index];
|
||||
flags = lo->LookupFlag;
|
||||
|
||||
flags = lo->LookupFlag;
|
||||
|
||||
for ( subtable_Count = 0; subtable_Count < lo->SubTableCount; subtable_Count++ )
|
||||
{
|
||||
string_index = buffer->in_length - 1;
|
||||
|
@ -4426,7 +4440,7 @@ static FT_Error Apply_ReverseChainContextSubst( HB_GSUBHeader* gsub,
|
|||
}
|
||||
while (string_index--);
|
||||
}
|
||||
|
||||
|
||||
return retError;
|
||||
}
|
||||
|
||||
|
@ -4443,7 +4457,7 @@ FT_Error HB_GSUB_Add_Feature( HB_GSUBHeader* gsub,
|
|||
FT_UShort lookup_count;
|
||||
|
||||
/* Each feature can only be added once */
|
||||
|
||||
|
||||
if ( !gsub ||
|
||||
feature_index >= gsub->FeatureList.FeatureCount ||
|
||||
gsub->FeatureList.ApplyCount == gsub->FeatureList.FeatureCount )
|
||||
|
@ -4558,16 +4572,16 @@ FT_Error HB_GSUB_Apply_String( HB_GSUBHeader* gsub,
|
|||
}
|
||||
else
|
||||
retError = error;
|
||||
|
||||
|
||||
if ( need_swap )
|
||||
{
|
||||
error = hb_buffer_swap( buffer );
|
||||
if ( error )
|
||||
goto End;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
error = retError;
|
||||
|
||||
End:
|
||||
|
|
|
@ -41,6 +41,10 @@ FT_BEGIN_HEADER
|
|||
# define TTAG_GSUB FT_MAKE_TAG( 'G', 'S', 'U', 'B' )
|
||||
#endif
|
||||
|
||||
#ifndef FT_UNUSED
|
||||
# define FT_UNUSED(arg) ((arg) = (arg))
|
||||
#endif
|
||||
|
||||
#include "ftglue.h"
|
||||
|
||||
#define ARRAY_LEN(Array) ((int)(sizeof (Array) / sizeof (Array)[0]))
|
||||
|
|
Loading…
Reference in New Issue