diff --git a/font/devps/devps.am b/font/devps/devps.am index 22ebe59d3..41a9d30a6 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'. # @@ -39,6 +39,10 @@ DEVPSFONTFILES = \ font/devps/HBI \ font/devps/HI \ font/devps/HR \ + font/devps/HCB \ + font/devps/HCBI \ + font/devps/HCI \ + font/devps/HCR \ font/devps/HNB \ font/devps/HNBI \ font/devps/HNI \ @@ -148,10 +152,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..2821efd32 100644 --- a/font/devps/generate/Makefile +++ b/font/devps/generate/Makefile @@ -27,11 +27,11 @@ SHELL = /bin/sh # Directory containing AFM files. Must not be current directory. # Either long names (e.g., Times-Roman.afm) or short names (e.g., # timesr.afm) may be used. See the afmname script. -afmdir=/usr/local/lib/afm +afmdir ?= /usr/local/lib/afm # 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 +symbolfont ?= /usr/local/lib/fonts/Symbol.pfb PRINTAFM=printafm @@ -44,6 +44,7 @@ TEXTFONTS=AB ABI AI AR \ BMB BMBI BMI BMR \ CB CBI CI CR \ HB HBI HI HR \ + HCB HCBI HCI HCR \ HNB HNBI HNI HNR \ NB NBI NI NR \ PB PBI PI PR \ @@ -61,6 +62,7 @@ TEXTENC=$(srcdir)/../text.enc EFLAG=-e $(TEXTENC) TEXTMAP=$(srcdir)/textmap AFMNAME=$(srcdir)/afmname +OUTDIR=$(srcdir)/.. RM=rm -f @@ -69,211 +71,231 @@ 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)/$@ + +HCR: + $(AFMTODIT) $(EFLAG) $(RFLAG) \ + `$(AFMNAME) $(afmdir)/Helvetica-Condensed.afm` \ + $(TEXTMAP) $(OUTDIR)/$@ + +HCB: + $(AFMTODIT) $(EFLAG) $(RFLAG) \ + `$(AFMNAME) $(afmdir)/Helvetica-Condensed-Bold.afm` \ + $(TEXTMAP) $(OUTDIR)/$@ + +HCI: + $(AFMTODIT) $(EFLAG) $(IFLAG) \ + `$(AFMNAME) $(afmdir)/Helvetica-Condensed-Oblique.afm` \ + $(TEXTMAP) $(OUTDIR)/$@ + +HCBI: + $(AFMTODIT) $(EFLAG) $(IFLAG) \ + `$(AFMNAME) $(afmdir)/Helvetica-Condensed-BoldObl.afm` \ + $(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 +305,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 *~ "#*" diff --git a/font/devps/generate/afmname b/font/devps/generate/afmname index 7d1934930..6944a6e7b 100755 --- a/font/devps/generate/afmname +++ b/font/devps/generate/afmname @@ -20,6 +20,10 @@ else /^Helvetica$/ { print "helve" } /^Helvetica-Bold$/ { print "helveb" } /^Helvetica-BoldOblique$/ { print "helvebo" } +/^Helvetica-Condensed$/ { print "hvc_____" } +/^Helvetica-Condensed-Bold$/ { print "hvcb____" } +/^Helvetica-Condensed-BoldObl$/ { print "hvcbo___" } +/^Helvetica-Condensed-Oblique$/ { print "hvcdo___" } /^Helvetica-Narrow$/ { print "helven" } /^Helvetica-Narrow-Bold$/ { print "helvenb" } /^Helvetica-Narrow-BoldOblique$/ { print "helvenbo" } diff --git a/src/utils/afmtodit/afmtodit.pl b/src/utils/afmtodit/afmtodit.pl index 73ae7c65f..183080c45 100644 --- a/src/utils/afmtodit/afmtodit.pl +++ b/src/utils/afmtodit/afmtodit.pl @@ -421,8 +421,13 @@ foreach my $lig (sort keys %default_ligatures) { open(FONT, ">$outfile") || die "$prog: can't open '$outfile' for output: $!\n"; select(FONT); -print("# This file has been generated with " . - "GNU afmtodit (groff) version @VERSION@\n"); +# Produce a short version number so noise from a Git build doesn't leak +# into the generated files when we run this tool in "maintainer mode". +my $short_version = "@VERSION@"; +$short_version =~ s/([0-9.]+)(rc[0-9]+).*/\1\2/; + +print("# This file was generated with " . + "GNU afmtodit (groff) version $short_version\n"); print("#\n"); print("# $fullname\n") if defined $fullname; print("# $version\n") if defined $version; @@ -445,7 +450,10 @@ if ($opt_c) { print("\n"); -print("name $font\n"); +my $name = $font; +$name =~ s@.*/@@; + +print("name $name\n"); print("internalname $psname\n") if $psname; print("special\n") if $opt_s; printf("slant %g\n", $italic_angle) if $italic_angle != 0;