diff options
author | wkj <devnull@localhost> | 2004-05-16 07:54:22 +0000 |
---|---|---|
committer | wkj <devnull@localhost> | 2004-05-16 07:54:22 +0000 |
commit | b855148c9b6d28fedfd083d037bcf246f1913d92 (patch) | |
tree | 0075eb6ea37427fa48b78cb937fabc04175cead1 /src/cmd/postscript/psencoding | |
parent | 61f5c35c9465f0702739b41249a664d409f0482c (diff) | |
download | plan9port-b855148c9b6d28fedfd083d037bcf246f1913d92.tar.gz plan9port-b855148c9b6d28fedfd083d037bcf246f1913d92.tar.bz2 plan9port-b855148c9b6d28fedfd083d037bcf246f1913d92.zip |
Checkpoint.
Diffstat (limited to 'src/cmd/postscript/psencoding')
-rw-r--r-- | src/cmd/postscript/psencoding/.cvsignore | 1 | ||||
-rw-r--r-- | src/cmd/postscript/psencoding/Latin1.enc | 299 | ||||
-rw-r--r-- | src/cmd/postscript/psencoding/UTF.enc | 332 | ||||
-rw-r--r-- | src/cmd/postscript/psencoding/mkfile | 22 | ||||
-rw-r--r-- | src/cmd/postscript/psencoding/psencoding.rc | 39 |
5 files changed, 693 insertions, 0 deletions
diff --git a/src/cmd/postscript/psencoding/.cvsignore b/src/cmd/postscript/psencoding/.cvsignore new file mode 100644 index 00000000..7f441579 --- /dev/null +++ b/src/cmd/postscript/psencoding/.cvsignore @@ -0,0 +1 @@ +psencoding diff --git a/src/cmd/postscript/psencoding/Latin1.enc b/src/cmd/postscript/psencoding/Latin1.enc new file mode 100644 index 00000000..1e6e60b1 --- /dev/null +++ b/src/cmd/postscript/psencoding/Latin1.enc @@ -0,0 +1,299 @@ +% +% Encoding vector and redefinition of findfont for the ISO Latin1 standard. +% The 18 characters missing from ROM based fonts on older printers are noted +% below. +% + +/ISOLatin1Encoding [ + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /space + /exclam + /quotedbl + /numbersign + /dollar + /percent + /ampersand + /quoteright + /parenleft + /parenright + /asterisk + /plus + /comma + /minus + /period + /slash + /zero + /one + /two + /three + /four + /five + /six + /seven + /eight + /nine + /colon + /semicolon + /less + /equal + /greater + /question + /at + /A + /B + /C + /D + /E + /F + /G + /H + /I + /J + /K + /L + /M + /N + /O + /P + /Q + /R + /S + /T + /U + /V + /W + /X + /Y + /Z + /bracketleft + /backslash + /bracketright + /asciicircum + /underscore + /quoteleft + /a + /b + /c + /d + /e + /f + /g + /h + /i + /j + /k + /l + /m + /n + /o + /p + /q + /r + /s + /t + /u + /v + /w + /x + /y + /z + /braceleft + /bar + /braceright + /asciitilde + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /dotlessi + /grave + /acute + /circumflex + /tilde + /macron + /breve + /dotaccent + /dieresis + /.notdef + /ring + /cedilla + /.notdef + /hungarumlaut + /ogonek + /caron + /space + /exclamdown + /cent + /sterling + /currency + /yen + /brokenbar % missing + /section + /dieresis + /copyright + /ordfeminine + /guillemotleft + /logicalnot + /hyphen + /registered + /macron + /degree % missing + /plusminus % missing + /twosuperior % missing + /threesuperior % missing + /acute + /mu % missing + /paragraph + /periodcentered + /cedilla + /onesuperior % missing + /ordmasculine + /guillemotright + /onequarter % missing + /onehalf % missing + /threequarters % missing + /questiondown + /Agrave + /Aacute + /Acircumflex + /Atilde + /Adieresis + /Aring + /AE + /Ccedilla + /Egrave + /Eacute + /Ecircumflex + /Edieresis + /Igrave + /Iacute + /Icircumflex + /Idieresis + /Eth % missing + /Ntilde + /Ograve + /Oacute + /Ocircumflex + /Otilde + /Odieresis + /multiply % missing + /Oslash + /Ugrave + /Uacute + /Ucircumflex + /Udieresis + /Yacute % missing + /Thorn % missing + /germandbls + /agrave + /aacute + /acircumflex + /atilde + /adieresis + /aring + /ae + /ccedilla + /egrave + /eacute + /ecircumflex + /edieresis + /igrave + /iacute + /icircumflex + /idieresis + /eth % missing + /ntilde + /ograve + /oacute + /ocircumflex + /otilde + /odieresis + /divide % missing + /oslash + /ugrave + /uacute + /ucircumflex + /udieresis + /yacute % missing + /thorn % missing + /ydieresis +] def + +/NewFontDirectory FontDirectory maxlength dict def + +% +% Apparently no guarantee findfont is defined in systemdict so the obvious +% +% systemdict /findfont get exec +% +% can generate an error. So far the only exception is a VT600 (version 48.0). +% + +userdict /@RealFindfont known not { + userdict begin + /@RealFindfont systemdict begin /findfont load end def + end +} if + +/findfont { + dup NewFontDirectory exch known not { + dup + %dup systemdict /findfont get exec % not always in systemdict + dup userdict /@RealFindfont get exec + dup /Encoding get StandardEncoding eq { + dup length dict begin + {1 index /FID ne {def}{pop pop} ifelse} forall + /Encoding ISOLatin1Encoding def + currentdict + end + /DummyFontName exch definefont + } if + NewFontDirectory 3 1 roll put + } if + NewFontDirectory exch get +} bind def + diff --git a/src/cmd/postscript/psencoding/UTF.enc b/src/cmd/postscript/psencoding/UTF.enc new file mode 100644 index 00000000..234764e3 --- /dev/null +++ b/src/cmd/postscript/psencoding/UTF.enc @@ -0,0 +1,332 @@ +% +% Encoding vector, operator and procedure redefinitions for Plan 9 UTF +% encoding. Prologues are expected to take steps to ensure operator +% redefinitions given here are actually used. Current implementation +% assumes UTF byte streams that represent ASCII or Latin1 text. +% + +/UTFLatin1Encoding [ + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /space + /exclam + /quotedbl + /numbersign + /dollar + /percent + /ampersand + /quoteright + /parenleft + /parenright + /asterisk + /plus + /comma + /minus + /period + /slash + /zero + /one + /two + /three + /four + /five + /six + /seven + /eight + /nine + /colon + /semicolon + /less + /equal + /greater + /question + /at + /A + /B + /C + /D + /E + /F + /G + /H + /I + /J + /K + /L + /M + /N + /O + /P + /Q + /R + /S + /T + /U + /V + /W + /X + /Y + /Z + /bracketleft + /backslash + /bracketright + /asciicircum + /underscore + /quoteleft + /a + /b + /c + /d + /e + /f + /g + /h + /i + /j + /k + /l + /m + /n + /o + /p + /q + /r + /s + /t + /u + /v + /w + /x + /y + /z + /braceleft + /bar + /braceright + /asciitilde + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /dotlessi + /grave + /acute + /circumflex + /tilde + /macron + /breve + /dotaccent + /dieresis + /.notdef + /ring + /cedilla + /.notdef + /hungarumlaut + /ogonek + /caron + /.notdef % was space + /exclamdown + /cent + /sterling + /currency + /yen + /brokenbar + /section + /dieresis + /copyright + /ordfeminine + /guillemotleft + /logicalnot + /hyphen + /registered + /macron + /degree + /plusminus + /twosuperior + /threesuperior + /acute + /mu + /paragraph + /periodcentered + /cedilla + /onesuperior + /ordmasculine + /guillemotright + /onequarter + /onehalf + /threequarters + /questiondown + /Agrave + /Aacute + /Acircumflex + /Atilde + /Adieresis + /Aring + /AE + /Ccedilla + /Egrave + /Eacute + /Ecircumflex + /Edieresis + /Igrave + /Iacute + /Icircumflex + /Idieresis + /Eth + /Ntilde + /Ograve + /Oacute + /Ocircumflex + /Otilde + /Odieresis + /multiply + /Oslash + /Ugrave + /Uacute + /Ucircumflex + /Udieresis + /Yacute + /Thorn + /germandbls + /agrave + /aacute + /acircumflex + /atilde + /adieresis + /aring + /ae + /ccedilla + /egrave + /eacute + /ecircumflex + /edieresis + /igrave + /iacute + /icircumflex + /idieresis + /eth + /ntilde + /ograve + /oacute + /ocircumflex + /otilde + /odieresis + /divide + /oslash + /ugrave + /uacute + /ucircumflex + /udieresis + /yacute + /thorn + /ydieresis +] def + +/NewFontDirectory FontDirectory maxlength dict def + +% +% Apparently no guarantee findfont is defined in systemdict so the obvious +% +% systemdict /findfont get exec +% +% can generate an error. So far the only exception is a VT600 (version 48.0). +% + +userdict /@RealFindfont known not { + userdict begin + /@RealFindfont systemdict begin /findfont load end def + end +} if + +/findfont { + dup NewFontDirectory exch known not { + dup + %dup systemdict /findfont get exec % not always in systemdict + dup userdict /@RealFindfont get exec + dup /Encoding get StandardEncoding eq { + dup length 1 add dict begin + {1 index /FID ne {def}{pop pop} ifelse} forall + /Encoding UTFLatin1Encoding def + /Metrics 1 dict def + Metrics /.notdef 0 put + currentdict + end + /DummyFontName exch definefont + } if + NewFontDirectory 3 1 roll put + } if + NewFontDirectory exch get +} bind def + +% +% Assume A0, except for A0A0 which is replaced by 20A0, can be ignored. +% Works with ASCII or Latin1 because A0 has been re-encoded as a zero +% width non-printing character. +% + +/UTFstring { + dup { + (\240\240) search { + pop + 0 16#20 put + }{pop exit} ifelse + } loop +} bind def + +/ashow {mark 4 1 roll UTFstring //ashow cvx exec cleartomark} bind def +/awidthshow {mark 7 1 roll UTFstring //awidthshow cvx exec cleartomark} bind def +/show {mark exch UTFstring //show cvx exec cleartomark} bind def +/stringwidth {UTFstring //stringwidth cvx exec} bind def +/widthshow {mark 5 1 roll UTFstring //widthshow cvx exec cleartomark} bind def + +% +% kshow is harder - stack can't change because of the procedure. +% + +/kshow dup load type /operatortype eq + {{UTFstring kshow} bind} + {{UTFstring //kshow cvx exec} bind} +ifelse def + diff --git a/src/cmd/postscript/psencoding/mkfile b/src/cmd/postscript/psencoding/mkfile new file mode 100644 index 00000000..eaceebdb --- /dev/null +++ b/src/cmd/postscript/psencoding/mkfile @@ -0,0 +1,22 @@ +</$objtype/mkfile + +<../config + +POSTBIN=$ROOT/rc/bin/postscript + +all:V: psencoding + +install installall:V: $POSTBIN/psencoding $POSTLIB/Latin1.enc $POSTLIB/UTF.enc + +clean nuke:V: + rm -f psencoding + +$POSTBIN/psencoding: psencoding + cp $prereq $target + +$POSTLIB/%.enc: %.enc + cp $prereq $target + +psencoding: psencoding.rc + sed 's?^POSTLIB=.*?POSTLIB='$POSTLIB'?' psencoding.rc >psencoding + chmod 775 psencoding diff --git a/src/cmd/postscript/psencoding/psencoding.rc b/src/cmd/postscript/psencoding/psencoding.rc new file mode 100644 index 00000000..c0b6aeff --- /dev/null +++ b/src/cmd/postscript/psencoding/psencoding.rc @@ -0,0 +1,39 @@ +#!/bin/rc +# Trivial script for checking and setting the default PostScript font +# encoding. Changing the default assumes you can write in $POSTLIB. +# Available font encodings are files in $POSTLIB that end in .enc. +# The default is $POSTLIB/Default.enc. +# + +POSTLIB=/sys/lib/postscript/prologues +DEFAULT=Default.enc +CURRENTDEFAULT=Standard + +if (~ $#* 0) { + cd $POSTLIB + for (i in *.enc) { + if (test -f $i -a $i '!=' $DEFAULT) { + NAME=`{echo $i | sed s/\\.enc//} + if (cmp $i $DEFAULT >/dev/null >[2]/dev/null) { + CURRENTDEFAULT=$NAME + } + echo $NAME + } + } + echo Standard + echo Default'='$CURRENTDEFAULT +} +if not { + switch ($1) { + case Default + ; + case Standard + rm -f $POSTLIB/$DEFAULT + case * + if (test -f $POSTLIB/$1.enc) { + rm -f $POSTLIB/$DEFAULT + cp $POSTLIB/$1.enc $POSTLIB/$DEFAULT + } + if not echo unrecognized encoding name $1 >[1=2] + } +} |