Files
Iosevka/otl/gsub-ccmp.ptl
T
Belleve Invis e44d8471e7 Fix substitution of i-ogonek and upper combining marks.
Fix broken cup (`∪`) and cap (`∩`) symbol
Fix Fix broken degree-C and degree-F ligature.
Closes #449, #450.
2020-03-16 21:06:13 -07:00

49 lines
1.8 KiB
Plaintext

import [add-common-feature add-feature add-lookup ChainRuleBuilder] from "./table-util"
define-operator "~>" 880 'right' : syntax-rules
`(@l ~> @r) `{.left @l .right @r}
export : define [buildCCMP sink glyphs markGlyphs] : begin
define ccmp : add-feature sink 'ccmp'
define chain-rule : ChainRuleBuilder sink
define groupTR {}
define groupLF {}
define dotlessFrom {}
define dotlessTo {}
foreach [{gid, g} : pairs-of glyphs] : if (gid.(0) !== ".") : begin
if g.anchors.trailing : groupTR.push gid
if g.anchors.lf : groupLF.push gid
if (g.related && g.related.dotless) : begin
dotlessFrom.push gid
dotlessTo.push g.related.dotless
define [IotaLF] : {'iotaBelow'} ~> {'iotaLF'}
define [OgonekTrailing] : {'ogonekBelow'} ~> {'ogonekTR'}
define lookupCcmp1 : add-lookup sink : object
.type 'gsub_chaining'
.subtables : list
chain-rule (dotlessFrom ~> dotlessTo) (markGlyphs.above ~> null)
chain-rule groupLF [IotaLF]
chain-rule groupLF markGlyphs.all [IotaLF]
chain-rule groupLF markGlyphs.all markGlyphs.all [IotaLF]
chain-rule groupLF markGlyphs.all markGlyphs.all markGlyphs.all [IotaLF]
chain-rule groupTR [OgonekTrailing]
chain-rule groupTR markGlyphs.all [OgonekTrailing]
chain-rule groupTR markGlyphs.all markGlyphs.all [OgonekTrailing]
chain-rule groupTR markGlyphs.all markGlyphs.all markGlyphs.all [OgonekTrailing]
define lookupCcmp2 : add-lookup sink : object
.type 'gsub_ligature'
.subtables : list : object
psilivaria {'commaAbove' 'graveAbove'}
psilioxia {'commaAbove' 'acuteAbove'}
psiliperispomeni {'commaAbove' 'perispomeniAbove'}
dasiavaria {'revCommaAbove' 'graveAbove'}
dasiaoxia {'revCommaAbove' 'acuteAbove'}
dasiaperispomeni {'revCommaAbove' 'perispomeniAbove'}
ccmp.lookups.push lookupCcmp1 lookupCcmp2
add-common-feature sink ccmp