mirror of
https://github.com/harfbuzz/harfbuzz.git
synced 2025-04-14 17:13:40 +00:00
[subset/cff] Speed up offset writing
This commit is contained in:
parent
c85ca75eff
commit
da2e2c8c25
1 changed files with 52 additions and 0 deletions
|
@ -109,6 +109,7 @@ struct CFFIndex
|
|||
|
||||
/* serialize indices */
|
||||
unsigned int offset = 1;
|
||||
#ifdef HB_OPTIMIZE_SIZE
|
||||
unsigned int i = 0;
|
||||
for (unsigned _ : +it)
|
||||
{
|
||||
|
@ -116,6 +117,57 @@ struct CFFIndex
|
|||
offset += _;
|
||||
}
|
||||
set_offset_at (i, offset);
|
||||
#else
|
||||
switch (off_size)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
HBUINT8 *p = (HBUINT8 *) offsets;
|
||||
for (unsigned _ : +it)
|
||||
{
|
||||
*p++ = offset;
|
||||
offset += _;
|
||||
}
|
||||
*p = offset;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
HBUINT16 *p = (HBUINT16 *) offsets;
|
||||
for (unsigned _ : +it)
|
||||
{
|
||||
*p++ = offset;
|
||||
offset += _;
|
||||
}
|
||||
*p = offset;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
{
|
||||
HBUINT24 *p = (HBUINT24 *) offsets;
|
||||
for (unsigned _ : +it)
|
||||
{
|
||||
*p++ = offset;
|
||||
offset += _;
|
||||
}
|
||||
*p = offset;
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
{
|
||||
HBUINT32 *p = (HBUINT32 *) offsets;
|
||||
for (unsigned _ : +it)
|
||||
{
|
||||
*p++ = offset;
|
||||
offset += _;
|
||||
}
|
||||
*p = offset;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
return_trace (total);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue