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.