AW:[Tustep-Liste] PS-Zeichensatz installieren
Heinz Werner Kramski
kramski at dla-marbach.de
Fr Mai 13 12:02:12 CEST 2005
Lieber Herr Meyer,
wir kopieren hier zusätzliche PS-Schriften (unter Windows) auf ein
Verzeichnis im Netz mit folgender Struktur:
Y:\psfonts\*.pfb
Y:\psfonts\fontinfo\*.inf
Y:\psfonts\pfm\*.pfm
Y:\psfonts\afm\*.afm
GSView besitzt folgende Einstellungen:
Optionen/Konfiguriere Ghostscript.../Ghostscript-Optionen:
-dNOPLATFONTS -sFONTPATH=c:\psfonts;y:\psfonts
Damit klappt es auch, ohne Schriftenlisten zu aktualisieren - unter
Linux müsste das ähnlich möglich sein.
Das Verzeichnis Y:\psfonts wird gleichzeitig unter Unix als
/lan/netappl/psfonts zum temporären Laden der Schriften in Drucker
verwendet. Dafür haben Sie ja schon eine einfache Lösung, aber ich
füge unser Shell-Script "loadfont" trotzdem mal bei, vielleicht können
Sie es gebrauchen (das Tool t1ascii wird ebenfalls benötigt). Das
Script kann optional auch eine Zeichentabelle ausgeben, inkl. der
nicht-codierten Zeichen (das geht wohl über *psdickten hinaus).
Viele Grüße
Heinz Werner Kramski
---------------------------------------------------------------------
Heinz Werner Kramski Heinz.Werner.Kramski at dla-marbach.de
Deutsches Literaturarchiv Telefon: +49 7144/848-140
Schillerhöhe 8-10 Fax: +49 7144/848-191
D-71672 Marbach http://www.dla-marbach.de
---------------------------------------------------------------------
> Diskussionsforum Tustep-Liste
> Weitere Informationen: www.itug.de
> ------------------------------------------------------------
>
> Liebe Tustep-Gemeinschaft,
>
> ich habe hier einen Postscript-Zeichensatz ("Quadraat") mit den
benötigten
> Schnitten (recte, kursiv, etc.) in jeweils einer .afm und
.pfb-Datei.
>
> Es ist mir gelungen, die .afm-Dateien mit *PSFONT zu bearbeiten und
die
> Dicktenwerte in einer Datei aufzuheben. Das Satzprogramm scheint
diese auch
> zu erkennen, aber der letzte Schritt will mir nicht gelingen: *PSAUS
gibt
> immer nur Seiten des Inhalts "Die nötige Schrift QUADRAAT-Regular
ist auf dem
> Gerät nicht installiert" aus.
>
> Mir ist im Prinzip klar, daß zur Einbettung in die PS-Datei
eigentlich
> die .pdb-Dateien nötig sind. Was muß ich mit diesen tun?
>
> Ich habe versucht, sie in das "fonts"-Verzeichnis von ghostscript zu
kopieren
> - ohne Erfolg. Außerdem müsste es doch möglich sein, eigene
Schriften auch
> als Nicht-Administrator zu verwenden!
>
> Jede Hilfe ist sehr willkommen; das System ist Suse-Linux 9.2.
>
> Schon jetzt vielen Dank und herzliche Grüße,
>
>
> Thomas Meyer
>
> ------------------------------------------------------------
> Tustep-Liste at itug.de
> https://lists.uni-wuerzburg.de/mailman/listinfo/tustep-liste
-------------- nächster Teil --------------
#!/bin/ksh
#---------------------------------------------------------------------
# (c) Deutsches Literaturarchiv Marbach
#---------------------------------------------------------------------
# $Source: /usr/local/bin/RCS/loadfont,v $
# $Id: loadfont,v 1.3 2005/01/21 15:16:53 root Exp $
# Aufruf: siehe unten
# Parameter: siehe unten
# Zweck: binaere Postscript-Fonts resident in Drucker laden
# Umgebung: Digital-Unix
# Siehe auch: "man t1ascii"
# Bemerkungen: Erwartet wird folgende Dateikonvention:
# $PSFONTS/afm/*.afm - Adobe Font Metrics
# $PSFONTS/*.pfb - binaere Postscript-Fonts
# Da die PS-Fonts unter Windows installiert werden,
# ist EOL in *.afm CRLF. Dies muss ggf. bei der Angabe von
# egrep-Pattern beachtet werden: "loadfont Bembo$" etwa
# findet nichts; "loadfont Bembo.$" ist korrekt und
# beruecksichtigt das CR am Zeilenende.
#---------------------------------------------------------------------
# $Log: loadfont,v $
# Revision 1.3 2005/01/21 15:16:53 root
# Neuer Parameter --showfont zur Ausgabe einer Zeichentabelle (inkl. nicht-codierter Zeichen)
#
# Revision 1.2 2005/01/17 10:33:27 kramski
# Parameter eingefuehrt, insbesondere fuer den Printer, damit BeFi auch seinen Drucker benutzen kann.
#
# Revision 1.1 1998/02/23 10:26:57 kramski
# Initial revision
#
#---------------------------------------------------------------------
set -u +x
Me=${0##*/}
Rev='$Revision: 1.3 $'
# Konstanten
OutFile=/var/tmp/loadfont.ps
# Defaults (durch Parameter aenderbar)
FontName="Bembo*"
FontDir=/lan/netappl/psfonts
Printer=lp0
Mode_ShowFont="" # "" ist false, "y" ist true
Zweck="\
Dies ist $Me $Rev, (c) Heinz.Werner.Kramski at dla-marbach.de.
$Me laedt einen oder mehrere binaere Postscript-Fonts resident in einen
Drucker, meist als Vorbereitung fuer die Satzausgabe mit TUSTEP.
Es kann dabei auch eine vollstaendige Zeichentabelle ausgeben.
"
Aufruf="\
Aufruf: $Me fontname [optionen]
fontname: # Schriftname (FontName) lt. .afm-Datei,
# ggf. inkl. Wildcards (Default: $FontName)
optionen:
--fontdir path # Fontverzeichnis (Default: $FontDir)
--printer printer # Unix-Druckername (Default: $Printer)
--showfont # Vollstaendige Zeichentabelle des Fonts ausdrucken
--help # Diese Hilfe anzeigen.
"
# ---------------------------------------------------------------------
# Parameter auswerten
# ---------------------------------------------------------------------
while [ $# -gt 0 ]
do
case "$1" in
--fontdir)
shift
case "$1" in
/*)
FontDir="$1"
;;
*)
echo "$Me: --fontdir erfordert einen absoluten Pfad als Argument!"
echo "$Aufruf"
exit 1
;;
esac
;;
--printer)
shift
case "$1" in
lp0|lp22)
Printer=$1
;;
*)
echo "$Me: Ungueltiger Druckername \"$1\"!"
echo "$Aufruf"
exit 1
;;
esac
;;
--showfont)
Mode_ShowFont="y"
;;
--help)
echo "$Zweck"
echo "$Aufruf"
exit 1
;;
-*)
echo "$0: Ungueltiger Parameter \"$1\"!"
echo "$Aufruf"
exit 1
;;
*)
FontName=$1
;;
esac
shift
done
# Passende Fonts suchen:
echo "$Me: Lade Fonts:"
/usr/bin/egrep -l "^FontName $FontName" $FontDir/afm/*.afm | while read FileName
do # fuer jeden passenden Font
# Fontnamen ermitteln:
/usr/bin/cat $FileName | /usr/bin/ud -u | /usr/bin/grep "^FontName" | read DUMMY FontName
FontFile=`basename $FileName`
FontFile=`echo $FontFile | /usr/bin/cut -d"." -f1`
FontFile=$FontFile.pfb
echo " " $FontName $FontFile ${Mode_ShowFont:+"(Zeichentabelle wird gedruckt)"}
# PS-Header fuer residentes Laden erzeugen
echo "%!PS-Adobe-2.0 ExitServer " > $OutFile
echo "%%BeginExitServer: 0 " >> $OutFile
echo "serverdict begin 0 exitserver " >> $OutFile
echo "%%EndExitServer " >> $OutFile
echo "% Test for existence of font, abort if present. " >> $OutFile
echo "% This won't work on a printer with a hard disk! " >> $OutFile
echo "/str 32 string def " >> $OutFile
echo "% Actual font name is substituted here: " >> $OutFile
echo "/$FontName dup FontDirectory exch known " >> $OutFile
echo "{ str cvs print ( is already loaded!\n) print flush quit }" >> $OutFile
echo "{ (loading font ) print str cvs print (\n) print flush } " >> $OutFile
echo "ifelse " >> $OutFile
echo "%% Font follows... " >> $OutFile
# binaeren Font in *.pfa-Format umwandeln
/usr/bin/cat $FontDir/$FontFile | /usr/local/bin/t1ascii 2> /dev/null >> $OutFile
echo "%%EOF" >> $OutFile
# Fonts laden:
/usr/bin/lpr -P $Printer $OutFile
# ggf. Zeichentabelle ausgeben:
if [ "$Mode_ShowFont" ]
then
/usr/bin/lpr -P $Printer <<EOF
%!
%%Creator: Eric Gisin <egisin at waterloo.csnet>
%%Title: Print font catalog
% Copyright (c) 1986 Eric Gisin
% Copyright (C) 1992 Aladdin Enterprises, Menlo Park, CA (ghost at aladdin.com)
% Modified to print all 256 encoded characters.
% Copyright (C) 1993 Aladdin Enterprises, Menlo Park, CA (ghost at aladdin.com)
% Modified to print unencoded characters.
% Copyright (C) 1994 Aladdin Enterprises, Menlo Park, CA (ghost at aladdin.com)
% Modified to always create 256-element Encoding vectors.
% Copyright (C) 1995 Aladdin Enterprises, Menlo Park, CA (ghost at aladdin.com)
% Modified to print more than 128 unencoded characters.
% Example usages at bottom of file
/#copies 1 def
/min { 2 copy gt { exch } if pop } bind def
/T6 /$FontName findfont 6 scalefont def
/Temp 64 string def
/Inch {72 mul} def
/Base 16 def % char code output base
/TempEncoding [ 256 { /.notdef } repeat ] def
% do single character of page
% output to rectangle ll=(0,-24) ur=(36,24)
/DoChar {
/C exch def
/S (_) dup 0 C put def
/N F /Encoding get C get def
% print code name, width and char name
/W F setfont S stringwidth pop def
T6 setfont
N /.notdef ne {0 -20 moveto N Temp cvs show} if
0 -12 moveto C Base Temp cvrs show ( ) show
W 0.0005 add Temp cvs 0 5 getinterval show
% print char with reference lines
N /.notdef ne {
3 0 translate
0 0 moveto F24 setfont N glyphshow
/W S stringwidth pop def
0 -6 moveto 0 24 lineto
W -6 moveto W 24 lineto
-3 0 moveto W 3 add 0 lineto
0 setlinewidth stroke
} if
} def
% print page title
/DoTitle {
/Times-Roman findfont 18 scalefont setfont
18 10.5 Inch moveto FName Temp cvs show ( ) show ((24 point)) show
} def
% print one block of characters
/DoBlock { % firstcode lastcode
/FirstCode 2 index def
1 exch {
/I exch def
/Xn I FirstCode sub 16 mod def /Yn I FirstCode sub 16 idiv def
gsave
Xn 36 mul 9 add Yn -56 mul 9.5 Inch add translate
I DoChar
grestore
} for
} def
% print a line of character
/DoLine { % firstcode lastcode
1 exch { (_) dup 0 3 index put show pop } for
} def
% print font sample page
/DoFont {
/FName exch def % font name
/F FName findfont def
/F24 F 24 scalefont def
/Line0 96 string def
/Line1 96 string def
% Display the first 128 encoded characters.
DoTitle (, characters 0-127) show
0 127 DoBlock
F 10 scalefont setfont
18 2.0 Inch moveto 0 63 DoLine
18 1.5 Inch moveto 64 127 DoLine
showpage
% Display the second 128 encoded characters.
DoTitle (, characters 128-255) show
128 255 DoBlock
F 10 scalefont setfont
18 2.0 Inch moveto 128 191 DoLine
18 1.5 Inch moveto 192 255 DoLine
showpage
F /FontType get 1 eq
{
% Find and display the unencoded characters.
/Encoded F /Encoding get length dict def
F /Encoding get { true Encoded 3 1 roll put } forall
/Unencoded [ F /CharStrings get
{ pop dup Encoded exch known { pop } if }
forall ] def
/Count Unencoded length def
% Print the unencoded characters in blocks of 128.
0 128 Unencoded length 1 sub
{ dup 128 add Unencoded length min 1 index sub
Unencoded 3 1 roll getinterval TempEncoding copy
/BlockEncoding exch def
/BlockCount BlockEncoding length def
save
F length dict F
{ 1 index /FID eq { pop pop } { 2 index 3 1 roll put } ifelse }
forall dup /Encoding TempEncoding put
/* exch definefont
/F exch def
/F24 F 24 scalefont def
DoTitle (, unencoded characters) show
0 BlockCount 1 sub DoBlock
F 10 scalefont setfont
18 2.0 Inch moveto 0 BlockCount 64 min 1 sub DoLine
BlockCount 64 gt
{ 18 1.5 Inch moveto 64 BlockCount 128 min 1 sub DoLine
}
if
showpage
restore
} for
}
if
} def
% Do font samples
% /Times-Roman DoFont % Test (less than a minute)
/$FontName DoFont
% /Hershey-Gothic-English DoFont % Test (8 minutes)
% Do a complete catalog
% FontDirectory {pop DoFont} forall % All fonts (quite a long time)
EOF
fi # --showfont
done # fuer jeden passenden Font
if [ -e $OutFile ]
then
/usr/bin/rm $OutFile
fi
Mehr Informationen über die Mailingliste Tustep-Liste