perf(woff2): triplet 编码 case2/3/4 去掉冗余的轴非零判定

case1 排除 dx===0、case2 排除 dy===0 后,走到 case3/case4 时两轴必非零,
故 case3/case4 的 'dx!==0 && dy!==0' 是冗余判定。令东 74.6% 点命中 case3,
每点省 2 次比较。case2 的 'dx!==0' 同理冗余(case1 未命中且 dy===0 则 dx 必非0)。
cmp 字节一致,逻辑等价已证明。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
崮生(子虚) 2026-07-24 11:55:24 +08:00
parent 72c6afef92
commit 60db8d226b

View File

@ -517,11 +517,14 @@ function transformGlyfAndLoca(glyfData, locaData, indexFormat, numGlyphs) {
_gs[wpos] = absDy & 0xFF;
flag = curveBit + ((absDy & 0xF00) >> 7) + (dy >= 0 ? 1 : 0);
adv = 1;
} else if (dy === 0 && dx !== 0 && absDx < 1280) {
} else if (dy === 0 && absDx < 1280) {
/** 优化316: case2 去掉冗余 `dx !== 0`——case1 已排除 dx===0走到此分支 dx 必非 0 */
_gs[wpos] = absDx & 0xFF;
flag = curveBit + 10 + ((absDx & 0xF00) >> 7) + (dx >= 0 ? 1 : 0);
adv = 1;
} else if (dx !== 0 && dy !== 0 && absDx < 65 && absDy < 65) {
} else if (absDx < 65 && absDy < 65) {
/** 316: case3 `dx !== 0 && dy !== 0`case1/case2 0
* 走到此分支两轴必非 0令东 74.6% 的点命中此分支 2 /点冗余比较 */
const ax = absDx - 1;
const ay = absDy - 1;
_gs[wpos] = ((ax & 0xF) << 4) | (ay & 0xF);
@ -529,7 +532,8 @@ function transformGlyfAndLoca(glyfData, locaData, indexFormat, numGlyphs) {
const ySignBit = dy >= 0 ? 1 : 0;
flag = curveBit + 20 + (ax & 0x30) + ((ay & 0x30) >> 2) + xSignBit + 2 * ySignBit;
adv = 1;
} else if (dx !== 0 && dy !== 0 && absDx < 769 && absDy < 769) {
} else if (absDx < 769 && absDy < 769) {
/** 优化316: case4 同理去掉冗余 `dx !== 0 && dy !== 0` */
const ax = absDx - 1;
const ay = absDy - 1;
_gs[wpos] = ax & 0xFF;