OpenType-1.4 update: backtrack information is stored with the item closest
Fri Jul 25 23:38:07 2003 Owen Taylor <otaylor@redhat.com> * pango/opentype/ftxgpos.c pango/opentype/ftxgsub.c: OpenType-1.4 update: backtrack information is stored with the item closest to the input first (From FreeType, Werner Lemberg, 2002-09-26)
This commit is contained in:
parent
15a69e4a12
commit
06c12109de
|
@ -5264,7 +5264,7 @@
|
||||||
curr_pos = 0;
|
curr_pos = 0;
|
||||||
s_in = &in->string[curr_pos];
|
s_in = &in->string[curr_pos];
|
||||||
|
|
||||||
for ( i = bgc, j = in->pos - 1; i > 0; i--, j-- )
|
for ( i = 0, j = in->pos - 1; i < bgc; i++, j-- )
|
||||||
{
|
{
|
||||||
while ( CHECK_Property( gdef, s_in[j], flags, &property ) )
|
while ( CHECK_Property( gdef, s_in[j], flags, &property ) )
|
||||||
{
|
{
|
||||||
|
@ -5277,11 +5277,21 @@
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( s_in[j] != curr_cpr.Backtrack[i - 1] )
|
/* In OpenType 1.3, it is undefined whether the offsets of
|
||||||
|
backtrack glyphs is in logical order or not. Version 1.4
|
||||||
|
will clarify this:
|
||||||
|
|
||||||
|
Logical order - a b c d e f g h i j
|
||||||
|
i
|
||||||
|
Input offsets - 0 1
|
||||||
|
Backtrack offsets - 3 2 1 0
|
||||||
|
Lookahead offsets - 0 1 2 3 */
|
||||||
|
|
||||||
|
if ( s_in[j] != curr_cpr.Backtrack[i] )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( i != 0 )
|
if ( i != bgc )
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5465,7 +5475,7 @@
|
||||||
known_backtrack_classes = i;
|
known_backtrack_classes = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( bc[bgc - 1 - i] != backtrack_classes[i] )
|
if ( bc[i] != backtrack_classes[i] )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5613,7 +5623,7 @@
|
||||||
s_in = &in->string[curr_pos];
|
s_in = &in->string[curr_pos];
|
||||||
bc = ccpf3->BacktrackCoverage;
|
bc = ccpf3->BacktrackCoverage;
|
||||||
|
|
||||||
for ( i = bgc, j = in->pos - 1; i > 0; i--, j-- )
|
for ( i = 0, j = in->pos - 1; i < bgc; i++, j-- )
|
||||||
{
|
{
|
||||||
while ( CHECK_Property( gdef, s_in[j], flags, &property ) )
|
while ( CHECK_Property( gdef, s_in[j], flags, &property ) )
|
||||||
{
|
{
|
||||||
|
@ -5626,7 +5636,7 @@
|
||||||
return TTO_Err_Not_Covered;
|
return TTO_Err_Not_Covered;
|
||||||
}
|
}
|
||||||
|
|
||||||
error = Coverage_Index( &bc[i - 1], s_in[j], &index );
|
error = Coverage_Index( &bc[i], s_in[j], &index );
|
||||||
if ( error )
|
if ( error )
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
@ -5656,8 +5666,8 @@
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* we are starting for lookahead glyphs right after the last context
|
/* we are starting to check for lookahead glyphs right after the
|
||||||
glyph */
|
last context glyph */
|
||||||
|
|
||||||
curr_pos = j;
|
curr_pos = j;
|
||||||
s_in = &in->string[curr_pos];
|
s_in = &in->string[curr_pos];
|
||||||
|
|
|
@ -3423,13 +3423,13 @@
|
||||||
|
|
||||||
if ( bgc )
|
if ( bgc )
|
||||||
{
|
{
|
||||||
/* Since we don't know in advance the number of glyphs to inspect,
|
/* since we don't know in advance the number of glyphs to inspect,
|
||||||
we search backwards for matches in the backtrack glyph array */
|
we search backwards for matches in the backtrack glyph array */
|
||||||
|
|
||||||
curr_pos = 0;
|
curr_pos = 0;
|
||||||
s_in = &in->string[curr_pos];
|
s_in = &in->string[curr_pos];
|
||||||
|
|
||||||
for ( i = bgc, j = in->pos - 1; i > 0; i--, j-- )
|
for ( i = 0, j = in->pos - 1; i < bgc; i++, j-- )
|
||||||
{
|
{
|
||||||
while ( CHECK_Property( gdef, s_in[j], flags, &property ) )
|
while ( CHECK_Property( gdef, s_in[j], flags, &property ) )
|
||||||
{
|
{
|
||||||
|
@ -3442,11 +3442,21 @@
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( s_in[j] != curr_csr.Backtrack[i - 1] )
|
/* In OpenType 1.3, it is undefined whether the offsets of
|
||||||
|
backtrack glyphs is in logical order or not. Version 1.4
|
||||||
|
will clarify this:
|
||||||
|
|
||||||
|
Logical order - a b c d e f g h i j
|
||||||
|
i
|
||||||
|
Input offsets - 0 1
|
||||||
|
Backtrack offsets - 3 2 1 0
|
||||||
|
Lookahead offsets - 0 1 2 3 */
|
||||||
|
|
||||||
|
if ( s_in[j] != curr_csr.Backtrack[i] )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( i != 0 )
|
if ( i != bgc )
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3630,7 +3640,7 @@
|
||||||
known_backtrack_classes = i;
|
known_backtrack_classes = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( bc[bgc - 1 - i] != backtrack_classes[i] )
|
if ( bc[i] != backtrack_classes[i] )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3777,7 +3787,7 @@
|
||||||
s_in = &in->string[curr_pos];
|
s_in = &in->string[curr_pos];
|
||||||
bc = ccsf3->BacktrackCoverage;
|
bc = ccsf3->BacktrackCoverage;
|
||||||
|
|
||||||
for ( i = bgc, j = in->pos - 1; i > 0; i--, j-- )
|
for ( i = 0, j = in->pos - 1; i < bgc; i++, j-- )
|
||||||
{
|
{
|
||||||
while ( CHECK_Property( gdef, s_in[j], flags, &property ) )
|
while ( CHECK_Property( gdef, s_in[j], flags, &property ) )
|
||||||
{
|
{
|
||||||
|
@ -3790,7 +3800,7 @@
|
||||||
return TTO_Err_Not_Covered;
|
return TTO_Err_Not_Covered;
|
||||||
}
|
}
|
||||||
|
|
||||||
error = Coverage_Index( &bc[i - 1], s_in[j], &index );
|
error = Coverage_Index( &bc[i], s_in[j], &index );
|
||||||
if ( error )
|
if ( error )
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue