From df735213a8be1b74d08ee4a788a311420ab07666 Mon Sep 17 00:00:00 2001 From: Qunxin Liu <48925186+qxliu76@users.noreply.github.com> Date: Wed, 6 Dec 2023 09:50:29 -0800 Subject: [PATCH] [instancer-solver] port solver fix (#4519) * [instancer-solver] port solver fix from https://github.com/fonttools/fonttools/pull/3374 --- src/hb-subset-instancer-solver.cc | 5 ++++- src/test-subset-instancer-solver.cc | 18 ++++++++++++------ ...ault.retain-all-codepoint.wght=500-800.ttf | Bin 7288 -> 7296 bytes 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/hb-subset-instancer-solver.cc b/src/hb-subset-instancer-solver.cc index 4876bc437..70783c0a0 100644 --- a/src/hb-subset-instancer-solver.cc +++ b/src/hb-subset-instancer-solver.cc @@ -256,7 +256,10 @@ _solve (Triple tent, Triple axisLimit, bool negative = false) */ float newUpper = peak + (1 - gain) * (upper - peak); assert (axisMax <= newUpper); // Because outGain > gain - if (newUpper <= axisDef + (axisMax - axisDef) * 2) + /* Disabled because ots doesn't like us: + * https://github.com/fonttools/fonttools/issues/3350 */ + + if (false && (newUpper <= axisDef + (axisMax - axisDef) * 2)) { upper = newUpper; if (!negative && axisDef + (axisMax - axisDef) * MAX_F2DOT14 < upper) diff --git a/src/test-subset-instancer-solver.cc b/src/test-subset-instancer-solver.cc index 0a0aea8c2..a88aa3bda 100644 --- a/src/test-subset-instancer-solver.cc +++ b/src/test-subset-instancer-solver.cc @@ -95,9 +95,11 @@ main (int argc, char **argv) Triple tent (0.f, 0.2f, 1.f); Triple axis_range (-1.f, 0.f, 0.8f); result_t out = rebase_tent (tent, axis_range, default_axis_distances); - assert (out.length == 1); + assert (out.length == 2); assert (out[0].first == 1.f); - assert (out[0].second == Triple (0.f, 0.25f, 1.25f)); + assert (out[0].second == Triple (0.f, 0.25f, 1.f)); + assert (approx (out[1].first, 0.25f)); + assert (out[1].second == Triple (0.25f, 1.f, 1.f)); } /* Case 3 boundary */ @@ -105,9 +107,11 @@ main (int argc, char **argv) Triple tent (0.f, 0.4f, 1.f); Triple axis_range (-1.f, 0.f, 0.5f); result_t out = rebase_tent (tent, axis_range, default_axis_distances); - assert (out.length == 1); + assert (out.length == 2); assert (out[0].first == 1.f); - assert (out[0].second == Triple (0.f, 0.8f, 32767/(float) (1 << 14))); + assert (out[0].second == Triple (0.f, 0.8f, 1.f)); + assert (out[1].first == 2.5f/3); + assert (out[1].second == Triple (0.8f, 1.f, 1.f)); } /* Case 4 */ @@ -353,9 +357,11 @@ main (int argc, char **argv) Triple tent (0.f, 0.2f, 1.f); Triple axis_range (0.f, 0.f, 0.5f); result_t out = rebase_tent (tent, axis_range, default_axis_distances); - assert (out.length == 1); + assert (out.length == 2); assert (out[0].first == 1.f); - assert (out[0].second == Triple (0.f, 0.4f, 32767/(float) (1 << 14))); + assert (out[0].second == Triple (0.f, 0.4f, 1.f)); + assert (out[1].first == 0.625f); + assert (out[1].second == Triple (0.4f, 1.f, 1.f)); } diff --git a/test/subset/data/expected/mvar_partial_instance/NotoSans-VF.abc.default.retain-all-codepoint.wght=500-800.ttf b/test/subset/data/expected/mvar_partial_instance/NotoSans-VF.abc.default.retain-all-codepoint.wght=500-800.ttf index d267f59b710d373f5044c00df040f9d269f2c35c..c65f12476986dad8a184bfb05af1c7a73449af0a 100644 GIT binary patch delta 1065 zcmYk4O>7%Q6vyAp?#!&cUVp6Zb=FSfe6TAUL3qZdMK(1W9@%$^j#>QvY-zxm_<9r{W3IMqeez^NS(HGXY9`3wAIhp1}=O|6nDYgBmJa1JPi{l9u-meD{L=ory zbL<)&fd4t0WrOS(|6SJbe`ZD&e86VW>`2zK*tc3w|J0wVzHAII3w6_fuR8t2x$b{i zoftado6{>RDCFa-H*B9I7$;k8n!gUvMaW&A0Hkb{(hJ%m_f+x3!P4<7LEKbY6sT@GYq3-+ohr@bTV}HisLv% zL8KJAk&p1mAYrvy4RW5Ql%O6ZgxoR+QDf0zE{UU1r6@I|u}u9t^~+0(d4qEfO5rWC zi=bqdK`7vM4mz$fonQ#4f6;mU%HsJ5>&g}>3eDq*l6Z)UA<3#vm8NNsdf#oEa2u`; z9zP?J-gPcLLAmAs?MzUN8I6p-ztnhRtKaYS`n~0aY1efpXD%-E`m2lQ=Y7#!?xSYK z(ca$P5mdZ_VOsfo-ZV|Y86DCz2yR*X`+um4?yjz`w#3Q4|DbW_#naO>{8J)q+b%MY z0s4fT=4g0|igNXKyIqI6N2_J-i40YWr41qZ$YLzV6OxQZqf}Am|2eVLK^7=o*RXO; z(~%9+)0E>f%i>C5=?Xb*x;LJk%Q!?~5~qkYNfYD}$CO4O$DNS?!7Uz0?;99H8vGB^ zJ@--uW}~?aOOxYb!Ig>g3GKWEti?uSql}3?w7y z{a+6b4jzT9G}rBRdm9De-)nxg*)EtodpC^>%d{QSfZ*)xY$Ul=vMj5FXgys@h?Aj^ zDIxfb#51VEc1}~`f8Tm)jtgz*QpPpTc)o0x3)q%ssbb}Y5Db|2388+{dZ`Clzf e3s`p?Mxzm4JqV*XM8yze9#J1_*pKQ%0Qd))$a`=A delta 1076 zcmYk5J!~9B6vy9u?T2soZhhzYcJJbKV*BpEhY2MSG8{+|SSXMWWV$pI6o@EDD5CVP zNkf{z_Nf3xf(E&vLN4eC5>-$rQpB=_bU+bo-`(!c3~%=mlK*OV-pssxn)iEew$6@U zzBOokbiXT?^1HUMalCVteM|ao)uTjdS6|zkTi_-oQiXc!Pp|Ddf@RXzllv#eDNS>O zC$EW%bmKVrN-T+uV~mr0BAUr>!YUU35KB1hDA9Js9d?G_Ov1(mt8@d{Os+RhJ(*le zZa4gLG5}aherlY2I(gXm@V)t9Wo1R=sBEhA5Tz`qVy57TcE8_WY+6T0N3akv%K{xy zt@U=B8n%m~hr{9Uuc2XEX)0>XFbr$iB)L8J-~y$FVK~*QQ?U(3;($4`v$GWgwC0ps zIYvw+_dE~Gh-qz*h!R4!@r`i`B(^0UNh>9D71La)BSOuh5Xm!A+2D&-Tq8Q0b%@5x0^}5|&_jKsj>-9Om9d>&wi=$CbG*0(Wf%tcC zZ|@M?$T6&nRZ0j>Vye<~+uh&)TRXJg>2&7A(SGuv`OCR6YBW*As8*{LL3B16k0~8n zG%t2?%kzET123XAhu>hBHHksqa5*=Hq-rvmU~)Wp$Z$?sK^gN!Qj96Zfv|EN zG?GA!$+=+jm9W5)XHqJ}j1|C2NJ&UuI-wmEoFi<7J5VwkJj3i>&@Eu7AS{NkRib&L z_5M1|(=^qlGwUzb-I^P8R##U$Ew47;YBgPGM^OupA`FCL(1-g62M7OT+-WT@FZcSk zk=$#2vo1_*BtoJl6Sn2nOra;E(P%80J!9L}3^-B5wSrv6X3+qQF%ns%NDLb!`LX@{ zG8Z%sNP&TIv*J1ywkVD>rVs+}Zgi87gr9up#XM7SfIk+g%M1^WS0l})S44tDKdQfA KT1x#ncENwR2z@mG