From bdde8354dcb764242134c845155b6b4f5b21e3c1 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Tue, 15 Sep 2026 11:18:29 -0700 Subject: [PATCH 1/2] Fix vstemhm dispatch in CFF2 stream conversion --- src/auto/fontloader-2023-12-28.lua | 2 +- src/auto/luaotfload-status.lua | 6 +++--- src/fontloader/misc/fontloader-font-cff.lua | 2 +- src/fontloader/runtime/fontloader-reference.lua | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/auto/fontloader-2023-12-28.lua b/src/auto/fontloader-2023-12-28.lua index 56251674..6eb23afb 100644 --- a/src/auto/fontloader-2023-12-28.lua +++ b/src/auto/fontloader-2023-12-28.lua @@ -11292,7 +11292,7 @@ end elseif t==16 then local s=p_blend() or 0 i=i+s+1 - elseif t==1 or t==3 or t==18 or operation==23 then + elseif t==1 or t==3 or t==18 or t==23 then p_getstem() if version=="cff" then if top>0 then diff --git a/src/auto/luaotfload-status.lua b/src/auto/luaotfload-status.lua index 23e183d9..af0c5ff1 100644 --- a/src/auto/luaotfload-status.lua +++ b/src/auto/luaotfload-status.lua @@ -1,6 +1,6 @@ return { ["hashes"]={ - { "fontloader-2023-12-28.lua", "f33a8946b4d6a005e76276706db83059" }, + { "fontloader-2023-12-28.lua", "96efe50efa31e373f9fdd59eabbdf09e" }, { "fontloader-util-fil.lua", "d0accf4180201efd567816a25ad5e037" }, { "fontloader-util-str.lua", "f9cf43057eb25bbf466821908686fc3d" }, { "fontloader-l-unicode.lua", "f368874f11f3c525de5864fd413e4b24" }, @@ -45,7 +45,7 @@ return { { "fontloader-font-oti.lua", "309a75f9c14b77d87e94eba827dc4e71" }, { "fontloader-font-dsp.lua", "d07a0663bafeb7603c5456639afaf2e8" }, { "fontloader-font-ttf.lua", "ff94e130d7c71edd899c4bae7745b7db" }, - { "fontloader-font-cff.lua", "999da544079698ce70178fd84bcdd67a" }, + { "fontloader-font-cff.lua", "9743312bfa1069f1c1b9f25a3927aa27" }, { "fontloader-font-otr.lua", "2958a21bebcf0579f4e11f0646d1b402" }, { "fontloader-font-vfc.lua", "a81c29eda98cd62cbebdb6c93544b50d" }, { "fontloader-font-map.lua", "b1444428c238a17d2a998ff1a4769183" }, @@ -53,7 +53,7 @@ return { { "fontloader-font-con.lua", "ebdd0ca857deafdc0152c7a4f1ed2490" }, { "fontloader-font-ini.lua", "16b855c98602e4a3e9df39512916a427" }, { "fontloader-data-con.lua", "b4ab51aaeab872d86d827f3e216bf05e" }, - { "fontloader-reference.lua", "23d03b682af6417aa08995f2ec10de22" }, + { "fontloader-reference.lua", "bae1350974c5c5e918c6e0b61ccada28" }, { "fontloader-basics-gen.lua", "a506fcee90c14e628036968f82aa3b56" }, { "luaotfload-glyphlist.lua", "318f90335db5b786ea0454d973ed5460" }, { "luaotfload-characters.lua", "76415ca3ede312cad6e09038323489ae" }, diff --git a/src/fontloader/misc/fontloader-font-cff.lua b/src/fontloader/misc/fontloader-font-cff.lua index c71c3aef..ae8dc80e 100644 --- a/src/fontloader/misc/fontloader-font-cff.lua +++ b/src/fontloader/misc/fontloader-font-cff.lua @@ -1970,7 +1970,7 @@ end local s = p_blend() or 0 i = i + s + 1 -- cff 1: (when cff2 strip them) - elseif t == 1 or t == 3 or t == 18 or operation == 23 then + elseif t == 1 or t == 3 or t == 18 or t == 23 then p_getstem() -- at the start if version == "cff" then -- if true then diff --git a/src/fontloader/runtime/fontloader-reference.lua b/src/fontloader/runtime/fontloader-reference.lua index 8cff7fb9..c0a63126 100644 --- a/src/fontloader/runtime/fontloader-reference.lua +++ b/src/fontloader/runtime/fontloader-reference.lua @@ -14849,7 +14849,7 @@ end elseif t==16 then local s=p_blend() or 0 i=i+s+1 - elseif t==1 or t==3 or t==18 or operation==23 then + elseif t==1 or t==3 or t==18 or t==23 then p_getstem() if version=="cff" then if top>0 then From 695944d22fae17276bdf3390d4d5ea1240c02003 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Tue, 15 Sep 2026 11:18:50 -0700 Subject: [PATCH 2/2] Strip CFF2 hint masks with their stems --- src/auto/fontloader-2023-12-28.lua | 2 +- src/auto/luaotfload-status.lua | 6 +++--- src/fontloader/misc/fontloader-font-cff.lua | 3 +-- src/fontloader/runtime/fontloader-reference.lua | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/auto/fontloader-2023-12-28.lua b/src/auto/fontloader-2023-12-28.lua index 6eb23afb..d0b5bf33 100644 --- a/src/auto/fontloader-2023-12-28.lua +++ b/src/auto/fontloader-2023-12-28.lua @@ -11308,7 +11308,7 @@ end i=i+1 elseif t==19 or t==20 then local s=p_getmask() or 0 - if true then + if version=="cff" then if top>0 then for i=1,top do r=r+1;result[r]=encode[stack[i]] diff --git a/src/auto/luaotfload-status.lua b/src/auto/luaotfload-status.lua index af0c5ff1..b7d24c76 100644 --- a/src/auto/luaotfload-status.lua +++ b/src/auto/luaotfload-status.lua @@ -1,6 +1,6 @@ return { ["hashes"]={ - { "fontloader-2023-12-28.lua", "96efe50efa31e373f9fdd59eabbdf09e" }, + { "fontloader-2023-12-28.lua", "6b94d55c7ad74693d375b7afab0475fc" }, { "fontloader-util-fil.lua", "d0accf4180201efd567816a25ad5e037" }, { "fontloader-util-str.lua", "f9cf43057eb25bbf466821908686fc3d" }, { "fontloader-l-unicode.lua", "f368874f11f3c525de5864fd413e4b24" }, @@ -45,7 +45,7 @@ return { { "fontloader-font-oti.lua", "309a75f9c14b77d87e94eba827dc4e71" }, { "fontloader-font-dsp.lua", "d07a0663bafeb7603c5456639afaf2e8" }, { "fontloader-font-ttf.lua", "ff94e130d7c71edd899c4bae7745b7db" }, - { "fontloader-font-cff.lua", "9743312bfa1069f1c1b9f25a3927aa27" }, + { "fontloader-font-cff.lua", "3bd11ac2d0768dcf642a83aa3e30a717" }, { "fontloader-font-otr.lua", "2958a21bebcf0579f4e11f0646d1b402" }, { "fontloader-font-vfc.lua", "a81c29eda98cd62cbebdb6c93544b50d" }, { "fontloader-font-map.lua", "b1444428c238a17d2a998ff1a4769183" }, @@ -53,7 +53,7 @@ return { { "fontloader-font-con.lua", "ebdd0ca857deafdc0152c7a4f1ed2490" }, { "fontloader-font-ini.lua", "16b855c98602e4a3e9df39512916a427" }, { "fontloader-data-con.lua", "b4ab51aaeab872d86d827f3e216bf05e" }, - { "fontloader-reference.lua", "bae1350974c5c5e918c6e0b61ccada28" }, + { "fontloader-reference.lua", "1385774015c18a39fc0d415b6a0f944e" }, { "fontloader-basics-gen.lua", "a506fcee90c14e628036968f82aa3b56" }, { "luaotfload-glyphlist.lua", "318f90335db5b786ea0454d973ed5460" }, { "luaotfload-characters.lua", "76415ca3ede312cad6e09038323489ae" }, diff --git a/src/fontloader/misc/fontloader-font-cff.lua b/src/fontloader/misc/fontloader-font-cff.lua index ae8dc80e..2d874358 100644 --- a/src/fontloader/misc/fontloader-font-cff.lua +++ b/src/fontloader/misc/fontloader-font-cff.lua @@ -1988,8 +1988,7 @@ end -- cff 1: (when cff2 strip them) elseif t == 19 or t == 20 then local s = p_getmask() or 0 -- after the stems --- if version == "cff" then - if true then + if version == "cff" then if top > 0 then for i=1,top do r = r + 1 ; result[r] = encode[stack[i]] diff --git a/src/fontloader/runtime/fontloader-reference.lua b/src/fontloader/runtime/fontloader-reference.lua index c0a63126..9f4eb3d3 100644 --- a/src/fontloader/runtime/fontloader-reference.lua +++ b/src/fontloader/runtime/fontloader-reference.lua @@ -14865,7 +14865,7 @@ end i=i+1 elseif t==19 or t==20 then local s=p_getmask() or 0 - if true then + if version=="cff" then if top>0 then for i=1,top do r=r+1;result[r]=encode[stack[i]]