#!/usr/bin/env bash

# curl https://raw.githubusercontent.com/notofonts/notofonts.github.io/main/fonts/NotoSansMath/unhinted/otf/NotoSansMath-Regular.otf -o NotoSansMath-Regular.otf
sub() {
	local seq=$(sed "s/./&' /g; s/\./period/g" <<< "$1")
	[[ $1 == .* ]] || echo "	ignore sub @word $seq;"
	echo "	ignore sub $seq @word;"
	echo "	sub $seq by $2;"
}
SOURCE_DATE_EPOCH=0 fonttools feaLib -o NotoSansMath-Ligatures-Regular.otf /dev/stdin NotoSansMath-Regular.otf <<EOF

table name {
	nameid 1 "Noto Sans Math with ligatures";
	nameid 3 "3.000;GOOG;NotoSansMath-Ligatures-Regular";
	nameid 4 "Noto Sans Math with ligatures Regular";
	nameid 6 "NotoSansMath-Ligatures-Regular";
} name;

feature liga {
	sub equal equal by equivalence;        # ==  -> ≡
	sub equal equal equal by uni2263;      # === -> ≣
	sub exclam equal by notequal;          # !=  -> ≠
	sub exclam equal equal by uni2262;     # !== -> ≢
	sub equal greater by uni21A6;          # =>  -> ↦
	sub less equal by lessequal;           # <=  -> ≤
	sub greater equal by greaterequal;     # >=  -> ≥
	sub ampersand ampersand by logicaland; # &&  -> ∧
	sub bar bar by logicalor;              # ||  -> ∨
} liga;

@word = [a-z A-Z];
feature calt {
$(sub function lambda)           # λ
$(sub return arrowup)            # ↑
$(sub export arrowdblup)         # ⇑
$(sub let filledbox)             # ■
$(sub const uni25A1)             # □
$(sub var uni25A3)               # ▣
$(sub for universal)             # ∀
$(sub while uni27F3)             # ⟳
$(sub document lozenge)          # ◊
$(sub .querySelectorAll uni27EB) # ⟫
$(sub .querySelector uni27E9)    # ⟩
$(sub .addEventListener uni22B7) # ⊷
$(sub addEventListener uni29DF)  # ⧟
} calt;

EOF
