home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / archives / scribe.zip / cyrgot.doc < prev    next >
Text File  |  1992-06-01  |  5KB  |  129 lines

  1. CYRILLIC CHARACTERS IN SCRIBE
  2.  
  3.  
  4.   F. da Cruz, Columbia University, May 1991
  5.  
  6.  
  7. This is a stopgap measure for Scribe 7(1700).  A Postscript Cyrillic font
  8. called CyrillicGothic was done by Jay Sekora at Princeton University.  It
  9. contains all the characters of ISO 8859-5 except one (paragraph sign), plus
  10. many more from Old Church Slavonic, etc.
  11.  
  12. It is a sans-serif font.  There are no bold, slanted, fixed-width, or other
  13. renditions available from Scribe (but you can get these effects on the Mac).
  14. Here is a crude mechanism allowing you to print these characters from within
  15. Scribe.  It works only for the Postscript device.  Include these at the
  16. beginning of your .mss file:
  17.  
  18.   @make(text) (or whatever)
  19.   @device(postscript)
  20.   @style(fontfamily=timescyrillic)
  21.  
  22.   @define(X,facecode C,tabexport)
  23.   @define(XY,facecode D,tabexport)
  24.  
  25. (You can call these environments whatever you want, as long as their names
  26. don't conflict with anything else you might be using in the Scribe database.)
  27.  
  28. The TimesCyrillic fontfamily is exactly like TimesRoman except with facecodes
  29. C and D added to give you Cyrillic characters.  To access the common (e.g.
  30. Russian) Cyrillic characters, use the X environment:
  31.  
  32.   The Russian word for Kermit is @x(Kermit)
  33.  
  34. No, the X environment doesn't really translate English into Russian...  But
  35. most letters are mapped approximately to their phonetic equivalents, using a
  36. transliteration system similar (but not identical) to Short KOI.
  37.  
  38. The character size is automatically adjusted according to the size of the
  39. current environment.  To print Cyrillic characters in explicitly selected
  40. sizes, use the "size" qualifier, e.g.:
  41.  
  42.   @begin(x,size +10)
  43.   Proletarii Vsex Stran, Soedinqjtec[
  44.   @end(x)
  45.  
  46. Or define environments for the needed sizes:
  47.  
  48.   @define(X9,facecode C,size 9,tabexport)
  49.  
  50.  
  51. FILES
  52.  
  53. cyrgot.doc:  This file.
  54.  
  55. cyrgot-sample.mss: Cyrillic character table, Scribe input file.
  56.  
  57. cyrgot-sample.ps: Cyrillic character table, Postscript version, print on
  58. Laserwriter.
  59.  
  60. cyrgot-sample.c: C program to generate cyrgot-sample.mss.
  61.  
  62. cyrgot-latin.mss: ISO 8859-5 Latin/Cyrillic character table, Scribe input.
  63.  
  64. cyrgot-latin.ps: ISO 8859-5 Latin/Cyrillic character table, Postscript,
  65. print on Laserwriter.
  66.  
  67. CyrillicGothic: The PostScript definition for the CyrillicGothic font.  Must
  68. be prepended to Scribe's .ps output before printing.
  69.  
  70. timesc.fon:  A modified version of timesr.fon that contains definitions
  71. for facecodes C and D (PostScript only).
  72.  
  73. cyrgot.raw: The Cyrillic Gothic rawfont file (defines each character and its
  74. width).
  75.  
  76. cyrgot.fon: Associates facecodes C and D with the following Typecase files:
  77.  
  78. cyrgot.typ: Typecase file for facecode C (most common Cyrillic characters).
  79.  
  80. cyrgup.typ: Typecase file for facecode D (uncommon Cyrillic characters).
  81.  
  82.  
  83. PRINTING
  84.  
  85. You can't print a TimesCyrillic .ps "bare" because the Laserwriter does not
  86. contain the CyrillicGothic font.  You have to download the font definition
  87. AS PART OF THE SAME PRINT JOB, for example:
  88.  
  89.   cat CyrillicGothic cyrgot-sample.ps | lpr
  90. or
  91.   cat CyrillicGothic cyrgot-latin.ps >> foo.ps ; lpr foo.ps
  92.  
  93. Printing must be done this way because the Unix print spoolers reinitialize
  94. the Laserwriter upon each job, thus clearing out the Cyrillic font.  If you
  95. don't download the CyrillicGothic font, the Cyrillic characters come out as
  96. Courier, and (of course) with the wrong widths.
  97.  
  98.  
  99. IMPLEMENTATION NOTES
  100.  
  101. Two separate facecodes are necessary because the CyrillicGothic font is an
  102. 8-bit font, but you can't use 8-bit values in Scribe source files.  Thus the
  103. font had to be split in half, using facecode C (environment X) for the common
  104. (i.e.  modern Russian, Ukrainian, Bielorussian, etc) Cyrillic characters, and
  105. facecode D (environment XY) for the less common one (Serbocroation,
  106. Macedonian, Old Church Slavonic, etc).  The only character you'll need from
  107. facecode for modern Russian is E with diaeresis (upper and lower case).
  108.  
  109. I tried creating a CYRGOT.LIB file that inserted the text of the
  110. CyrillicGothic file into Scribe's .ps-file output as a DeviceInitialization
  111. string so that the .ps file could be printed by itself, but then printing
  112. didn't work at all.
  113.  
  114. The problem is that whenever you specify a DeviceInitialization string, it
  115. replaces Scribe's normal one from POSTSC.DEV.  ACCENT.LIB gets around this by
  116. including a copy of Scribe's normal PS code before its own code.  I could have
  117. made a CYRGOT.LIB that did the same thing, but then we'd have to choose
  118. between ACCENTS and CYRGOT -- we couldn't have both.  It would be nice if
  119. Scribe gave a way to append to, rather than replace, device initialization
  120. strings (idea -- maybe use @PICTURE to insert raw Postscript?).
  121.  
  122. Btw, at first I used facecodes X and Y, but later discovered that Y conflicted
  123. with the facecode used for "PsPubSerif", so that bullets in Itemize lists came
  124. out as Uppercase Cyrillic Dze.  I changed the facecodes to C and D, which are
  125. otherwise unused in TimesRoman, and are also unused by the Math and Accents
  126. libraries.  Also, the original environment name for selecting facecode Y/D was
  127. simply Y, but that turned out to be a bad choice because postscr.dev defines
  128. this environment already (as Facecode Y), thus the change to XY.
  129.