utf8proc

A clean C library for processing UTF-8 Unicode data
git clone https://git.sinitax.com/juliastrings/utf8proc
Log | Files | Refs | README | LICENSE | sfeed.txt

commit f35e18e4b5300226891e4288d9dba6fc0f737851
parent 9b7184ec56c49fd69082280d230bb85a3e486427
Author: Peter Colberg <peter@colberg.org>
Date:   Thu, 29 Oct 2015 19:48:49 -0400

Generate fontforge font files in makefile

Revise the script to directly read fontforge font files, which are
generated in the makefile. This permits overriding the fontforge path
during the build, and executing fontforge in parallel with make -j.

Avoid duplicating download URLs in the script, which ensures that the
script itself works without network access, e.g., when downloading the
data files on a developer machine with network access and executing the
script on a build machine without network access.

Diffstat:
Mdata/Makefile | 12++++++++----
Mdata/charwidths.jl | 11++---------
2 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/data/Makefile b/data/Makefile @@ -9,6 +9,7 @@ RUBY=ruby PERL=perl MAKE=make JULIA=julia +FONTFORGE=fontforge CURLFLAGS = --retry 5 --location # use JuliaLang caching (https://github.com/staticfloat/cache.julialang.org) @@ -25,14 +26,17 @@ utf8proc_data.c.new: data_generator.rb UnicodeData.txt GraphemeBreakProperty.txt # GNU Unifont version for font metric calculations: UNIFONT_VERSION=8.0.01 -unifont-$(UNIFONT_VERSION).ttf: +unifont.ttf: $(CURL) $(CURLFLAGS) -o $@ $(URLCACHE)http://unifoundry.com/pub/unifont-$(UNIFONT_VERSION)/font-builds/unifont-$(UNIFONT_VERSION).ttf -unifont_upper-$(UNIFONT_VERSION).ttf: +unifont_upper.ttf: $(CURL) $(CURLFLAGS) -o $@ $(URLCACHE)http://unifoundry.com/pub/unifont-$(UNIFONT_VERSION)/font-builds/unifont_upper-$(UNIFONT_VERSION).ttf -CharWidths.txt: charwidths.jl unifont-$(UNIFONT_VERSION).ttf unifont_upper-$(UNIFONT_VERSION).ttf EastAsianWidth.txt - UNIFONT_VERSION=$(UNIFONT_VERSION) $(JULIA) charwidths.jl > $@ +%.sfd: %.ttf + $(FONTFORGE) -lang=ff -c "Open(\"$<\");Save(\"$@\");Quit(0);" + +CharWidths.txt: charwidths.jl unifont.sfd unifont_upper.sfd EastAsianWidth.txt + $(JULIA) charwidths.jl > $@ UnicodeData.txt: $(CURL) $(CURLFLAGS) -o $@ -O $(URLCACHE)http://www.unicode.org/Public/UNIDATA/UnicodeData.txt diff --git a/data/charwidths.jl b/data/charwidths.jl @@ -51,12 +51,6 @@ end ############################################################################# # Widths from GNU Unifont -universion=get(ENV, "UNIFONT_VERSION", "7.0.06") -for fontfile in ["unifont-$universion", "unifont_upper-$universion"] - isfile("$fontfile.ttf") || download("http://unifoundry.com/pub/unifont-$universion/font-builds/$fontfile.ttf", "$fontfile.ttf") - isfile("$fontfile.sfd") || run(`fontforge -lang=ff -c "Open(\"$fontfile.ttf\");Save(\"$fontfile.sfd\");Quit(0);"`) -end - #Read sfdfile for character widths function parsesfd(filename::String, CharWidths::Dict{Int,Int}=Dict{Int,Int}()) state=:seekchar @@ -87,15 +81,14 @@ function parsesfd(filename::String, CharWidths::Dict{Int,Int}=Dict{Int,Int}()) end CharWidths end -CharWidths=parsesfd("unifont-$universion.sfd", CharWidths) -CharWidths=parsesfd("unifont_upper-$universion.sfd", CharWidths) +CharWidths=parsesfd("unifont.sfd", CharWidths) +CharWidths=parsesfd("unifont_upper.sfd", CharWidths) ############################################################################# # Widths from UAX #11: East Asian Width # .. these take precedence over the Unifont width for all codepoints # listed explicitly as wide/full/narrow/half-width -isfile("EastAsianWidth.txt") || download("http://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt", "EastAsianWidth.txt") for line in readlines(open("EastAsianWidth.txt")) #Strip comments line[1] == '#' && continue