[bdf] Speed up charmap access.
This makes FT_Get_Char_Index and FT_Get_Next_Char 4-5 times faster. * src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Help binary search with continuous prediction.
This commit is contained in:
parent
793a9ff9f5
commit
0f122fef34
19
ChangeLog
19
ChangeLog
|
@ -1,13 +1,22 @@
|
||||||
2018-09-20 Alexei Podtelezhnikov <apodtele@gmail.com>
|
2018-09-23 Alexei Podtelezhnikov <apodtele@gmail.com>
|
||||||
|
|
||||||
* src/base/ftobjs.c (ft_glyphslot_reset_bimap): Another tweak.
|
[bdf] Speed up charmap access.
|
||||||
|
|
||||||
|
This makes FT_Get_Char_Index and FT_Get_Next_Char 4-5 times faster.
|
||||||
|
|
||||||
|
* src/bdf/bdfdrivr.c (bdf_cmap_char_{index,next}): Help binary search
|
||||||
|
with continuous prediction.
|
||||||
|
|
||||||
|
2018-09-22 Alexei Podtelezhnikov <apodtele@gmail.com>
|
||||||
|
|
||||||
|
* src/base/ftobjs.c (ft_glyphslot_preset_bimap): Another tweak.
|
||||||
|
|
||||||
This one should be clearer. When the rounded monochrome bbox collapses
|
This one should be clearer. When the rounded monochrome bbox collapses
|
||||||
we add a pixel that covers most if not all original cbox.
|
we add a pixel that covers most if not all original cbox.
|
||||||
|
|
||||||
2018-09-20 Alexei Podtelezhnikov <apodtele@gmail.com>
|
2018-09-21 Alexei Podtelezhnikov <apodtele@gmail.com>
|
||||||
|
|
||||||
* src/base/ftobjs.c (ft_glyphslot_reset_bimap): Further tweak.
|
* src/base/ftobjs.c (ft_glyphslot_preset_bimap): Further tweak.
|
||||||
|
|
||||||
2018-09-21 Ben Wagner <bungeman@google.com>
|
2018-09-21 Ben Wagner <bungeman@google.com>
|
||||||
|
|
||||||
|
@ -36,7 +45,7 @@
|
||||||
|
|
||||||
2018-09-20 Alexei Podtelezhnikov <apodtele@gmail.com>
|
2018-09-20 Alexei Podtelezhnikov <apodtele@gmail.com>
|
||||||
|
|
||||||
* src/base/ftobjs.c (ft_glyphslot_reset_bimap): Tiny rounding tweak.
|
* src/base/ftobjs.c (ft_glyphslot_preset_bimap): Tiny rounding tweak.
|
||||||
|
|
||||||
This adds pixels in case a contour goes through the center
|
This adds pixels in case a contour goes through the center
|
||||||
and they need to be turned on in the b/w rasterizer.
|
and they need to be turned on in the b/w rasterizer.
|
||||||
|
|
|
@ -99,13 +99,16 @@ THE SOFTWARE.
|
||||||
|
|
||||||
min = 0;
|
min = 0;
|
||||||
max = cmap->num_encodings;
|
max = cmap->num_encodings;
|
||||||
|
mid = ( min + max ) >> 1;
|
||||||
|
|
||||||
while ( min < max )
|
while ( min < max )
|
||||||
{
|
{
|
||||||
FT_ULong code;
|
FT_ULong code;
|
||||||
|
|
||||||
|
|
||||||
mid = ( min + max ) >> 1;
|
if ( mid > max || mid < min )
|
||||||
|
mid = ( min + max ) >> 1;
|
||||||
|
|
||||||
code = encodings[mid].enc;
|
code = encodings[mid].enc;
|
||||||
|
|
||||||
if ( charcode == code )
|
if ( charcode == code )
|
||||||
|
@ -120,6 +123,9 @@ THE SOFTWARE.
|
||||||
max = mid;
|
max = mid;
|
||||||
else
|
else
|
||||||
min = mid + 1;
|
min = mid + 1;
|
||||||
|
|
||||||
|
/* prediction in a continuous block */
|
||||||
|
mid += charcode - code;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -139,13 +145,16 @@ THE SOFTWARE.
|
||||||
|
|
||||||
min = 0;
|
min = 0;
|
||||||
max = cmap->num_encodings;
|
max = cmap->num_encodings;
|
||||||
|
mid = ( min + max ) >> 1;
|
||||||
|
|
||||||
while ( min < max )
|
while ( min < max )
|
||||||
{
|
{
|
||||||
FT_ULong code; /* same as BDF_encoding_el.enc */
|
FT_ULong code; /* same as BDF_encoding_el.enc */
|
||||||
|
|
||||||
|
|
||||||
mid = ( min + max ) >> 1;
|
if ( mid > max || mid < min )
|
||||||
|
mid = ( min + max ) >> 1;
|
||||||
|
|
||||||
code = encodings[mid].enc;
|
code = encodings[mid].enc;
|
||||||
|
|
||||||
if ( charcode == code )
|
if ( charcode == code )
|
||||||
|
@ -160,6 +169,9 @@ THE SOFTWARE.
|
||||||
max = mid;
|
max = mid;
|
||||||
else
|
else
|
||||||
min = mid + 1;
|
min = mid + 1;
|
||||||
|
|
||||||
|
/* prediction in a continuous block */
|
||||||
|
mid += charcode - code;
|
||||||
}
|
}
|
||||||
|
|
||||||
charcode = 0;
|
charcode = 0;
|
||||||
|
|
Loading…
Reference in New Issue