Difference between revisions of "Arabic and Hebrew"

From Wiki
Jump to navigation Jump to search
Line 5: Line 5:
 
== Arabic ==
 
== Arabic ==
  
This is an example style file for typesetting Arabic documents.
+
This is an example style file for typesetting Arabic documents. Save it as "ara-sty.tex" and "\include ara-sty" in your document.
  
 
<texcode>
 
<texcode>
Line 11: Line 11:
 
\mainlanguage[arabic]
 
\mainlanguage[arabic]
  
% Font
+
% Font setup
 +
 
 
\definefontfeature
 
\definefontfeature
 
   [arabic]
 
   [arabic]
Line 44: Line 45:
 
\def\LatinTextDir    {\textdir TLT}
 
\def\LatinTextDir    {\textdir TLT}
 
\def\LatinGlobalDir  {\pagedir TLT\bodydir TLT\pardir TLT\textdir TLT}
 
\def\LatinGlobalDir  {\pagedir TLT\bodydir TLT\pardir TLT\textdir TLT}
 +
 +
\define\setarabic
 +
  {\ArabicGlobalDir%
 +
  \usetypescript[Arabic]%
 +
  \setupbodyfont[Arabic,20pt]}
  
 
\definestartstop
 
\definestartstop
Line 52: Line 58:
 
   {{\Arabic\ArabicTextDir#1}}
 
   {{\Arabic\ArabicTextDir#1}}
  
\define\setArabic
+
\define\setlatin
 +
  {\LatinGlobalDir%
 +
  \usetypescript[lm]%
 +
  \setupbodyfont[lm,20pt]}
 +
 
 +
\definestartstop
 +
  [latinpar]
 +
  [commands=\Arabic\LatinParDir]
 +
 
 +
\define[1]\LT
 +
  {{\LatinTextDir#1}}
 +
 
 +
\setcharactermirroring[1]
 +
</texcode>
 +
 
 +
Here is some discription.
 +
 
 +
<texcode>
 +
% engine=luatex
 +
</texcode>
 +
 
 +
This tells ConTeXt to use [[luatex]] as TeX engine, this mandatory for this example to work.
 +
 
 +
<texcode>
 +
\mainlanguage[arabic]
 +
</texcode>
 +
 
 +
Sets the main language to Arabic, so that translatable titles are translated to Arabic.
 +
 
 +
<texcode>
 +
\definefontfeature
 +
  [arabic]
 +
  [mode=node,language=dflt,script=arab,
 +
    init=yes,medi=yes,fina=yes,isol=yes,
 +
    liga=yes,dlig=yes,rlig=yes,clig=yes,
 +
    mark=yes,mkmk=yes,kern=yes,curs=yes]
 +
</texcode>
 +
 
 +
Here we define OpenType font features needed to render Arabic properly.
 +
 
 +
<texcode>
 +
\starttypescript [serif] [arabic]
 +
\definefontsynonym [Arabic-Light]      [name:arabtype] [features=arabic]
 +
\definefontsynonym [Arabic-Bold]        [name:arabtype] [features=arabic]
 +
\definefontsynonym [Arabic-Italic]      [name:arabtype] [features=arabic]
 +
\definefontsynonym [Arabic-Bold-Italic] [name:arabtype] [features=arabic]
 +
\stoptypescript
 +
 
 +
\starttypescript [serif] [arabic] [name]
 +
\usetypescript[serif][fallback]
 +
\definefontsynonym [Serif]          [Arabic-Light]      [features=arabic]
 +
\definefontsynonym [SerifItalic]    [Arabic-Italic]      [features=arabic]
 +
\definefontsynonym [SerifBold]      [Arabic-Bold]        [features=arabic]
 +
\definefontsynonym [SerifBoldItalic] [Arabic-Bold-Italic] [features=arabic]
 +
\stoptypescript
 +
 
 +
\starttypescript [Arabic]
 +
  \definetypeface [Arabic] [rm] [serif] [arabic] [default]
 +
\stoptypescript
 +
</texcode>
 +
 
 +
Then, we define "Arabic" typescript, here we used a font named "arabtype". Since this font has only regular weight, we set bold and italic to use the same font.
 +
 
 +
<texcode>
 +
\def\ArabicGlobalDir {\pagedir TRT\bodydir TRT\pardir TRT\textdir TRT}
 +
\def\ArabicParDir    {\textdir TRT\pardir TRT}
 +
\def\ArabicTextDir  {\textdir TRT}
 +
\def\LatinParDir    {\textdir TLT\pardir TLT}
 +
\def\LatinTextDir    {\textdir TLT}
 +
\def\LatinGlobalDir  {\pagedir TLT\bodydir TLT\pardir TLT\textdir TLT}
 +
</texcode>
 +
 
 +
Here we define some directional commands to use it in the next parts.
 +
 
 +
<texcode>
 +
\define\setarabic
 
   {\ArabicGlobalDir%
 
   {\ArabicGlobalDir%
 
   \usetypescript[Arabic]%
 
   \usetypescript[Arabic]%
 
   \setupbodyfont[Arabic,20pt]}
 
   \setupbodyfont[Arabic,20pt]}
 +
 +
\definestartstop
 +
  [arabicpar]
 +
  [commands=\Arabic\ArabicParDir]
 +
 +
\define[1]\AR
 +
  {{\Arabic\ArabicTextDir#1}}
 +
 +
</texcode>
 +
 +
Here we define "arabicpar" environment for Arabic paragraphs in Latin context, and "\AR" for short Arabic sentences and "\setarabic" command to set the main document direction and font to Arabic.
 +
 +
<texcode>
 +
\define\setlatin
 +
  {\LatinGlobalDir%
 +
  \usetypescript[lm]%
 +
  \setupbodyfont[lm,20pt]}
  
 
\definestartstop
 
\definestartstop
Line 63: Line 161:
 
\define[1]\LT
 
\define[1]\LT
 
   {{\LatinTextDir#1}}
 
   {{\LatinTextDir#1}}
 +
</texcode>
  
\define\setLatin
+
The counter Latine commands, "latinpar", "\LT" and "\setlatin".
  {\LatinGlobalDir%
 
  \usetypescript[lm]%
 
  \setupbodyfont[lm,20pt]}
 
  
 +
<texcode>
 
\setcharactermirroring[1]
 
\setcharactermirroring[1]
 
</texcode>
 
</texcode>
 +
 +
To enable mirroring of BiDi mirrored characters, like () and [].

Revision as of 18:36, 28 June 2008


TODO: overview page for the use of middle-eastern scripts (See: To-Do List)


Examples

Arabic

This is an example style file for typesetting Arabic documents. Save it as "ara-sty.tex" and "\include ara-sty" in your document.

% engine=luatex
\mainlanguage[arabic]

% Font setup

\definefontfeature
   [arabic]
   [mode=node,language=dflt,script=arab,
    init=yes,medi=yes,fina=yes,isol=yes,
    liga=yes,dlig=yes,rlig=yes,clig=yes,
    mark=yes,mkmk=yes,kern=yes,curs=yes]

\starttypescript [serif] [arabic]
 \definefontsynonym [Arabic-Light]       [name:arabtype] [features=arabic]
 \definefontsynonym [Arabic-Bold]        [name:arabtype] [features=arabic]
 \definefontsynonym [Arabic-Italic]      [name:arabtype] [features=arabic]
 \definefontsynonym [Arabic-Bold-Italic] [name:arabtype] [features=arabic]
 \stoptypescript

\starttypescript [serif] [arabic] [name]
 \usetypescript[serif][fallback]
 \definefontsynonym [Serif]           [Arabic-Light]       [features=arabic]
 \definefontsynonym [SerifItalic]     [Arabic-Italic]      [features=arabic]
 \definefontsynonym [SerifBold]       [Arabic-Bold]        [features=arabic]
 \definefontsynonym [SerifBoldItalic] [Arabic-Bold-Italic] [features=arabic]
\stoptypescript

\starttypescript [Arabic]
  \definetypeface [Arabic] [rm] [serif] [arabic] [default] 
\stoptypescript 

\def\ArabicGlobalDir {\pagedir TRT\bodydir TRT\pardir TRT\textdir TRT}
\def\ArabicParDir    {\textdir TRT\pardir TRT}
\def\ArabicTextDir   {\textdir TRT}
\def\LatinParDir     {\textdir TLT\pardir TLT}
\def\LatinTextDir    {\textdir TLT}
\def\LatinGlobalDir  {\pagedir TLT\bodydir TLT\pardir TLT\textdir TLT}

\define\setarabic
  {\ArabicGlobalDir%
   \usetypescript[Arabic]%
   \setupbodyfont[Arabic,20pt]}

\definestartstop
  [arabicpar]
  [commands=\Arabic\ArabicParDir]

\define[1]\AR
  {{\Arabic\ArabicTextDir#1}}

\define\setlatin
  {\LatinGlobalDir%
   \usetypescript[lm]%
   \setupbodyfont[lm,20pt]}

\definestartstop
  [latinpar]
  [commands=\Arabic\LatinParDir]

\define[1]\LT
  {{\LatinTextDir#1}}

\setcharactermirroring[1]

Here is some discription.

% engine=luatex

This tells ConTeXt to use luatex as TeX engine, this mandatory for this example to work.

\mainlanguage[arabic]

Sets the main language to Arabic, so that translatable titles are translated to Arabic.

\definefontfeature
   [arabic]
   [mode=node,language=dflt,script=arab,
    init=yes,medi=yes,fina=yes,isol=yes,
    liga=yes,dlig=yes,rlig=yes,clig=yes,
    mark=yes,mkmk=yes,kern=yes,curs=yes]

Here we define OpenType font features needed to render Arabic properly.

\starttypescript [serif] [arabic]
 \definefontsynonym [Arabic-Light]       [name:arabtype] [features=arabic]
 \definefontsynonym [Arabic-Bold]        [name:arabtype] [features=arabic]
 \definefontsynonym [Arabic-Italic]      [name:arabtype] [features=arabic]
 \definefontsynonym [Arabic-Bold-Italic] [name:arabtype] [features=arabic]
 \stoptypescript

\starttypescript [serif] [arabic] [name]
 \usetypescript[serif][fallback]
 \definefontsynonym [Serif]           [Arabic-Light]       [features=arabic]
 \definefontsynonym [SerifItalic]     [Arabic-Italic]      [features=arabic]
 \definefontsynonym [SerifBold]       [Arabic-Bold]        [features=arabic]
 \definefontsynonym [SerifBoldItalic] [Arabic-Bold-Italic] [features=arabic]
\stoptypescript

\starttypescript [Arabic]
  \definetypeface [Arabic] [rm] [serif] [arabic] [default] 
\stoptypescript 

Then, we define "Arabic" typescript, here we used a font named "arabtype". Since this font has only regular weight, we set bold and italic to use the same font.

\def\ArabicGlobalDir {\pagedir TRT\bodydir TRT\pardir TRT\textdir TRT}
\def\ArabicParDir    {\textdir TRT\pardir TRT}
\def\ArabicTextDir   {\textdir TRT}
\def\LatinParDir     {\textdir TLT\pardir TLT}
\def\LatinTextDir    {\textdir TLT}
\def\LatinGlobalDir  {\pagedir TLT\bodydir TLT\pardir TLT\textdir TLT}

Here we define some directional commands to use it in the next parts.

\define\setarabic
  {\ArabicGlobalDir%
   \usetypescript[Arabic]%
   \setupbodyfont[Arabic,20pt]}

\definestartstop
  [arabicpar]
  [commands=\Arabic\ArabicParDir]

\define[1]\AR
  {{\Arabic\ArabicTextDir#1}}

Here we define "arabicpar" environment for Arabic paragraphs in Latin context, and "\AR" for short Arabic sentences and "\setarabic" command to set the main document direction and font to Arabic.

\define\setlatin
  {\LatinGlobalDir%
   \usetypescript[lm]%
   \setupbodyfont[lm,20pt]}

\definestartstop
  [latinpar]
  [commands=\Arabic\LatinParDir]

\define[1]\LT
  {{\LatinTextDir#1}}

The counter Latine commands, "latinpar", "\LT" and "\setlatin".

\setcharactermirroring[1]

To enable mirroring of BiDi mirrored characters, like () and [].