home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Columbia Kermit
/
kermit.zip
/
archives
/
scribe.zip
/
cyrgot.doc
< prev
next >
Wrap
Text File
|
1992-06-01
|
5KB
|
129 lines
CYRILLIC CHARACTERS IN SCRIBE
F. da Cruz, Columbia University, May 1991
This is a stopgap measure for Scribe 7(1700). A Postscript Cyrillic font
called CyrillicGothic was done by Jay Sekora at Princeton University. It
contains all the characters of ISO 8859-5 except one (paragraph sign), plus
many more from Old Church Slavonic, etc.
It is a sans-serif font. There are no bold, slanted, fixed-width, or other
renditions available from Scribe (but you can get these effects on the Mac).
Here is a crude mechanism allowing you to print these characters from within
Scribe. It works only for the Postscript device. Include these at the
beginning of your .mss file:
@make(text) (or whatever)
@device(postscript)
@style(fontfamily=timescyrillic)
@define(X,facecode C,tabexport)
@define(XY,facecode D,tabexport)
(You can call these environments whatever you want, as long as their names
don't conflict with anything else you might be using in the Scribe database.)
The TimesCyrillic fontfamily is exactly like TimesRoman except with facecodes
C and D added to give you Cyrillic characters. To access the common (e.g.
Russian) Cyrillic characters, use the X environment:
The Russian word for Kermit is @x(Kermit)
No, the X environment doesn't really translate English into Russian... But
most letters are mapped approximately to their phonetic equivalents, using a
transliteration system similar (but not identical) to Short KOI.
The character size is automatically adjusted according to the size of the
current environment. To print Cyrillic characters in explicitly selected
sizes, use the "size" qualifier, e.g.:
@begin(x,size +10)
Proletarii Vsex Stran, Soedinqjtec[
@end(x)
Or define environments for the needed sizes:
@define(X9,facecode C,size 9,tabexport)
FILES
cyrgot.doc: This file.
cyrgot-sample.mss: Cyrillic character table, Scribe input file.
cyrgot-sample.ps: Cyrillic character table, Postscript version, print on
Laserwriter.
cyrgot-sample.c: C program to generate cyrgot-sample.mss.
cyrgot-latin.mss: ISO 8859-5 Latin/Cyrillic character table, Scribe input.
cyrgot-latin.ps: ISO 8859-5 Latin/Cyrillic character table, Postscript,
print on Laserwriter.
CyrillicGothic: The PostScript definition for the CyrillicGothic font. Must
be prepended to Scribe's .ps output before printing.
timesc.fon: A modified version of timesr.fon that contains definitions
for facecodes C and D (PostScript only).
cyrgot.raw: The Cyrillic Gothic rawfont file (defines each character and its
width).
cyrgot.fon: Associates facecodes C and D with the following Typecase files:
cyrgot.typ: Typecase file for facecode C (most common Cyrillic characters).
cyrgup.typ: Typecase file for facecode D (uncommon Cyrillic characters).
PRINTING
You can't print a TimesCyrillic .ps "bare" because the Laserwriter does not
contain the CyrillicGothic font. You have to download the font definition
AS PART OF THE SAME PRINT JOB, for example:
cat CyrillicGothic cyrgot-sample.ps | lpr
or
cat CyrillicGothic cyrgot-latin.ps >> foo.ps ; lpr foo.ps
Printing must be done this way because the Unix print spoolers reinitialize
the Laserwriter upon each job, thus clearing out the Cyrillic font. If you
don't download the CyrillicGothic font, the Cyrillic characters come out as
Courier, and (of course) with the wrong widths.
IMPLEMENTATION NOTES
Two separate facecodes are necessary because the CyrillicGothic font is an
8-bit font, but you can't use 8-bit values in Scribe source files. Thus the
font had to be split in half, using facecode C (environment X) for the common
(i.e. modern Russian, Ukrainian, Bielorussian, etc) Cyrillic characters, and
facecode D (environment XY) for the less common one (Serbocroation,
Macedonian, Old Church Slavonic, etc). The only character you'll need from
facecode for modern Russian is E with diaeresis (upper and lower case).
I tried creating a CYRGOT.LIB file that inserted the text of the
CyrillicGothic file into Scribe's .ps-file output as a DeviceInitialization
string so that the .ps file could be printed by itself, but then printing
didn't work at all.
The problem is that whenever you specify a DeviceInitialization string, it
replaces Scribe's normal one from POSTSC.DEV. ACCENT.LIB gets around this by
including a copy of Scribe's normal PS code before its own code. I could have
made a CYRGOT.LIB that did the same thing, but then we'd have to choose
between ACCENTS and CYRGOT -- we couldn't have both. It would be nice if
Scribe gave a way to append to, rather than replace, device initialization
strings (idea -- maybe use @PICTURE to insert raw Postscript?).
Btw, at first I used facecodes X and Y, but later discovered that Y conflicted
with the facecode used for "PsPubSerif", so that bullets in Itemize lists came
out as Uppercase Cyrillic Dze. I changed the facecodes to C and D, which are
otherwise unused in TimesRoman, and are also unused by the Math and Accents
libraries. Also, the original environment name for selecting facecode Y/D was
simply Y, but that turned out to be a bad choice because postscr.dev defines
this environment already (as Facecode Y), thus the change to XY.