# Make groff font descriptions for URW fonts 

# This is set up so you can do
#   make -f generate/Makefile afmdir=somedir
# in the parent directory of this directory.
# That parent directory must contain DESC and text.enc files
# somedir must contain afm files named like n022003l and s050000l.pfb

# Alternatively, font descriptions for Adobe of URW fonts can be made.
# In this case the following are to be specified:
# foundry, naming, afmdir, symbolfont, srcdir, DESC, TEXTENC 
# make -f ~/work/groff/fonts/devps/generate/Makefile foundry=URW naming=Vendor afmdir=/usr/local/share/ghostscript/fonts  symbolfont=/usr/local/share/ghostscript/fonts/s050000l.pfb srcdir=~/work/groff/fonts/devps/generate DESC=/usr/local/share/groff/current/font/devps/DESC TEXTENC=/usr/local/share/groff/current/font/devps/text.enc
# The following line is required for DOS/Windows systems, since
# this Makefile needs a Unixy shell to run.
SHELL = /bin/sh

srcdir?=generate
# Directory containing AFM files.
#afmdir=/usr/local/lib/afm
afmdir?="/usr/local/share/ghostscript/fonts"

# Font foundry, Adobe or URW
foundry?=URW
# Afm file naming	Adobe		URW
# PostScript	 	Courier 	NimbusMonL-Regu
# Karl Berry style	pcrr8a		ucrr8a
# Short			couri
# Vendor		com_____	n022003l
# See the afmname.sh script.
naming?=Vendor
# default - pfb file with the same name and in the same folder as afm
symbolfont?=$(afmdir)/`$(AFMNAME) S`.pfb

ifeq ($(venvor),Adobe)

SPECIALFONTS=S
DINGBATSFONTS=ZD ZDR
GREEKFONTS=SS
TEXTFONTS=AB ABI AI AR BMB BMBI BMI BMR CB CBI CI CR HB HBI HI HR HNB HNBI \
  HNI HNR NB NBI NI NR PB PBI PI PR TB TBI TI TR ZCMI
FONTS=$(TEXTFONTS) $(SPECIALFONTS) $(GREEKFONTS) $(DINGBATSFONTS) EURO
SSfont=symbolsl
ZDRfont=zapfdr
Sfont=symbol

else

SPECIALFONTS=SU
DINGBATSFONTS=ZDU ZDRU
GREEKFONTS=SSU
TEXTFONTS=ABU ABIU AIU ARU BMBU BMBIU BMIU BMRU CBU CBIU CIU CRU HBU HBIU HIU \
  HRU HNBU HNBIU HNIU HNRU NBU NBIU NIU NRU PBU PBIU PIU PRU TBU TBIU TIU TRU \
  ZCMIU
FONTS=$(TEXTFONTS) $(SPECIALFONTS) $(GREEKFONTS) $(DINGBATSFONTS)
SSfont=stsymlsl
ZDRfont=dr
Sfont=stsyml

endif


DESC?=/usr/local/share/groff/current/font/devps/DESC
AFMTODIT=afmtodit -d$(DESC)
IFLAG=-i 50
RFLAG=-i 0 -m
NOLIGFLAG=-n
TEXTENC?=$(dir $(DESC))text.enc
EFLAG=-e $(TEXTENC)
TEXTMAP=$(srcdir)/textmap
AFMNAME=$(srcdir)/afmname.sh $(foundry)$(naming)
PSNAME=$(srcdir)/afmname.sh $(foundry)PS

all: $(FONTS)

TR TB HR HB PR PB NR NB BMR BMB AR AB HNR HNB \
TRU TBU HRU HBU PRU PBU NRU NBU BMRU BMBU ARU ABU HNRU HNBU:
	$(AFMTODIT) $(EFLAG) $(RFLAG) \
	$(afmdir)/`$(AFMNAME) $@`.afm $(TEXTMAP) $@
	printf "%-25s %s\n" `$(PSNAME) $@` `$(AFMNAME) $@`.pfb >> download.$(foundry)

TI TIU:
	$(AFMTODIT) $(EFLAG) $(IFLAG) -a 7 \
	$(afmdir)/`$(AFMNAME) $@`.afm $(TEXTMAP) $@
	printf "%-25s %s\n" `$(PSNAME) $@` `$(AFMNAME) $@`.pfb >> download.$(foundry)

TBI HI HBI PI PBI NI NBI BMI BMBI AI ABI HNI HNBI ZCMI \
TBIU HIU HBIU PIU PBIU NIU NBIU BMIU BMBIU AIU ABIU HNIU HNBIU ZCMIU:
	$(AFMTODIT) $(EFLAG) $(IFLAG) \
	$(afmdir)/`$(AFMNAME) $@`.afm $(TEXTMAP) $@
	printf "%-25s %s\n" `$(PSNAME) $@` `$(AFMNAME) $@`.pfb >> download.$(foundry)

CR CB CRU CBU:
	$(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(RFLAG) \
	$(afmdir)/`$(AFMNAME) $@`.afm $(TEXTMAP) $@
	printf "%-25s %s\n" `$(PSNAME) $@` `$(AFMNAME) $@`.pfb >> download.$(foundry)

CI CBI CIU CBIU:
	$(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(IFLAG) \
	$(afmdir)/`$(AFMNAME) $@`.afm $(TEXTMAP) $@
	printf "%-25s %s\n" `$(PSNAME) $@` `$(AFMNAME) $@`.pfb >> download.$(foundry)

ZD ZDU:
	$(AFMTODIT) -s $(RFLAG) \
	$(afmdir)/`$(AFMNAME) $@`.afm $(srcdir)/dingbats.map $@
	printf "%-25s %s\n" `$(PSNAME) $@` `$(AFMNAME) $@`.pfb >> download.$(foundry)

SS: symbolsl.afm
	$(AFMTODIT) -s -x $(IFLAG) \
	symbolsl.afm $(srcdir)/lgreekmap $@
	printf "%-25s %s\n"	Symbol-Slanted  symbolsl.pfa >> download.$(foundry)Groff
	printf "/%-21s($s) ;\n"	Symbol-Slanted  symbolsl.pfa >> Fontmap.$(foundry)                                                                         

SSU: stsymlsl.afm
	$(AFMTODIT) -s -x $(IFLAG) \
	stsymlsl.afm $(srcdir)/lgreekmap $@
	printf "%-25s %s\n"	StandardSymL-Slanted stsymlsl.pfa >> download.$(foundry)Groff
	printf "/%-21s(%s) ;\n"	StandardSymL-Slanted stsymlsl.pfa >> Fontmap.$(foundry)                                                                         

S: symbol.afm
	$(AFMTODIT) -s $(RFLAG) symbol.afm symbolmap $@
	printf "%-25s %s\n" `$(PSNAME) $@` `$(AFMNAME) $@`.pfb >> download.$(foundry)

SU: stsyml.afm
	$(AFMTODIT) -s $(RFLAG) stsyml.afm symbolmap $@
	printf "%-25s %s\n" `$(PSNAME) $@` `$(AFMNAME) $@`.pfb >> download.$(foundry)

ZDR: zapfdr.afm
	$(AFMTODIT) -s $(RFLAG) zapfdr.afm $(srcdir)/dingbats.rmap $@
	printf "%-25s %s\n"	ZapfDingbats-Reverse zapfdr.pfa >> download.$(foundry)Groff
	printf "/%-21s(%s) ;\n"	ZapfDingbats-Reverse zapfdr.pfa >> Fontmap.$(foundry)                                                                         

ZDRU: dr.afm
	$(AFMTODIT) -s $(RFLAG) dr.afm $(srcdir)/dingbats.rmap $@
	printf "%-25s %s\n"	Dingbats-Reverse dr.pfa >> download.$(foundry)Groff
	printf "/%-21s(%s) ;\n"	Dingbats-Reverse dr.pfa >> Fontmap.$(foundry)                                                                         

# the map is just a dummy
EURO: freeeuro.afm
	$(AFMTODIT) $(RFLAG) freeeuro.afm symbolmap $@
	printf "%-25s %s\n"	FreeEuro freeeuro.pfa >> download.Euro
	printf "/%-21s(%s) ;\n"	FreeEuro freeeuro.pfa >> Fontmap.Euro

freeeuro.afm freeeuro.pfa: $(srcdir)/freeeuro.sfd
	fontforge -script $(srcdir)/sfdtopfa.pe $(srcdir)/freeeuro.sfd

symbol.afm: $(srcdir)/symbol.sed
	-rm -f $@
	sed -f $(srcdir)/symbol.sed $(afmdir)/`$(AFMNAME) S`.afm > $@

stsyml.afm: $(srcdir)/symbol.sed
	-rm -f $@
	sed -f $(srcdir)/symbol.sed $(afmdir)/`$(AFMNAME) SU`.afm > $@

symbolsl.afm: $(srcdir)/symbolsl.awk symbolsl.pfa
	-rm -f $@
	-rm -f Fontmap
	echo "/Symbol-Slanted (symbolsl.pfa)  ;"  > Fontmap
	echo "/Symbol         ($(symbolfont)) ;" >> Fontmap
	printafm Symbol-Slanted | \
	awk -f $(srcdir)/symbolsl.awk -v SYMAFM=$(afmdir)/`$(AFMNAME) S`.afm >$@
	-rm -f Fontmap

stsymlsl.afm: $(srcdir)/symbolsl.awk stsymlsl.pfa
	-rm -f $@
	-rm -f Fontmap
	echo "/StandardSymL-Slanted (stsymlsl.pfa)  ;"  > Fontmap
	echo "/StandardSymL         ($(symbolfont)) ;" >> Fontmap
	printafm StandardSymL-Slanted | \
	awk -f $(srcdir)/symbolsl.awk -v SYMAFM=$(afmdir)/`$(AFMNAME) S`.afm >$@
	-rm -f Fontmap

zapfdr.afm: zapfdr.pfa
	-rm -f $@
	sed -e "/^FontName /s/ *$$/-Reverse/" \
	    -e "/^FullName /s/ *$$/ Reverse/" \
	$(afmdir)/`$(AFMNAME) ZD`.afm > $@

dr.afm: dr.pfa
	-rm -f $@
	sed -e "/^FontName /s/ *$$/-Reverse/" \
	    -e "/^FullName /s/ *$$/ Reverse/" \
	$(afmdir)/`$(AFMNAME) ZDU`.afm > $@

zapfdr.pfa: $(srcdir)/make-zapfdr
	-rm -f $@
	$(srcdir)/make-zapfdr < $(afmdir)/`$(AFMNAME) ZD`.afm \
	| sed -f $(srcdir)/psstrip.sed > $@

dr.pfa: $(srcdir)/make-zapfdr
	-rm -f $@
	$(srcdir)/make-zapfdr < $(afmdir)/`$(AFMNAME) ZDU`.afm \
	| sed -e "s/Zapf//" | sed -f $(srcdir)/psstrip.sed > $@

symbolsl.pfa: $(srcdir)/symbolsl.ps
	-rm -f $@
	sed -f $(srcdir)/psstrip.sed $(srcdir)/symbolsl.ps > $@

stsymlsl.pfa: $(srcdir)/symbolsl.ps
	-rm -f $@
	sed -e "s/Symbol/StandardSymL/" $(srcdir)/symbolsl.ps \
	| sed -f $(srcdir)/psstrip.sed > $@

ZD ZDU: $(srcdir)/dingbats.map
ZDR ZDRU: $(srcdir)/dingbats.rmap
$(TEXTFONTS): $(TEXTMAP) $(TEXTENC)
$(SPECIALFONTS): symbolmap
$(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 >>$@

clean:
	-rm -f symbolmap $(Sfont).afm

realclean: clean
	-rm -f $(FONTS) download.$(foundry) download.$(foundry)Groff \
		$(SSfont).afm $(SSfont).pfa $(ZDRfont).afm $(ZDRfont).pfa

extraclean: realclean
	-rm -f core *~ "#*"

.PHONY: all clean realclean extraclean

