summaryrefslogtreecommitdiff
path: root/font/devps
diff options
context:
space:
mode:
authorG. Branden Robinson <g.branden.robinson@gmail.com>2022-03-13 17:00:29 +1100
committerG. Branden Robinson <g.branden.robinson@gmail.com>2022-03-13 17:00:29 +1100
commit2566b64e0bb35626f15fd2b256f95d9837daa3d1 (patch)
tree9b83326375ea0309df01cff92695df70a2aaf63e /font/devps
parentd012cd6f0c72bbc6cde62d13cb86e9577e0e620d (diff)
downloadgroff-git-2566b64e0bb35626f15fd2b256f95d9837daa3d1.tar.gz
[devps]: Refactor Adobe Type 1 font desc regen.
Checkpoint work in progress. Should not cause regressions because the Make targets invoked are never called during a build (they are isolates that you have to manually name on the command line). * font/devps/devps.am: Rename targets. (fonts): (devps_fonts): Rename these... (maintainer-font-descriptions): (devps_font-descriptions): ...to these. Add comments explaining what they're for and why they aren't used in a build. * font/devps/generate/Makefile: Add `outdir` variable to store destination directory of font description files, and update all targets that write artifacts to use this directory. This makes the targets "phony", which I don't regard as a problem since the generated artifacts are kept under source control, and this isn't really a user-facing script (even though it gets installed). I think there is a good chance that this will become a shell script, because to avoid regressions we need to generate the font descriptions using both the 229-glyph and 314-glyph versions of the Adobe fonts' AFM files (so that we get wider glyph coverage _and_ more kerning pair data) and we need to add kerning information for the ellipsis (Savannah #59907). (symbolsl.afm): Revise generation process to be sensitive to failure.
Diffstat (limited to 'font/devps')
-rw-r--r--font/devps/devps.am13
-rw-r--r--font/devps/generate/Makefile128
2 files changed, 77 insertions, 64 deletions
diff --git a/font/devps/devps.am b/font/devps/devps.am
index e8bffa89c..09a452fe3 100644
--- a/font/devps/devps.am
+++ b/font/devps/devps.am
@@ -1,4 +1,4 @@
-# Copyright (C) 2014-2020 Free Software Foundation, Inc.
+# Copyright (C) 2014-2022 Free Software Foundation, Inc.
#
# This file is part of 'groff'.
#
@@ -150,10 +150,17 @@ font/devps/DESC: $(devps_srcdir)/DESC.in
&& (test -z '$(PSPRINT)' \
|| echo print '$(PSPRINT)' >>$@)
-fonts: devps_fonts
+maintainer-font-descriptions: devps_font-descriptions
+# This target generates font descriptions from installed Type 1 AFM
+# files; these are _not_ normally generated during a build, but provided
+# with the groff source distribution.
+#
# We add top_builddir to the PATH in case the only afmtodit available is
# the one in the current build.
-devps_fonts: afmtodit font/devps/DESC
+#
+# The AFM files from which these descriptions are produced must be
+# obtained elsewhere, so this target runs only in "maintainer mode".
+devps_font-descriptions: afmtodit font/devps/DESC
PATH=$(top_builddir)$(GROFF_PATH_SEPARATOR)$(PATH) \
$(MAKE) -f $(devps_srcdir)/generate/Makefile \
srcdir=$(devps_srcdir)/generate DESC=$(devps_srcdir)/DESC.in
diff --git a/font/devps/generate/Makefile b/font/devps/generate/Makefile
index 340a967a1..1c8e276d7 100644
--- a/font/devps/generate/Makefile
+++ b/font/devps/generate/Makefile
@@ -1,4 +1,4 @@
-# Copyright (C) 1989-2020 Free Software Foundation, Inc.
+# Copyright (C) 1989-2022 Free Software Foundation, Inc.
# Written by James Clark (jjc@jclark.com)
#
# This file is part of groff.
@@ -29,6 +29,9 @@ SHELL = /bin/sh
# timesr.afm) may be used. See the afmname script.
afmdir=/usr/local/lib/afm
+# Write font descriptions to this directory.
+outdir=$(srcdir)/..
+
# The symbol font which fits to 'Symbol.afm'. For the creation of
# 'symbolsl.afm' we need the 'printafm' script from ghostscript.
symbolfont=/usr/local/lib/fonts/Symbol.pfb
@@ -69,211 +72,211 @@ all: $(FONTS)
TR:
$(AFMTODIT) $(EFLAG) $(RFLAG) \
`$(AFMNAME) $(afmdir)/Times-Roman.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
TB:
$(AFMTODIT) $(EFLAG) $(RFLAG) \
`$(AFMNAME) $(afmdir)/Times-Bold.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
TI:
$(AFMTODIT) $(EFLAG) $(IFLAG) -a 7 \
`$(AFMNAME) $(afmdir)/Times-Italic.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
TBI:
$(AFMTODIT) $(EFLAG) $(IFLAG) \
`$(AFMNAME) $(afmdir)/Times-BoldItalic.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
HR:
$(AFMTODIT) $(EFLAG) $(RFLAG) \
`$(AFMNAME) $(afmdir)/Helvetica.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
HB:
$(AFMTODIT) $(EFLAG) $(RFLAG) \
`$(AFMNAME) $(afmdir)/Helvetica-Bold.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
HI:
$(AFMTODIT) $(EFLAG) $(IFLAG) \
`$(AFMNAME) $(afmdir)/Helvetica-Oblique.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
HBI:
$(AFMTODIT) $(EFLAG) $(IFLAG) \
`$(AFMNAME) $(afmdir)/Helvetica-BoldOblique.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
CR:
$(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(RFLAG) \
`$(AFMNAME) $(afmdir)/Courier.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
CB:
$(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(RFLAG) \
`$(AFMNAME) $(afmdir)/Courier-Bold.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
CI:
$(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(IFLAG) \
`$(AFMNAME) $(afmdir)/Courier-Oblique.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
CBI:
$(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(IFLAG) \
`$(AFMNAME) $(afmdir)/Courier-BoldOblique.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
PR:
$(AFMTODIT) $(EFLAG) $(RFLAG) \
`$(AFMNAME) $(afmdir)/Palatino-Roman.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
PB:
$(AFMTODIT) $(EFLAG) $(RFLAG) \
`$(AFMNAME) $(afmdir)/Palatino-Bold.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
PI:
$(AFMTODIT) $(EFLAG) $(IFLAG) \
`$(AFMNAME) $(afmdir)/Palatino-Italic.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
PBI:
$(AFMTODIT) $(EFLAG) $(IFLAG) \
`$(AFMNAME) $(afmdir)/Palatino-BoldItalic.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
NR:
$(AFMTODIT) $(EFLAG) $(RFLAG) \
`$(AFMNAME) $(afmdir)/NewCenturySchlbk-Roman.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
NB:
$(AFMTODIT) $(EFLAG) $(RFLAG) \
`$(AFMNAME) $(afmdir)/NewCenturySchlbk-Bold.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
NI:
$(AFMTODIT) $(EFLAG) $(IFLAG) \
`$(AFMNAME) $(afmdir)/NewCenturySchlbk-Italic.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
NBI:
$(AFMTODIT) $(EFLAG) $(IFLAG) \
`$(AFMNAME) $(afmdir)/NewCenturySchlbk-BoldItalic.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
BMR:
$(AFMTODIT) $(EFLAG) $(RFLAG) \
`$(AFMNAME) $(afmdir)/Bookman-Light.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
BMB:
$(AFMTODIT) $(EFLAG) $(RFLAG) \
`$(AFMNAME) $(afmdir)/Bookman-Demi.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
BMI:
$(AFMTODIT) $(EFLAG) $(IFLAG) \
`$(AFMNAME) $(afmdir)/Bookman-LightItalic.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
BMBI:
$(AFMTODIT) $(EFLAG) $(IFLAG) \
`$(AFMNAME) $(afmdir)/Bookman-DemiItalic.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
AR:
$(AFMTODIT) $(EFLAG) $(RFLAG) \
`$(AFMNAME) $(afmdir)/AvantGarde-Book.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
AB:
$(AFMTODIT) $(EFLAG) $(RFLAG) \
`$(AFMNAME) $(afmdir)/AvantGarde-Demi.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
AI:
$(AFMTODIT) $(EFLAG) $(IFLAG) \
`$(AFMNAME) $(afmdir)/AvantGarde-BookOblique.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
ABI:
$(AFMTODIT) $(EFLAG) $(IFLAG) \
`$(AFMNAME) $(afmdir)/AvantGarde-DemiOblique.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
HNR:
$(AFMTODIT) $(EFLAG) $(RFLAG) \
`$(AFMNAME) $(afmdir)/Helvetica-Narrow.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
HNB:
$(AFMTODIT) $(EFLAG) $(RFLAG) \
`$(AFMNAME) $(afmdir)/Helvetica-Narrow-Bold.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
HNI:
$(AFMTODIT) $(EFLAG) $(IFLAG) \
`$(AFMNAME) $(afmdir)/Helvetica-Narrow-Oblique.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
HNBI:
$(AFMTODIT) $(EFLAG) $(IFLAG) \
`$(AFMNAME) $(afmdir)/Helvetica-Narrow-BoldOblique.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
ZCMI:
$(AFMTODIT) $(EFLAG) $(IFLAG) \
`$(AFMNAME) $(afmdir)/ZapfChancery-MediumItalic.afm` \
- $(TEXTMAP) $@
+ $(TEXTMAP) $(OUTDIR)/$@
ZD:
$(AFMTODIT) -s $(RFLAG) \
`$(AFMNAME) $(afmdir)/ZapfDingbats.afm` \
- $(srcdir)/dingbats.map $@
+ $(srcdir)/dingbats.map $(OUTDIR)/$@
-SS: symbolsl.afm
+SS: $(OUTDIR)/symbolsl.afm
$(AFMTODIT) -s -x $(IFLAG) \
- symbolsl.afm $(srcdir)/lgreekmap $@
+ $(OUTDIR)/symbolsl.afm $(srcdir)/lgreekmap $(OUTDIR)/$@
S: symbol.afm
$(AFMTODIT) -s $(RFLAG) \
- symbol.afm symbolmap $@
+ symbol.afm symbolmap $(OUTDIR)/$@
-ZDR: zapfdr.afm
+ZDR: $(OUTDIR)/zapfdr.afm
$(AFMTODIT) -s $(RFLAG) \
- zapfdr.afm $(srcdir)/dingbats.rmap $@
+ $(OUTDIR)/zapfdr.afm $(srcdir)/dingbats.rmap $(OUTDIR)/$@
# the map is just a dummy
EURO: freeeuro.afm
$(AFMTODIT) $(RFLAG) \
- freeeuro.afm symbolmap $@
+ freeeuro.afm symbolmap $(OUTDIR)/$@
freeeuro.afm freeeuro.pfa: $(srcdir)/freeeuro.sfd
- fontforge -script $(srcdir)/sfdtopfa.pe $(srcdir)/freeeuro.sfd
+ fontforge -script $(srcdir)/sfdtopfa.pe $(srcdir)/freeeuro.sfd \
+ && mv freeeuro.afm freeeuro.pfa $(OUTDIR)
symbol.afm: $(srcdir)/symbol.sed
- $(RM) $@
sed -f $(srcdir)/symbol.sed `$(AFMNAME) $(afmdir)/Symbol.afm` \
- >$@
+ >$(OUTDIR)/$@
symbolsl.afm: $(srcdir)/symbolsl.awk $(srcdir)/../symbolsl.ps
- $(RM) $@ Fontmap
- echo "/Symbol-Slanted ($(srcdir)/../symbolsl.ps) ;" > Fontmap
- echo "/Symbol ($(symbolfont)) ;" >> Fontmap
- $(PRINTAFM) Symbol-Slanted > tmp.afm
- awk -f $(srcdir)/symbolsl.awk -v SYMAFM=`$(AFMNAME) \
- $(afmdir)/Symbol.afm` tmp.afm >$@
- $(RM) Fontmap tmp.afm
-
-zapfdr.afm: $(srcdir)/zapfdr.sed
- $(RM) $@
+ $(RM) Fontmap \
+ && echo "/Symbol-Slanted ($(srcdir)/../symbolsl.ps) ;" \
+ > Fontmap \
+ && echo "/Symbol ($(symbolfont)) ;" >> Fontmap \
+ && $(PRINTAFM) Symbol-Slanted > tmp.afm \
+ && awk -f $(srcdir)/symbolsl.awk -v SYMAFM=`$(AFMNAME) \
+ $(afmdir)/Symbol.afm` tmp.afm >$(OUTDIR)/$@ \
+ && $(RM) Fontmap tmp.afm
+
+zapfdr.afm: $(srcdir)/apfdr.sed
sed -f $(srcdir)/zapfdr.sed \
- `$(AFMNAME) $(afmdir)/ZapfDingbats.afm` >$@
+ `$(AFMNAME) $(afmdir)/ZapfDingbats.afm` >$(OUTDIR)/$@
ZD: $(srcdir)/dingbats.map
ZDR: $(srcdir)/dingbats.rmap
@@ -283,16 +286,19 @@ $(GREEKFONTS): $(srcdir)/lgreekmap
$(FONTS): $(DESC)
symbolmap: $(TEXTMAP) $(srcdir)/symbolchars
- echo '#' >$@
- echo '# This is a list of all predefined groff symbols.' >>$@
- echo '#' >>$@
- cat $(TEXTMAP) $(srcdir)/symbolchars >>$@
+ printf \
+ '#\n# This is a list of all predefined groff symbols.\n#\n' \
+ > $(OUTDIR)/$@ \
+ && cat $(TEXTMAP) $(srcdir)/symbolchars >>$@
clean:
- $(RM) symbolmap symbol.afm
+ cd $(OUTDIR) \
+ && $(RM) freeeuro.afm freeeuro.pfa symbol.afm symbolmap \
+ symbolsl.afm zapfdr.afm
realclean: clean
- $(RM) $(FONTS)
+ cd $(OUTDIR) \
+ && $(RM) $(FONTS)
extraclean: realclean
$(RM) core *~ "#*"