diff --git a/Dockerfile b/Dockerfile index 17e06fcff..4bf1899b6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,7 @@ LABEL org.opencontainers.image.title="Nerd Fonts Patcher" \ org.opencontainers.image.source="https://github.com/ryanoasis/nerd-fonts" \ org.opencontainers.image.licenses="MIT" -RUN apk update && apk upgrade && apk add --no-cache fontforge --repository=https://dl-cdn.alpinelinux.org/alpine/latest-stable/community +RUN apk update && apk upgrade && apk add --no-cache fontforge parallel --repository=https://dl-cdn.alpinelinux.org/alpine/latest-stable/community ENV PYTHONIOENCODING=utf-8 diff --git a/bin/scripts/docker-entrypoint.sh b/bin/scripts/docker-entrypoint.sh index 42950d085..acd931aa2 100644 --- a/bin/scripts/docker-entrypoint.sh +++ b/bin/scripts/docker-entrypoint.sh @@ -23,6 +23,16 @@ done printf "Running with options:\n%s\n" "$args" # shellcheck disable=SC2086 -for f in /in/*.otf /in/*.ttf /in/*.woff /in/*.eot /in/*.ttc; do [ -f "$f" ] && fontforge -script /nerd/font-patcher -out /out $args "$f"; done +if [ "$PN" -eq 1 ]; then + find /in -type f \ + \( -iname '*.otf' -o -iname '*.ttf' -o -iname '*.woff' -o -iname '*.eot' -o -iname '*.ttc' \) \ + -exec fontforge -script /nerd/font-patcher -out /out $args {} \; +else + njob="" + [ "$PN" -gt 1 ] && njob="-j $PN" + find /in -type f \ + \( -iname '*.otf' -o -iname '*.ttf' -o -iname '*.woff' -o -iname '*.eot' -o -iname '*.ttc' \) \ + | parallel $njob fontforge -script /nerd/font-patcher -out /out $args {} +fi exit 0 diff --git a/readme.md b/readme.md index 1ad892d20..62098524b 100644 --- a/readme.md +++ b/readme.md @@ -365,9 +365,19 @@ Patching the font of your own choosing: ``` * Use docker + * Default parallel tasks ``` docker run --rm -v /path/to/fonts:/in:Z -v /path/for/output:/out:Z nerdfonts/patcher [OPTIONS] ``` + * Single process (slow) + ``` + docker run --rm -v /path/to/fonts:/in:Z -v /path/for/output:/out:Z -e "PN=1" nerdfonts/patcher [OPTIONS] + ``` + * Specify the parallel tasks number to 10 + ``` + docker run --rm -v /path/to/fonts:/in:Z -v /path/for/output:/out:Z -e "PN=10" nerdfonts/patcher [OPTIONS] + ``` + > [!NOTE] > The resulting font's family (aka font name) will be set to the original family after CamelCasing, removing whitespace and appending ` Nerd Font`. For example, `iosevka term` would become `IosevkaTerm Nerd Font`.