patches ufo2ft and drops python 2 env for OTF compilation
This commit is contained in:
parent
f15b156c4d
commit
dee86b504c
6 changed files with 51 additions and 108 deletions
58
Makefile
58
Makefile
|
|
@ -96,72 +96,28 @@ all_ufo_masters = $(Thin_ufo_d) \
|
||||||
$(FONTDIR)/var/%.var.ttf: src/%.designspace $(all_ufo_masters)
|
$(FONTDIR)/var/%.var.ttf: src/%.designspace $(all_ufo_masters)
|
||||||
misc/fontbuild compile-var -o $@ $<
|
misc/fontbuild compile-var -o $@ $<
|
||||||
|
|
||||||
|
$(FONTDIR)/const/Inter-UI-Thin.%: src/Inter-UI.designspace $(Thin_ufo_d)
|
||||||
# ---------- begin workaround for issue #110 -----------
|
|
||||||
|
|
||||||
# $(FONTDIR)/const/Inter-UI-Thin.%: src/Inter-UI.designspace $(Thin_ufo_d)
|
|
||||||
# misc/fontbuild compile -o $@ src/Inter-UI-Thin.ufo
|
|
||||||
|
|
||||||
# $(FONTDIR)/const/Inter-UI-ThinItalic.%: src/Inter-UI.designspace $(ThinItalic_ufo_d)
|
|
||||||
# misc/fontbuild compile -o $@ src/Inter-UI-ThinItalic.ufo
|
|
||||||
|
|
||||||
# $(FONTDIR)/const/Inter-UI-Regular.%: src/Inter-UI.designspace $(Regular_ufo_d)
|
|
||||||
# misc/fontbuild compile -o $@ src/Inter-UI-Regular.ufo
|
|
||||||
|
|
||||||
# $(FONTDIR)/const/Inter-UI-Italic.%: src/Inter-UI.designspace $(Italic_ufo_d)
|
|
||||||
# misc/fontbuild compile -o $@ src/Inter-UI-Italic.ufo
|
|
||||||
|
|
||||||
# $(FONTDIR)/const/Inter-UI-Black.%: src/Inter-UI.designspace $(Black_ufo_d)
|
|
||||||
# misc/fontbuild compile -o $@ src/Inter-UI-Black.ufo
|
|
||||||
|
|
||||||
# $(FONTDIR)/const/Inter-UI-BlackItalic.%: src/Inter-UI.designspace $(BlackItalic_ufo_d)
|
|
||||||
# misc/fontbuild compile -o $@ src/Inter-UI-BlackItalic.ufo
|
|
||||||
|
|
||||||
|
|
||||||
$(FONTDIR)/const/Inter-UI-Thin.ttf: src/Inter-UI.designspace $(Thin_ufo_d)
|
|
||||||
misc/fontbuild compile -o $@ src/Inter-UI-Thin.ufo
|
misc/fontbuild compile -o $@ src/Inter-UI-Thin.ufo
|
||||||
|
|
||||||
$(FONTDIR)/const/Inter-UI-ThinItalic.ttf: src/Inter-UI.designspace $(ThinItalic_ufo_d)
|
$(FONTDIR)/const/Inter-UI-ThinItalic.%: src/Inter-UI.designspace $(ThinItalic_ufo_d)
|
||||||
misc/fontbuild compile -o $@ src/Inter-UI-ThinItalic.ufo
|
misc/fontbuild compile -o $@ src/Inter-UI-ThinItalic.ufo
|
||||||
|
|
||||||
$(FONTDIR)/const/Inter-UI-Regular.ttf: src/Inter-UI.designspace $(Regular_ufo_d)
|
$(FONTDIR)/const/Inter-UI-Regular.%: src/Inter-UI.designspace $(Regular_ufo_d)
|
||||||
misc/fontbuild compile -o $@ src/Inter-UI-Regular.ufo
|
misc/fontbuild compile -o $@ src/Inter-UI-Regular.ufo
|
||||||
|
|
||||||
$(FONTDIR)/const/Inter-UI-Italic.ttf: src/Inter-UI.designspace $(Italic_ufo_d)
|
$(FONTDIR)/const/Inter-UI-Italic.%: src/Inter-UI.designspace $(Italic_ufo_d)
|
||||||
misc/fontbuild compile -o $@ src/Inter-UI-Italic.ufo
|
misc/fontbuild compile -o $@ src/Inter-UI-Italic.ufo
|
||||||
|
|
||||||
$(FONTDIR)/const/Inter-UI-Black.ttf: src/Inter-UI.designspace $(Black_ufo_d)
|
$(FONTDIR)/const/Inter-UI-Black.%: src/Inter-UI.designspace $(Black_ufo_d)
|
||||||
misc/fontbuild compile -o $@ src/Inter-UI-Black.ufo
|
misc/fontbuild compile -o $@ src/Inter-UI-Black.ufo
|
||||||
|
|
||||||
$(FONTDIR)/const/Inter-UI-BlackItalic.ttf: src/Inter-UI.designspace $(BlackItalic_ufo_d)
|
$(FONTDIR)/const/Inter-UI-BlackItalic.%: src/Inter-UI.designspace $(BlackItalic_ufo_d)
|
||||||
misc/fontbuild compile -o $@ src/Inter-UI-BlackItalic.ufo
|
misc/fontbuild compile -o $@ src/Inter-UI-BlackItalic.ufo
|
||||||
|
|
||||||
|
|
||||||
$(FONTDIR)/const/Inter-UI-Thin.otf: src/Inter-UI.designspace $(Thin_ufo_d)
|
|
||||||
misc/fontbuild2 compile -o $@ src/Inter-UI-Thin.ufo
|
|
||||||
|
|
||||||
$(FONTDIR)/const/Inter-UI-ThinItalic.otf: src/Inter-UI.designspace $(ThinItalic_ufo_d)
|
|
||||||
misc/fontbuild2 compile -o $@ src/Inter-UI-ThinItalic.ufo
|
|
||||||
|
|
||||||
$(FONTDIR)/const/Inter-UI-Regular.otf: src/Inter-UI.designspace $(Regular_ufo_d)
|
|
||||||
misc/fontbuild2 compile -o $@ src/Inter-UI-Regular.ufo
|
|
||||||
|
|
||||||
$(FONTDIR)/const/Inter-UI-Italic.otf: src/Inter-UI.designspace $(Italic_ufo_d)
|
|
||||||
misc/fontbuild2 compile -o $@ src/Inter-UI-Italic.ufo
|
|
||||||
|
|
||||||
$(FONTDIR)/const/Inter-UI-Black.otf: src/Inter-UI.designspace $(Black_ufo_d)
|
|
||||||
misc/fontbuild2 compile -o $@ src/Inter-UI-Black.ufo
|
|
||||||
|
|
||||||
$(FONTDIR)/const/Inter-UI-BlackItalic.otf: src/Inter-UI.designspace $(BlackItalic_ufo_d)
|
|
||||||
misc/fontbuild2 compile -o $@ src/Inter-UI-BlackItalic.ufo
|
|
||||||
|
|
||||||
# ---------- end workaround for issue #110 -----------
|
|
||||||
|
|
||||||
|
|
||||||
# Instance UFO -> OTF, TTF
|
# Instance UFO -> OTF, TTF
|
||||||
|
|
||||||
$(FONTDIR)/const/Inter-UI-%.otf: build/ufo/Inter-UI-%.ufo
|
$(FONTDIR)/const/Inter-UI-%.otf: build/ufo/Inter-UI-%.ufo
|
||||||
misc/fontbuild2 compile -o $@ $<
|
misc/fontbuild compile -o $@ $<
|
||||||
|
|
||||||
$(FONTDIR)/const/Inter-UI-%.ttf: build/ufo/Inter-UI-%.ufo
|
$(FONTDIR)/const/Inter-UI-%.ttf: build/ufo/Inter-UI-%.ufo
|
||||||
misc/fontbuild compile -o $@ $<
|
misc/fontbuild compile -o $@ $<
|
||||||
|
|
|
||||||
49
init.sh
49
init.sh
|
|
@ -108,31 +108,11 @@ else
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# --------------------
|
|
||||||
# ISSUE #110 (bug in ufo2ft) requires Python 2 for OTF CFF compilation
|
|
||||||
# See also: https://github.com/googlei18n/ufo2ft/issues/306
|
|
||||||
PYTHON2=
|
|
||||||
if (which python2 >/dev/null); then
|
|
||||||
PYTHON2=$(which python2)
|
|
||||||
elif (which python >/dev/null) && (python --version | grep -q 'ython 2'); then
|
|
||||||
PYTHON2=$(which python)
|
|
||||||
else
|
|
||||||
echo "Unable to find Python 2 (tried python2 and python)." >&2
|
|
||||||
echo "Python 2 is required to compile OTF files because of a Python-3 bug in a third-party library." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
# ln -svf "$PYTHON2" "$VENV_DIR/bin/python2"
|
|
||||||
VENV2_DIR=$BUILD_DIR/venv2
|
|
||||||
if [[ ! -d "$VENV2_DIR/bin" ]]; then
|
|
||||||
require_virtualenv
|
|
||||||
$virtualenv "--python=$PYTHON2" "$VENV2_DIR"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# ——————————————————————————————————————————————————————————————————
|
# ——————————————————————————————————————————————————————————————————
|
||||||
# check pip requirements
|
# python dependencies
|
||||||
|
|
||||||
|
# install if deps changed
|
||||||
# primary env
|
|
||||||
REQUIREMENTS_FILE=$SRCDIR/requirements.txt
|
REQUIREMENTS_FILE=$SRCDIR/requirements.txt
|
||||||
UPDATE_TIMESTAMP_FILE="$VENV_DIR/last-pip-run.mark"
|
UPDATE_TIMESTAMP_FILE="$VENV_DIR/last-pip-run.mark"
|
||||||
if [ "$REQUIREMENTS_FILE" -nt "$UPDATE_TIMESTAMP_FILE" ]; then
|
if [ "$REQUIREMENTS_FILE" -nt "$UPDATE_TIMESTAMP_FILE" ]; then
|
||||||
|
|
@ -141,21 +121,24 @@ else
|
||||||
date '+%s' > "$UPDATE_TIMESTAMP_FILE"
|
date '+%s' > "$UPDATE_TIMESTAMP_FILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# secondary env (Python 2)
|
# patch ufo2ft [BUG #110]
|
||||||
REQUIREMENTS2_FILE=$SRCDIR/requirements2.txt
|
P1_FILE="$VENV_DIR/lib/python/site-packages/ufo2ft/outlineCompiler.py"
|
||||||
UPDATE_TIMESTAMP2_FILE="$VENV2_DIR/last-pip-run.mark"
|
P1_BACKUP="$P1_FILE.orig"
|
||||||
if [ "$REQUIREMENTS2_FILE" -nt "$UPDATE_TIMESTAMP2_FILE" ]; then
|
if [[ ! -f "$P1_BACKUP" ]]; then
|
||||||
echo "$VENV2_DIR/bin/pip install -r $REQUIREMENTS2_FILE"
|
echo "Patching $P1_FILE (backup at $P1_BACKUP)"
|
||||||
"$VENV2_DIR/bin/pip" install -r "$REQUIREMENTS2_FILE"
|
mv "$P1_FILE" "$P1_BACKUP"
|
||||||
date '+%s' > "$UPDATE_TIMESTAMP2_FILE"
|
patch "$P1_BACKUP" -o "$P1_FILE" -u -i misc/ufo2ft-2.5.0-outlineCompiler.patch
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ——————————————————————————————————————————————————————————————————
|
|
||||||
# active primary env (Python 3)
|
|
||||||
source "$VENV_DIR/bin/activate"
|
|
||||||
|
|
||||||
# ——————————————————————————————————————————————————————————————————
|
# ——————————————————————————————————————————————————————————————————
|
||||||
# deps
|
# activate env (for rest of this script)
|
||||||
|
source "$VENV_DIR/bin/activate"
|
||||||
|
|
||||||
|
|
||||||
|
# ——————————————————————————————————————————————————————————————————
|
||||||
|
# other toolchain dependencies
|
||||||
|
|
||||||
DEPS_DIR=$BUILD_DIR/deps
|
DEPS_DIR=$BUILD_DIR/deps
|
||||||
PATCH_DIR=$(pwd)/misc/patches
|
PATCH_DIR=$(pwd)/misc/patches
|
||||||
mkdir -p "$DEPS_DIR"
|
mkdir -p "$DEPS_DIR"
|
||||||
|
|
|
||||||
|
|
@ -197,7 +197,16 @@ def setFontInfo(font, weight):
|
||||||
#
|
#
|
||||||
family = font.info.familyName # i.e. "Inter UI"
|
family = font.info.familyName # i.e. "Inter UI"
|
||||||
style = font.info.styleName # e.g. "Medium Italic"
|
style = font.info.styleName # e.g. "Medium Italic"
|
||||||
isitalic = font.info.italicAngle != 0
|
|
||||||
|
# Patch italicAngle to be either positive zero or single-decimal precision
|
||||||
|
# floating-point number.
|
||||||
|
# This value can go wrong since we are using floating-point numbers.
|
||||||
|
isitalic = False
|
||||||
|
if font.info.italicAngle != 0:
|
||||||
|
isitalic = True
|
||||||
|
font.info.italicAngle = round(font.info.italicAngle, 1)
|
||||||
|
else:
|
||||||
|
font.info.italicAngle = 0
|
||||||
|
|
||||||
# weight
|
# weight
|
||||||
font.info.openTypeOS2WeightClass = weight
|
font.info.openTypeOS2WeightClass = weight
|
||||||
|
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
pushd "$(dirname "$0")/.." >/dev/null
|
|
||||||
SRCDIR=$(PWD)
|
|
||||||
popd >/dev/null
|
|
||||||
|
|
||||||
"$SRCDIR/build/venv2/bin/python" misc/fontbuild "$@"
|
|
||||||
18
misc/ufo2ft-2.5.0-outlineCompiler.patch
Normal file
18
misc/ufo2ft-2.5.0-outlineCompiler.patch
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
--- a/ufo2ft/outlineCompiler.py
|
||||||
|
+++ b/ufo2ft/outlineCompiler.py
|
||||||
|
@@ -983,7 +983,14 @@
|
||||||
|
topDict.UnderlineThickness = otRound(underlineThickness)
|
||||||
|
# populate font matrix
|
||||||
|
unitsPerEm = otRound(getAttrWithFallback(info, "unitsPerEm"))
|
||||||
|
- topDict.FontMatrix = [1.0 / unitsPerEm, 0, 0, 1.0 / unitsPerEm, 0, 0]
|
||||||
|
+ topDict.FontMatrix = [
|
||||||
|
+ round(1.0 / unitsPerEm, 14),
|
||||||
|
+ 0,
|
||||||
|
+ 0,
|
||||||
|
+ round(1.0 / unitsPerEm, 14),
|
||||||
|
+ 0,
|
||||||
|
+ 0
|
||||||
|
+ ]
|
||||||
|
# populate the width values
|
||||||
|
if not any(hasattr(info, attr) and getattr(info, attr) is not None
|
||||||
|
for attr in ("postscriptDefaultWidthX",
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
# for secondry env (Python 2)
|
|
||||||
# should match requirements.txt except from the "Python 2 specific" section.
|
|
||||||
|
|
||||||
glyphsLib==3.1.4
|
|
||||||
skia-pathops==0.2.0.post2
|
|
||||||
fontmake==1.8.0
|
|
||||||
fs==2.2.0
|
|
||||||
|
|
||||||
# for fontTools/varLib/interpolatable.py
|
|
||||||
numpy==1.15.4
|
|
||||||
scipy==1.2.0
|
|
||||||
munkres==1.0.12
|
|
||||||
|
|
||||||
# Python 2 specific
|
|
||||||
enum34==1.1.6
|
|
||||||
typing==3.6.6
|
|
||||||
backports.os==0.1.1
|
|
||||||
Reference in a new issue