Dear gang, For \addfeature and the like, a virtual font feature defined in terms of a CLD local function behaves differently from other font features. MWE: ============== \startluacode local function squeeze(tfmdata) for k, v in next, tfmdata.characters do v.width = 1.75 * (v.height or 0) v.depth = 1.75 * (v.depth or 0) end end local specification = { name = "sqtfm", description = "test", manipulators = { base = squeeze, node = squeeze, } } fonts.handlers.otf.features.register(specification) \stopluacode \definefontfeature[forceno] [mode=node, script=latn] \definefontfeature[forceyes] [mode=node, script=latn, smcp=force, sqtfm=force] % smcp=yes, % sqtfm=yes] \showglyphs \startTEXpage[offset=1em] \definedfont[texgyretermes-regular*forceyes] % \definedfont[texgyretermes-regular*forceno] % \addfeature{forceyes} abcdefg \stopTEXpage ============== You may toggle these lines: \definedfont[texgyretermes-regular*forceyes] % \definedfont[texgyretermes-regular*forceno] % \addfeature{forceyes} With \definedfont[texgyretermes-regular*forceyes] active we get the expected result: small caps plus some negative squeeze (= spread in this case). With \definedfont[texgyretermes-regular*forceno] \addfeature{forceyes} active we get an *unexpected* result: small caps but no negative squeeze. (Similar results occur if we toggle the "=force" lines with the "=yes" lines, but the larger project of which this is the MWE uses the force key.) Clue: A CLD with a feature defined via fonts.handlers.otf.addfeature doesn't seem to have this problem: ============== \startluacode local function squeeze(tfmdata) for k, v in next, tfmdata.characters do v.width = 1.75 * (v.height or 0) v.depth = 1.75 * (v.depth or 0) end end local specification = { name = "sqtfm", description = "test", manipulators = { base = squeeze, node = squeeze, } } fonts.handlers.otf.features.register(specification) fonts.handlers.otf.addfeature { name = "stest", type = "substitution", data = { a = "X", b = "P", } } \stopluacode \definefontfeature[forceno] [mode=node, script=latn] \definefontfeature[forceyes] [mode=node, script=latn, % % smcp=force, sqtfm=force, stest=force] % % smcp=yes, % sqtfm=yes, % stest=yes] \showglyphs \startTEXpage[offset=1em] \definedfont[texgyretermes-regular*forceyes] % \definedfont[texgyretermes-regular*forceno] % \addfeature{forceyes} abcdefg \stopTEXpage ============== So only the local-function feature appears to exhibit this inconsistency. What is the explanation for this inconsistent behavior? Is there a way to get the expected result for \addfeature etc.? Thank you in advance. Best wishes Idris -- Professor Idris Samawi Hamid Department of Philosophy Colorado State University Fort Collins, CO 80523