View Raw Ebuild
# Copyright 2020-2024 Robert Günzler
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit font unpacker portability
DESCRIPTION="Slender typeface for code, from code"
HOMEPAGE="https://typeof.net/Iosevka/"
MY_PV=$(ver_rs 3 '-' 4 '.')
MY_SRC_URI_base="https://github.com/be5invis/${PN}/releases/download/v${MY_PV}/"
MY_SRC_URI_build() {
local -a comp
# print base uri and first argument (concat without delimiter)
printf %s ${MY_SRC_URI_base} $1
shift 1
# concat rest of arguments with "-" delimiter
comp+=(${@})
comp+=(${MY_PV}.zip)
printf %s ${comp[@]/#/-}
}
S="${WORKDIR}"
LICENSE="OFL-1.1"
SLOT="0"
IUSE="aile curly +default etoile slab ss01 ss02 ss03 ss04 ss05 ss06 ss07 ss08 ss09 ss10 ss11 ss12 ss13 ss14 ss15 ss16 ss17 ss18 ss19 ss20 fixed term unhinted woff2"
FONT_S="${S}"
FONT_SUFFIX="ttf"
RESTRICT="network-sandbox"
src_unpack() {
local -a pkgs
local -a widths
local -a variants
pkgs+=(
"PkgTTF"
$(use unhinted && echo "PkgTTF-Unhinted")
$(use woff2 && echo "PkgWebFont")
$(use woff2 && use unhinted && echo "PkgWebFont-Unhinted")
)
widths+=(
""
$(use fixed && echo "Fixed")
$(use term && echo "Term")
)
variants+=(
$(use default && echo "Iosevka")
$(use slab && echo "IosevkaSlab")
$(use curly && echo "IosevkaCurly")
$(use aile && echo "IosevkaAile")
$(use etoile && echo "IosevkaEtoile")
)
for i in $(seq 1 20)
do
ss_use=$(printf "ss%02d" "$i")
ss_str=$(tr 's' 'S' <<<$ss_use)
variants+=( $(use ${ss_use} && echo "Iosevka${ss_str}") )
done
for variant in "${variants[@]}"
do
for pkg in "${pkgs[@]}"
do
for width in "${widths[@]}"
do
local uri=$(MY_SRC_URI_build $pkg $variant$width)
local filename=${uri##*/}
local archive=${WORKDIR}/${filename}
if [[ ! -f ${archive} ]]; then
wget -O "${archive}" "${uri}" || die "Fetching failed: ${uri}"
fi
# TODO: test checksums against:
# https://github.com/be5invis/Iosevka/blob/v29.0.1/doc/packages-sha.txt?
unpack_zip "${archive}" || die
done
done
done
set +x
}
src_prepare() {
default
if use woff2; then
FONT_SUFFIX+=" woff2"
fi
}