Home | History | Annotate | Download | only in shaping
      1 #!/bin/bash
      2 
      3 dir=`mktemp --directory`
      4 
      5 hb_shape=$1
      6 shift
      7 fontfile=$1
      8 shift
      9 hb_shape="$hb_shape $@"
     10 unicodes=`./hb-unicode-decode`
     11 text=`./hb-unicode-encode "$unicodes"`
     12 glyphs=`echo "$text" | $hb_shape "$fontfile"`
     13 
     14 cp "$fontfile" "$dir/font.ttf"
     15 pyftsubset \
     16 	--glyph-names \
     17 	"$dir/font.ttf" \
     18 	--text="$text"
     19 if ! test -s "$dir/font.ttf.subset"; then
     20 	echo "Subsetter didn't produce nonempty subset font in $dir/font.ttf.subset" >&2
     21 	exit 2
     22 fi
     23 
     24 # Verify that subset font produces same glyphs!
     25 glyphs_subset=`echo "$text" | $hb_shape "$dir/font.ttf.subset"`
     26 
     27 if ! test "x$glyphs" = "x$glyphs_subset"; then
     28 	echo "Subset font produced different glyphs!" >&2
     29 	echo "Perhaps font doesn't have glyph names; checking visually..." >&2
     30 	hb_view=${hb_shape/shape/view}
     31 	echo "$text" | $hb_view "$dir/font.ttf" --output-format=png --output-file="$dir/orig.png"
     32 	echo "$text" | $hb_view "$dir/font.ttf.subset" --output-format=png --output-file="$dir/subset.png"
     33 	if ! cmp "$dir/orig.png" "$dir/subset.png"; then
     34 		echo "Images differ.  Please inspect $dir/*.png." >&2
     35 		echo "$glyphs"
     36 		echo "$glyphs_subset"
     37 		exit 2
     38 	fi
     39 	echo "Yep; all good." >&2
     40 	rm -f "$dir/orig.png"
     41 	rm -f "$dir/subset.png"
     42 	glyphs=$glyphs_subset
     43 fi
     44 
     45 sha1sum=`sha1sum "$dir/font.ttf.subset" | cut -d' ' -f1`
     46 subset="fonts/sha1sum/$sha1sum.ttf"
     47 mv "$dir/font.ttf.subset" "$subset"
     48 
     49 echo "$subset:$unicodes:$glyphs"
     50 
     51 rm -f "$dir/font.ttf"
     52 rmdir "$dir"
     53