Author: tilman Revision: 1938040 Property Name: svn:log Action: modified Property diff: --- old property value +++ new property value @@ -1 +1,22 @@ -PDFBOX-6251: don't override CID mappings by inherited maps, by Patrick Corless; closes #515 \ No newline at end of file +PDFBOX-6251: don't override CID mappings by inherited maps, by Patrick Corless and Claude Opus 5; closes #515 + +A CMap that starts with usecmap may redefine any code it inherits, but useCmap +merged the used CMap's cidchar/cidrange mappings into the same collections as the +importing CMap's own. usecmap is read from the header, so the used CMap's mappings +landed there first, and since toCID scans the range list first-match, an inherited +range beat the mapping the CMap declared for the same code. + +ETenms-B5-H exists only to do such an override: it uses ETen-B5-H and remaps +0x20-0x7E to the proportional latin CIDs 1-95, yet toCID(0x41, 1) answered 13681, +the fullwidth form, instead of 34. 31 of the 92 bundled predefined CMaps declare +mappings on top of a usecmap and all 31 were affected; 29 of them are the -V +variants, whose own mappings select the vertical glyph forms. + +Keep the used CMap as a reference instead of copying its cid mappings, and ask it +only for codes this CMap does not map itself. Precedence then follows the usecmap +chain nearest-first at every level, so it also holds for nesting deeper than two +levels and for a CMap carrying more than one usecmap. hasCIDMappings has to take +the used CMaps into account, Identity-V declaring no cid mappings of its own. + +Co-Authored-By: Claude Opus 5 <[email protected]> +Claude-Session: https://claude.ai/code/session_014khhepY6XDZVnwu9by9rMo \ No newline at end of file
