fixed "Fixed" number decoding
This commit is contained in:
parent
811a651bbd
commit
27c32d8afb
|
@ -160,7 +160,7 @@ enum OpCode {
|
||||||
OpCode_vhcurveto, /* 30 CFF, CFF2 */
|
OpCode_vhcurveto, /* 30 CFF, CFF2 */
|
||||||
OpCode_hvcurveto, /* 31 CFF, CFF2 */
|
OpCode_hvcurveto, /* 31 CFF, CFF2 */
|
||||||
|
|
||||||
OpCode_longintcs = 255, /* 32-bit integer */
|
OpCode_fixedcs = 255, /* 32-bit fixed */
|
||||||
|
|
||||||
/* Two byte escape operators 12, (0-41) */
|
/* Two byte escape operators 12, (0-41) */
|
||||||
OpCode_ReservedESC0 = OpCode_ESC_Base, /* Make_OpCode_ESC (0) */
|
OpCode_ReservedESC0 = OpCode_ESC_Base, /* Make_OpCode_ESC (0) */
|
||||||
|
@ -451,6 +451,15 @@ struct ArgStack : Stack<Number, 513>
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline bool push_fixed_from_substr (SubByteStr& substr)
|
||||||
|
{
|
||||||
|
if (unlikely (!substr.avail (4) || !check_overflow (1)))
|
||||||
|
return false;
|
||||||
|
push_real ((int32_t)*(const HBUINT32*)&substr[0] / 65536.0);
|
||||||
|
substr.inc (4);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
inline void reverse_range (int i, int j)
|
inline void reverse_range (int i, int j)
|
||||||
{
|
{
|
||||||
assert (i >= 0 && i < j);
|
assert (i >= 0 && i < j);
|
||||||
|
|
|
@ -177,8 +177,8 @@ struct CSOpSet : OpSet
|
||||||
env.set_endchar (true);
|
env.set_endchar (true);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case OpCode_longintcs:
|
case OpCode_fixedcs:
|
||||||
return env.argStack.push_longint_from_substr (env.substr);
|
return env.argStack.push_fixed_from_substr (env.substr);
|
||||||
|
|
||||||
case OpCode_callsubr:
|
case OpCode_callsubr:
|
||||||
return env.callSubr (env.localSubrs);
|
return env.callSubr (env.localSubrs);
|
||||||
|
|
Loading…
Reference in New Issue