Difference between revisions of "Russian"

From Wiki
Jump to navigation Jump to search
m
 
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
< [[Fonts]] | [[Encodings and Regimes]] >
+
To use Russian in ConTeXt MkIV, you need a font that has cyrillic letters, e.g. the DejaVu fonts which are shipped with the [[ConTeXt Standalone]].
  
== Using cyrillic with ConTeXt MkIV ==
+
<context source="yes" mode="mkiv">
 +
\setupbodyfont[dejavu]
  
'''''Note:''''' ''The examples in this section were tested on recent (2008-10) ConTeXt minimals. If something does not work as written feel free to change them.''
+
\mainlanguage[russian]
  
After installing the latest and greatest ConTeXt distribution and especially while trying to use MkiV you may notice that your old typescript definitions does not work anymore. For guidance about adjusting typescripts see upcoming ConTeXt manual (especially chapters about [http://context.aanhet.net/svn/contextman/context-reference/en/co-fonts.pdf fonts] and [http://context.aanhet.net/svn/contextman/context-reference/en/co-typography.pdf typography]). Here are examples for writing cyrillic using only fonts that comes with ConTeXt. For quick start try:
 
 
<texcode>
 
\usetypescript[postscript]
 
\setupbodyfont[postscript,10pt]
 
 
\starttext
 
\starttext
 
Немного русского текста для пробы.
 
Немного русского текста для пробы.
 
\stoptext
 
\stoptext
</texcode>
+
</context>
 
 
Please note that in ConTeXt MkIV UTF-8 input encoding is the default, so writing <code>\enableregime[utf]</code> is no longer necessary.
 
 
 
Nowadays the ConTeXt minimals distribution includes [[TeX Gyre]] fonts. Most of them contain cyrillic characters and all low-level mappings are already predefined (see [[source:type-otf.tex|type-otf.tex]]), so to use TeX Gyre fonts a few simple typeface definitions would suffice.
 
 
 
<texcode>
 
\starttypescript[gyre]
 
\definetypeface [gyre-pala] [rm] [serif] [pagella]
 
\definetypeface [gyre-pala] [ss] [sans]  [heros]
 
\definetypeface [gyre-pala] [tt] [mono]  [courier]
 
\definetypeface [gyre-pala] [mm] [math]  [palatino]
 
 
 
\definetypeface [gyre-book] [rm] [serif] [bonum]
 
\definetypeface [gyre-book] [ss] [sans]  [adventor]
 
\definetypeface [gyre-book] [tt] [mono]  [courier]
 
\definetypeface [gyre-book] [mm] [math]  [palatino]
 
\stoptypescript
 
 
 
\definetypeface [gyre-schol] [rm] [serif] [schola]
 
\definetypeface [gyre-schol] [ss] [sans]  [adventor]
 
\definetypeface [gyre-schol] [tt] [mono]  [courier]
 
\definetypeface [gyre-schol] [mm] [math]  [palatino]
 
\stoptypescript
 
 
 
\definetypeface [gyre-termes] [rm] [serif] [termes]
 
\definetypeface [gyre-termes] [ss] [sans]  [adventor]
 
\definetypeface [gyre-termes] [tt] [mono]  [courier]
 
\definetypeface [gyre-termes] [mm] [math]  [palatino]
 
 
 
\definetypeface [gyre-pala] [rm] [serif] [pagella]
 
\definetypeface [gyre-pala] [ss] [sans]  [heros]
 
\definetypeface [gyre-pala] [tt] [mono]  [courier]
 
\definetypeface [gyre-pala] [mm] [math]  [palatino]
 
\stoptypescript
 
</texcode>
 
 
 
''If someone tell me why small-caps doesn't work with these definitions, this would be perfect!''
 
 
 
Put these in <code>type-loc.tex</code> file, place it somewhere luatex can find it (texml-local tree is a good candidate), regenerate filename cache (<code>luatools --generate</code>), and use as:
 
 
 
<texcode>
 
\usetypescript[gyre]
 
\setupbodyfont[gyre-pala] % can be gyre-termes, gyre-book, etc.
 
\startext
 
Ещё немного кириллицы.
 
\stoptext
 
</texcode>
 
 
 
Note that I don't use cursor font here as it seem to not have cyrillic characters. If you don't like these combinations modify the definitions as you see fit.
 
 
 
For complete russian language typesetting a few adjustments to config files are needed:
 
 
 
* Uncomment <code>\installlanguage [\s!ru] [\c!state=\v!start]</code> in [[source:cont-usr.tex|cont-usr.tex]] (can be found in tex/texmf-context/tex/context/config in minimals.
 
* Add <code>\input lang-cyr</code> somewhere in [[source:cont-usr.tex|cont-usr.tex]] (for russian month names, translated labels like "table of contents", etc.; found in tex/texmf-context/tex/context/user in minimals).
 
* Don't forget to change your language in documents (<code>\mainlanguage[ru]</code> for mainly russian documents).
 
 
 
== Russian (Cyrillic) fonts and UTF ==
 
 
 
It is now possible (from ConTeXt version [[Context 2005.01.26|2005.01.26]] or [[Context 2005.01.31|2005-01-31]]) to type Russian (cyrillic) letters directly in your .tex file using UTF-8 encoding. I have only tested this on TeXLive 2004, but I guess it would work on any distribution as long as you have the cm-super fonts installed (On TeXLive you had to generate the tfm files needed using the <tt>afm2tfm</tt> application (see furhter down on this page for a small python script that enables you to create all tfm files), or by using the fonts in LaTeX). Here is a minimal(?) working file.
 
 
 
<texcode>
 
\enableregime[utf]
 
\useencoding[cyr]
 
 
 
\definetypeface [russian]
 
  [rm] [serif] [computer-modern] [default] [encoding=t2a]
 
 
 
\setupbodyfont[russian]
 
\starttext
 
Мама и Папа % Some Russian characters
 
\stoptext
 
</texcode>
 
 
 
== Russian (Cyrillic) fonts and Windows 1251 ==
 
 
 
The following example should work if you save your file in the Windows 1251 encoding:
 
 
 
<texcode>
 
\definetypeface [russian]
 
  [rm] [serif] [computer-modern] [default] [encoding=t2a]
 
 
 
\definetypeface [swedish]
 
  [rm] [serif] [latin-modern] [default] [encoding=texnansi]
 
\setupbodyfont[russian]
 
 
 
\starttext
 
Some russian text:
 
Там можно встретить медведей.
 
 
 
Some swedish text:
 
{\switchtobodyfont[swedish]D\"ar kan man m\"ota bj\"ornar.}
 
 
 
\stoptext
 
</texcode>
 
 
 
At least it works here with TeXLive 2004.
 
 
 
== Russian (Cyrillic) fonts and koi8-r (koi8r) ==
 
For koi8-r input encoding try this:
 
 
 
<texcode>
 
\useregime[cyr] % loads input regimes
 
\enableregime[koi8-r]
 
 
 
\starttext
 
Тест кои8-р текста.
 
\stoptext
 
</texcode>
 
 
 
For this example to work you need some cyrillic fonts, which is not included in default ConTeXt distribution. AFAIK cm-super is one of the most comprehensive cyrillic font packages. It can replace most fonts in cont-lmt. There is also small type1 font package pscyr.
 
 
 
If you have one of these, you need to add this before \starttext:
 
 
 
For cm-super try:
 
 
 
<texcode>
 
\usetypescript[modern-base][t2a] % switch default typescipt
 
\setupbodyfont[modern]
 
</texcode>
 
 
 
or for pscyr:
 
 
 
<texcode>
 
\usetypescript[pscyr][t2a]
 
\setupbodyfont[pscyr]
 
</texcode>
 
 
 
But you need to make sure that all typescript definitions are in place.
 
 
 
Example typescript for PSCyr can be downloaded from [http://radhelorn.freeownhost.com/files/type-pscyr.tex http://radhelorn.freeownhost.com/files/type-pscyr.tex]. Place it in the same dir as your tex file or in ConTeXt user directory and add this command before setting typescripts:
 
 
 
<texcode>
 
\usetypescriptfile[type-pscyr]
 
</texcode>
 
 
 
If all files is on their places this should work "out of the box".
 
 
 
== The python script ==
 
Ok, I am not a programmer, so this could probably be done in a cleaner way. However, it works for me.
 
(A bit enhanced/modernized now...)
 
 
 
<pre>
 
#!/usr/bin/python
 
import os
 
 
 
# Set these paths to what they should be in your case
 
mapfile="/texmf/fonts/map/dvips/cm-super/cm-super-t2a.map"
 
encfile="cm-super-t2a.enc"
 
tfmoutdir="/texmf/fonts/tfm/public/cm-super/"
 
 
 
f=file(mapfile, 'rU')
 
 
 
# First read a line that is a comment.
 
a=f.readline()
 
print a
 
  
# Loop over the rest of the lines
 
for currentline in f:
 
  splitspace= currentline.split(" ")
 
  tfmname=splitspace[0]
 
  afmname=splitspace[1].lower()
 
  commandtorun= "afm2tfm %s.afm -T %s %s%s.tfm" % (afmname, encfile, tfmoutdir, tfmname)
 
  print "Running: " + commandtorun
 
  os.popen(commandtorun)
 
  
f.close()
+
For more details on how to change fonts in ConTeXt, see [[Fonts in LuaTeX]]
</pre>
 
  
== External Links ==
 
* [http://www.latkey.com/translit Russian Transliteration] - Russian translit free online transliteration service for Microsoft Office and Internet Explorer
 
  
 
[[Category:Fonts]]
 
[[Category:Fonts]]
[[Category:International]]
+
[[Category:Languages]]

Latest revision as of 12:23, 8 June 2020

To use Russian in ConTeXt MkIV, you need a font that has cyrillic letters, e.g. the DejaVu fonts which are shipped with the ConTeXt Standalone.

\setupbodyfont[dejavu]

\mainlanguage[russian]

\starttext
Немного русского текста для пробы.
\stoptext


For more details on how to change fonts in ConTeXt, see Fonts in LuaTeX