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.
This commit is contained in:
parent
9b7184ec56
commit
f35e18e4b5
@ -9,6 +9,7 @@ RUBY=ruby
|
|||||||
PERL=perl
|
PERL=perl
|
||||||
MAKE=make
|
MAKE=make
|
||||||
JULIA=julia
|
JULIA=julia
|
||||||
|
FONTFORGE=fontforge
|
||||||
CURLFLAGS = --retry 5 --location
|
CURLFLAGS = --retry 5 --location
|
||||||
|
|
||||||
# use JuliaLang caching (https://github.com/staticfloat/cache.julialang.org)
|
# 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:
|
# GNU Unifont version for font metric calculations:
|
||||||
UNIFONT_VERSION=8.0.01
|
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
|
$(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
|
$(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
|
%.sfd: %.ttf
|
||||||
UNIFONT_VERSION=$(UNIFONT_VERSION) $(JULIA) charwidths.jl > $@
|
$(FONTFORGE) -lang=ff -c "Open(\"$<\");Save(\"$@\");Quit(0);"
|
||||||
|
|
||||||
|
CharWidths.txt: charwidths.jl unifont.sfd unifont_upper.sfd EastAsianWidth.txt
|
||||||
|
$(JULIA) charwidths.jl > $@
|
||||||
|
|
||||||
UnicodeData.txt:
|
UnicodeData.txt:
|
||||||
$(CURL) $(CURLFLAGS) -o $@ -O $(URLCACHE)http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
|
$(CURL) $(CURLFLAGS) -o $@ -O $(URLCACHE)http://www.unicode.org/Public/UNIDATA/UnicodeData.txt
|
||||||
|
|||||||
@ -51,12 +51,6 @@ end
|
|||||||
#############################################################################
|
#############################################################################
|
||||||
# Widths from GNU Unifont
|
# 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
|
#Read sfdfile for character widths
|
||||||
function parsesfd(filename::String, CharWidths::Dict{Int,Int}=Dict{Int,Int}())
|
function parsesfd(filename::String, CharWidths::Dict{Int,Int}=Dict{Int,Int}())
|
||||||
state=:seekchar
|
state=:seekchar
|
||||||
@ -87,15 +81,14 @@ function parsesfd(filename::String, CharWidths::Dict{Int,Int}=Dict{Int,Int}())
|
|||||||
end
|
end
|
||||||
CharWidths
|
CharWidths
|
||||||
end
|
end
|
||||||
CharWidths=parsesfd("unifont-$universion.sfd", CharWidths)
|
CharWidths=parsesfd("unifont.sfd", CharWidths)
|
||||||
CharWidths=parsesfd("unifont_upper-$universion.sfd", CharWidths)
|
CharWidths=parsesfd("unifont_upper.sfd", CharWidths)
|
||||||
|
|
||||||
#############################################################################
|
#############################################################################
|
||||||
# Widths from UAX #11: East Asian Width
|
# Widths from UAX #11: East Asian Width
|
||||||
# .. these take precedence over the Unifont width for all codepoints
|
# .. these take precedence over the Unifont width for all codepoints
|
||||||
# listed explicitly as wide/full/narrow/half-width
|
# 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"))
|
for line in readlines(open("EastAsianWidth.txt"))
|
||||||
#Strip comments
|
#Strip comments
|
||||||
line[1] == '#' && continue
|
line[1] == '#' && continue
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user