[about latin2 support for groff] Since this topic is possibly of broader interest, I'm CCing this mail to the groff mailing list. It's nothing new, but...
> GROFF VERSION: 1.18 This version is far too old. The current one is 1.20.1. > OS: openSuSE 11.2 Sigh. If you don't need Japanese support for man pages, install the current version of groff instead of relying on a version which is eight (!) years old. > echo '.PP > Zażółć gęślą jaźń.' | iconv '-futf8' '-tlatin2' | groff '-fT2' '-tms' With groff 1.20.1, the `iconv' hack is no longer needed since groff has now built-in support for UTF-8 (using groff's `preconv' preprocessor). Simply use groff's `-k' switch. > DESCRIPTION OF INCORRECT BEHAVIOUR: > troff: warning: can't find font `T2R' > troff: fatal error: invalid default family `T2' > > SUGGESTED FIX [optional]: > add files T2R, latin2.enc to devps I won't follow your suggestion. Instead, you should generate metric files for all URW fonts with the attached `Makefile.urw'. Proceed as follows: 0. Unpack groff-1.20.1.tar.gz (or use the current CVS). 1. In `Makefile.urw', adapt the `afmdir' variable so that it points to the right location of the AFM files for the URW fonts. 2. Copy `Makefile.urw' to `groff-1.20.1/font/devps/generate'. 3. Change to the `groff-1.20.1/font/devps' directory. 4. Copy `DESC.in' to `DESC'. 5. Say make -f generate/Makefile.urw 6. Copy the generated `U*' metric files to a standard location for groff font files (e.g. /usr/local/share/groff/1.20.1/font/devps). Alternatively, check the troff(1) man page how to use the GROFF_FONT_PATH environment variable. [7. You can now delete the groff-1.20.1 directory.] You are done. To process the above example with, say, the Times variant of the URW fonts, call echo '.PP Zażółć gęślą jaźń.' | groff -k -fUT -ms Werner
# Copyright (C) 1989-2002, 2004, 2010 Free Software Foundation, Inc. # Written by James Clark (j...@jclark.com) # Heavily modifed by P. Alejandro L\('opez-Valencia # (dra...@yahoo.com) # # This file is part of groff. # # groff is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free # Software Foundation; either version 2, or (at your option) any later # version. # # groff is distributed in the hope that it will be useful, but WITHOUT ANY # WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # for more details. # # You should have received a copy of the GNU General Public License along # with groff; see the file COPYING. If not, write to the Free Software # Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # This is set up so you can do # make -f generate/Makefile.urw # in the parent directory of this directory. # The following line is required for DOS/Windows systems, since # this Makefile needs a Unixy shell to run. SHELL=/bin/sh # Directory containing AFM files. Must not be current directory. # Either long names (eg Times-Roman.afm) or short names (eg timesr.afm) # may be used. See the afmname script. afmdir=/usr/share/ghostscript/fonts srcdir=generate SPECIALFONTS=US DINGBATSFONTS=UZD UZDR GREEKFONTS=USS TEXTFONTS=\ UAB UABI UAI UAR \ UBMB UBMBI UBMI UBMR \ UCB UCBI UCI UCR \ UHB UHBI UHI UHR \ UHNB UHNBI UHNI UHNR \ UNB UNBI UNI UNR \ UPB UPBI UPI UPR \ UTB UTBI UTI UTR \ UZCMI FONTS=$(TEXTFONTS) $(SPECIALFONTS) $(GREEKFONTS) $(DINGBATSFONTS) DESC=$(srcdir)/../DESC AFMTODIT=afmtodit -d$(DESC) IFLAG=-i 50 RFLAG=-i 0 -m NOLIGFLAG=-n TEXTENC=$(srcdir)/../text.enc EFLAG=-e $(TEXTENC) TEXTMAP=$(srcdir)/textmap AFMNAME=$(srcdir)/afmname all: $(FONTS) UTR: $(AFMTODIT) $(EFLAG) $(RFLAG) \ `$(AFMNAME) $(afmdir)/n021003l.afm` $(TEXTMAP) $@ UTB: $(AFMTODIT) $(EFLAG) $(RFLAG) \ `$(AFMNAME) $(afmdir)/n021004l.afm` $(TEXTMAP) $@ UTI: $(AFMTODIT) $(EFLAG) $(IFLAG) -a 7 \ `$(AFMNAME) $(afmdir)/n021023l.afm` $(TEXTMAP) $@ UTBI: $(AFMTODIT) $(EFLAG) $(IFLAG) \ `$(AFMNAME) $(afmdir)/n021024l.afm` $(TEXTMAP) $@ UHR: $(AFMTODIT) $(EFLAG) $(RFLAG) \ `$(AFMNAME) $(afmdir)/n019003l.afm` $(TEXTMAP) $@ UHB: $(AFMTODIT) $(EFLAG) $(RFLAG) \ `$(AFMNAME) $(afmdir)/n019004l.afm` $(TEXTMAP) $@ UHI: $(AFMTODIT) $(EFLAG) $(IFLAG) \ `$(AFMNAME) $(afmdir)/n019023l.afm` $(TEXTMAP) $@ UHBI: $(AFMTODIT) $(EFLAG) $(IFLAG) \ `$(AFMNAME) $(afmdir)/n019024l.afm` $(TEXTMAP) $@ UCR: $(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(RFLAG) \ `$(AFMNAME) $(afmdir)/n022003l.afm` $(TEXTMAP) $@ UCB: $(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(RFLAG) \ `$(AFMNAME) $(afmdir)/n022004l.afm` $(TEXTMAP) $@ UCI: $(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(IFLAG) \ `$(AFMNAME) $(afmdir)/n022023l.afm` $(TEXTMAP) $@ UCBI: $(AFMTODIT) $(NOLIGFLAG) $(EFLAG) $(IFLAG) \ `$(AFMNAME) $(afmdir)/n022024l.afm` $(TEXTMAP) $@ UPR: $(AFMTODIT) $(EFLAG) $(RFLAG) \ `$(AFMNAME) $(afmdir)/p052003l.afm` $(TEXTMAP) $@ UPB: $(AFMTODIT) $(EFLAG) $(RFLAG) \ `$(AFMNAME) $(afmdir)/p052004l.afm` $(TEXTMAP) $@ UPI: $(AFMTODIT) $(EFLAG) $(IFLAG) \ `$(AFMNAME) $(afmdir)/p052023l.afm` $(TEXTMAP) $@ UPBI: $(AFMTODIT) $(EFLAG) $(IFLAG) \ `$(AFMNAME) $(afmdir)/p052024l.afm` $(TEXTMAP) $@ UNR: $(AFMTODIT) $(EFLAG) $(RFLAG) \ `$(AFMNAME) $(afmdir)/c059013l.afm` $(TEXTMAP) $@ UNB: $(AFMTODIT) $(EFLAG) $(RFLAG) \ `$(AFMNAME) $(afmdir)/c059016l.afm` $(TEXTMAP) $@ UNI: $(AFMTODIT) $(EFLAG) $(IFLAG) \ `$(AFMNAME) $(afmdir)/c059033l.afm` $(TEXTMAP) $@ UNBI: $(AFMTODIT) $(EFLAG) $(IFLAG) \ `$(AFMNAME) $(afmdir)/c059036l.afm` $(TEXTMAP) $@ UBMR: $(AFMTODIT) $(EFLAG) $(RFLAG) \ `$(AFMNAME) $(afmdir)/b018012l.afm` $(TEXTMAP) $@ UBMB: $(AFMTODIT) $(EFLAG) $(RFLAG) \ `$(AFMNAME) $(afmdir)/b018015l.afm` $(TEXTMAP) $@ UBMI: $(AFMTODIT) $(EFLAG) $(IFLAG) \ `$(AFMNAME) $(afmdir)/b018032l.afm` $(TEXTMAP) $@ UBMBI: $(AFMTODIT) $(EFLAG) $(IFLAG) \ `$(AFMNAME) $(afmdir)/b018035l.afm` $(TEXTMAP) $@ UAR: $(AFMTODIT) $(EFLAG) $(RFLAG) \ `$(AFMNAME) $(afmdir)/a010013l.afm` $(TEXTMAP) $@ UAB: $(AFMTODIT) $(EFLAG) $(RFLAG) \ `$(AFMNAME) $(afmdir)/a010015l.afm` $(TEXTMAP) $@ UAI: $(AFMTODIT) $(EFLAG) $(IFLAG) \ `$(AFMNAME) $(afmdir)/a010033l.afm` $(TEXTMAP) $@ UABI: $(AFMTODIT) $(EFLAG) $(IFLAG) \ `$(AFMNAME) $(afmdir)/a010035l.afm` $(TEXTMAP) $@ UHNR: $(AFMTODIT) $(EFLAG) $(RFLAG) \ `$(AFMNAME) $(afmdir)/n019043l.afm` $(TEXTMAP) $@ UHNB: $(AFMTODIT) $(EFLAG) $(RFLAG) \ `$(AFMNAME) $(afmdir)/n019044l.afm` $(TEXTMAP) $@ UHNI: $(AFMTODIT) $(EFLAG) $(IFLAG) \ `$(AFMNAME) $(afmdir)/n019063l.afm` $(TEXTMAP) $@ UHNBI: $(AFMTODIT) $(EFLAG) $(IFLAG) \ `$(AFMNAME) $(afmdir)/n019064l.afm` $(TEXTMAP) $@ UZCMI: $(AFMTODIT) $(EFLAG) $(IFLAG) \ `$(AFMNAME) $(afmdir)/z003034l.afm` $(TEXTMAP) $@ UZD: $(AFMTODIT) -s $(RFLAG) \ `$(AFMNAME) $(afmdir)/d050000l.afm` $(srcdir)/dingbats.map $@ USS: $(srcdir)/symbolsl.afm $(AFMTODIT) -s -x $(IFLAG) \ $(srcdir)/symbolsl.afm $(srcdir)/lgreekmap $@ US: usym.afm $(AFMTODIT) -s $(RFLAG) usym.afm symbolmap $@ UZDR: uzdrrev.afm $(AFMTODIT) -s $(RFLAG) uzdrrev.afm $(srcdir)/dingbats.rmap $@ usym.afm: $(srcdir)/symbol.sed -rm -f $@ sed -f $(srcdir)/symbol.sed `$(AFMNAME) $(afmdir)/s050000l.afm` >$@ uzdrrev.afm: -rm -f $@ sed -e '/^FontName /s/Dingbats/Dingbats-Reverse/' \ `$(AFMNAME) $(afmdir)/d050000l.afm` >$@ UZD: $(srcdir)/dingbats.map UZDR: $(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 usym.afm udzrrev.afm realclean: clean -rm -f $(FONTS) extraclean: realclean -rm -f core *~ "#*" .PHONY: all clean realclean extraclean