#!/bin/sh
# Build the mathbb-one fonts: the "1" of bbm5, bbm7 and bbm10, traced to Type 1
# outlines, plus their TFM files and the map file, and an OpenType mathbb-one.otf
# (the 10pt 1 at U+1D7D9) for unicode-math users.
# Usage: build.sh OUTDIR   (OUTDIR must not contain spaces; Metafont can't read them)
set -e
TOOLS=$(cd "$(dirname "$0")" && pwd)
OUT=$1
mkdir -p "$OUT/pfb" "$OUT/tfm" "$OUT/otf" "$OUT/build"
: > "$OUT/mathbb-one.map"
cd "$OUT/build"
for size in 5 7 10; do
  src=bbm$size
  name=mathbb-one$size
  # Metrics: the TFM Metafont writes is the same at any resolution.
  mf-nowin "\\mode=ljfour; mag:=1; nonstopmode; input $src" > /dev/null
  cp "$src.tfm" "$OUT/tfm/$name.tfm"
  # ~2000 px per design size before tracing.
  mag=$(echo "scale=4; 2000 * 72.27 / $size / 600" | bc)
  mf-nowin "\\mode=ljfour; mag:=$mag; nonstopmode; input $src" > /dev/null
  hi=$(ls "$src".*gf | grep -v '\.600gf$')
  gftopk "$hi" "$src.pk" > /dev/null
  python3 -I "$TOOLS/pk2pbm.py" "$src.pk" "g_$src"
  potrace -b eps -c -q -o "g_$src/49.eps" "g_$src/49.pbm"
  fontforge -quiet -lang=py -script "$TOOLS/build_t1.py" "g_$src" "$name" "$OUT/pfb/$name.pfb" 2>&1 | grep -v pkg_resources
  echo "$name $(echo $name | tr a-z A-Z) <$name.pfb" >> "$OUT/mathbb-one.map"
done
fontforge -quiet -lang=py -script "$TOOLS/build_otf.py" "$OUT/pfb/mathbb-one10.pfb" "$OUT/otf/mathbb-one.otf" 2>&1 | grep -v pkg_resources
