Hi, Kurt! At 2022-05-26T10:29:04-0400, T. Kurt Bond wrote: > I really need to get the install-font script POSIXfied then, don't I? > Is there a specific timeframe?
I don't have one to impose. I can't do an RC myself because (1) I don't know how to do the part that interacts with alpha.gnu.org infrastructure and (2) there's something involving signing keys (a wise safeguard). I will say that I had basically resigned myself to not having this feature in groff 1.23.0. Having dug more into font issues over the past several months, I am starting to think it might be cleaner to get PostScript and PDF device font description management improved _within_ the groff source tree, then leverage that improvement in shipping tools. I got as far as fixing up the X11 font description stuff, now mentioned in the "FOR-RELEASE" file, and I started working on Adobe Type 1 fonts, but had to put that on the shelf (read: in my Git stash) because something more urgent came up. I'm attaching the last thing on this topic that I put in my stash so people have an idea what I'm talking about. It is absolutely not done. Even with the install-font script made POSIX-shell-happy, there will still be work to do, like giving it a less name-space-stomperific name[1], writing a man page for it, and giving distribution packaging folks enough guidance that they will understand how to correctly call our tool from their package triggers or "postinst"s or similar. In summary, I think a significant chunk of work remains to be bitten off for this task. Regards, Branden [1] I guess "groff-font-install" or "groff-install-font" would be clear enough, but I think either would annoy me when tab-completing "groff". Maybe we can do better.
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;
signature.asc
Description: PGP signature