# Programming ligations
lookup arrowStickFR  { sub [hyphen equal] by [lighy.fr  ligeq.fr];  } arrowStickFR;
lookup arrowStickLF  { sub [hyphen equal] by [lighy.lf  ligeq.lf];  } arrowStickLF;
lookup arrowStickFR1 { sub [hyphen equal] by [lighy.fr1 ligeq.fr1]; } arrowStickFR1;
lookup arrowStickL1F { sub [hyphen equal] by [lighy.l1f ligeq.l1f]; } arrowStickL1F;
lookup arrowStickCR  { sub [hyphen equal] by [lighy.cr  ligeq.cr];  } arrowStickCR;
lookup arrowStickLC  { sub [hyphen equal] by [lighy.lc  ligeq.lc];  } arrowStickLC;
lookup arrowStickLXC { sub [hyphen equal] by [lighy.lxc ligeq.lxc]; } arrowStickLXC;
lookup arrowStickCF  { sub [hyphen equal] by [lighy.cf  ligeq.cf];  } arrowStickCF;
lookup arrowStickFC  { sub [hyphen equal] by [lighy.fc  ligeq.fc];  } arrowStickFC;
lookup arrowStickJF  { sub [hyphen equal] by [lighy.jf  ligeq.jf];  } arrowStickJF;
lookup arrowStickFJ  { sub [hyphen equal] by [lighy.fj  ligeq.fj];  } arrowStickFJ;
lookup arrowStickJ1F { sub [hyphen equal] by [lighy.j1f ligeq.j1f]; } arrowStickJ1F;
lookup arrowStickFJ1 { sub [hyphen equal] by [lighy.fj1 ligeq.fj1]; } arrowStickFJ1;
lookup arrowStickJR  { sub [hyphen equal] by [lighy.jr  ligeq.jr];  } arrowStickJR;
lookup arrowStickLJ  { sub [hyphen equal] by [lighy.lj  ligeq.lj];  } arrowStickLJ;
lookup arrowStickLR  { sub [hyphen equal] by [lighy.lr  ligeq.lr];  } arrowStickLR;

lookup lessShift1 { sub less by ligless.shift1; } lessShift1;
lookup greaterShift1 { sub greater by liggreater.shift1; } greaterShift1;
lookup lessShiftN1 { sub less by ligless.shiftN1; } lessShiftN1;
lookup greaterShiftN1 { sub greater by liggreater.shiftN1; } greaterShiftN1;
lookup arrowExclamHTMLComment { sub exclam by ligexclam.htmlcommentstart; } arrowExclamHTMLComment;

@arrowstick = [hyphen equal];
lookup caltArrow1 {
	# Arrows, sub
	sub less @arrowstick' lookup arrowStickLC @arrowstick' lookup arrowStickCR greater; # <-->, <==>
	sub less @arrowstick' lookup arrowStickLR greater; # <->, <=>
	sub less @arrowstick' lookup arrowStickLJ less; # <-<, <=<
	sub less @arrowstick' lookup arrowStickLC @arrowstick' lookup arrowStickCF; # <--, <==
	sub less less' lookup lessShift1 @arrowstick' lookup arrowStickL1F; # <<-, <<=
	sub less hyphen' lookup arrowStickLF; # <-
	sub less exclam' lookup arrowExclamHTMLComment hyphen' lookup arrowStickLXC hyphen' lookup arrowStickCF; # <!--
	sub greater greater' lookup greaterShiftN1 @arrowstick' lookup arrowStickJ1F; # >>-, >>=
	sub greater @arrowstick' lookup arrowStickJR greater; # >->, >=>
	sub greater [hyphen]' lookup arrowStickJF; # >-
	sub @arrowstick' lookup arrowStickFC @arrowstick' lookup arrowStickCR greater; # -->, ==>
	sub @arrowstick' lookup arrowStickFR1 greater' lookup greaterShift1 greater; # ->>, =>>
	sub @arrowstick' lookup arrowStickFR greater; # ->, =>
	sub @arrowstick' lookup arrowStickFJ1 less' lookup lessShiftN1 less; # -<<, =<<
	sub @arrowstick' lookup arrowStickFJ less; # -<, =<
} caltArrow1;

feature calt {
	script latn;
		language dflt;
		lookup caltArrow1;
	script grek;
		language dflt;
		lookup caltArrow1;
	script cyrl;
		language dflt;
		lookup caltArrow1;
	script DFLT;
		language dflt;
		lookup caltArrow1;
} calt;