7
The Arabi system ] ¤r‘ [ A\ T E X writes in Arabic and Farsi Youssef Jabri ´ Ecole Nationale des Sciences Appliqu´ ees, Oujda, Morocco yjabri (at) ensa dot univ-oujda dot ac dot ma Abstract In this paper, we will present a newly arrived package on CTAN that provides Arabic script support for T E X without the need for an external pre-processor. The A r abi package adds one of the last major multilingual typesetting capabilities to Babel by adding support for the Arabic ¤r and Farsi ¤FCA languages. Other languages using the Arabic script should also be more or less easily imple- mentable. A r abi comes with many good quality free fonts, Arabic and Farsi, and may also use commercial fonts. It supports many 8-bit input encodings (namely, CP-1256, ISO-8859-6 and Unicode UTF-8) and can typeset classical Arabic poetry. The package is distributed under the L A T E X Project Public License (LPPL), and has the LPPL maintenance status “author-maintained”. It can be used freely (including commercially) to produce beautiful texts that mix Arabic, Farsi and Latin (or other) characters. Pl Y Abn Tynyfi/ Tyr‘ /r Am‘tF TyAk yt§ A\ ¤r‘ TEC ./r yfOt T E X « y » A\ Am‘tFA d/ dnts ¤ n y A\ (¤FCA / ¤r)ytl Am‘tF TyAk yS ¤r‘ TEC , T/rm ryb Cdq tmt§/ flwm ¢wk zymt§ A\n @h , T§db @n/ Y At§ fl ¢ Y TAR . AARn £EA A \‘ Am‘tFfi ™A ¢– AwO AyA ¤r‘ ´´dq§ . Tmlk ¤ /r AkJ d§dt ¤CA A‘ ' ¤ ¤t “wW d Am‘tF ¢nkm§ Am Am‘tFfl ›r “wW Twmm fl/ ¤A ¤r‘ , y A\n TbsnA A w¡ Am . fi E/dn§/ A\ . Am‘tFfl ”An fl ¢lim‘atsu lk§ 1 Introduction The development of A r abi 1 was a response to the absence of a package that manipulates the Arabic script and fulfills the following requirements: 1. L A T E X2 ε and Babel compliant, this combina- tion format/package being the most widely used in our opinion when mixing different languages. 2. The possibility of using 8-bit input text includ- ing already existing Arabic texts, on different systems. 3. Able to use existing, commercial and free, beau- tiful Arabic fonts. 1 The name of the package should not be misunderstood. It is not designed to support only the Arabic language, but all languages that use the Arabic script. Technically speaking, for Babel, they will all be considered as dialects of Arabic. 4. Free (as in freedom), meaning a license like the GNU GPL or LPPL. A r abi comes with an extensive user manual; this article gives a general overview of the system. 2 Typesetting Arabic with T E X: the existing possibilities T E X and the Arabic script have a long history. One might imagine that enabling T E X to write in both directions Right-to-Left (R2L) and Left-to- Right (L2R) with an Arabic font suffices to typeset Arabic with T E X. Unfortunately, although such an extended T E X may perhaps be used to typeset a R2L language like Hebrew, this is far from sufficient for a complex script like Arabic, where the shapes of the glyphs TUGboat, Volume 27 (2006), No. 2 — Proceedings of the 2006 Annual Meeting 147

tb87jabri

Embed Size (px)

DESCRIPTION

tb87jabri

Citation preview

Page 1: tb87jabri

The Arabi system ] ¨r` [ A\ —TEX writes in Arabic and Farsi

Youssef JabriEcole Nationale des Sciences Appliquees,

Oujda, Morocco

yjabri (at) ensa dot univ-oujda dot ac dot ma

Abstract

In this paper, we will present a newly arrived package on CTAN that providesArabic script support for TEX without the need for an external pre-processor.The Arabi package adds one of the last major multilingual typesetting capabilitiesto Babel by adding support for the Arabic ¨r and Farsi ¨FCA languages.Other languages using the Arabic script should also be more or less easily imple-mentable.

Arabi comes with many good quality free fonts, Arabic and Farsi, and may alsouse commercial fonts. It supports many 8-bit input encodings (namely, CP-1256,ISO-8859-6 and Unicode UTF-8) and can typeset classical Arabic poetry.

The package is distributed under the LATEX Project Public License (LPPL),and has the LPPL maintenance status “author-maintained”. It can be used freely(including commercially) to produce beautiful texts that mix Arabic, Farsi andLatin (or other) characters.

PlY ¾Abn Tyny®¤ Tyr` ¤r Am`tF TyAk yt§ A\ ¨r` TEC

.¤r yfOt TEX « y » A\ Am`tFA d¤ dnts ¨ ny A\ (¨FCA ¤ ¨r)ytl Am`tF TyAk yS ¨r` TEC, T¤rm ryb Cdq tmt§¤ ¯wm ¢wk zymt§ A\n @h , T§db @n¤Y At§ ¯ ¢ Y TAR . AARn £EA A \` Am`tF® A ¢±¾AwO ¾AyA ¨r` ÂÂdq§ . Tmlk ¨ ¤r AkJ d§dt ¨CA A` ©¨ ¨t ªwW d Am`tF ¢nkm§ Am Am`tF¯ ­r ªwW Twmm¯¤ ¨A ¨r` , y A\n TbsnA A w¡ Am . ¾® E¤dn§¤ A\

. Am`tF¯ ºAn ¯ ¢lim`atsu lk§

1 Introduction

The development of Arabi1 was a response to the

absence of a package that manipulates the Arabicscript and fulfills the following requirements:

1. LATEX2ε and Babel compliant, this combina-tion format/package being the most widely usedin our opinion when mixing different languages.

2. The possibility of using 8-bit input text includ-ing already existing Arabic texts, on differentsystems.

3. Able to use existing, commercial and free, beau-tiful Arabic fonts.

1 The name of the package should not be misunderstood.It is not designed to support only the Arabic language, but alllanguages that use the Arabic script. Technically speaking,for Babel, they will all be considered as dialects of Arabic.

4. Free (as in freedom), meaning a license like theGNU GPL or LPPL.

Arabi comes with an extensive user manual; thisarticle gives a general overview of the system.

2 Typesetting Arabic with TEX: the

existing possibilities

TEX and the Arabic script have a long history.One might imagine that enabling TEX to write

in both directions Right-to-Left (R2L) and Left-to-Right (L2R) with an Arabic font suffices to typesetArabic with TEX.

Unfortunately, although such an extended TEXmay perhaps be used to typeset a R2L language likeHebrew, this is far from sufficient for a complexscript like Arabic, where the shapes of the glyphs

TUGboat, Volume 27 (2006), No. 2 — Proceedings of the 2006 Annual Meeting 147

Page 2: tb87jabri

Youssef Jabri

depend on the context, and may take many forms(at least four forms for the majority of Arabic char-acters even in the simplest2 cases).

Many early attempts have been made; they allrelied on a preprocessor that does the contextualanalysis (also known as the shaping algorithm).

One attempt, not widely known, due to TerryRegier from the University of California, Berkeley,dating from December 1990, relied on the famousmacros of D. Knuth and P. MacKay:

%The lines below are from Knuth and MacKay

% TUGboat vol.8, #1, page 14.

\font\revrm=xbmc10 \hyphenchar\revrm=-1

\catcode‘\|=\active

\def|#1|\revrm \reflect#1\empty\tcelfer

\def\reflect#1#2\tcelfer\ifx#1\empty\else%

\reflect#2\tcelfer#1\fi

to do the reflection, after a preprocessor has done arough contextual analysis.

The pioneering work by Knuth and MacKay[11], who implemented the TEX bidirectional algo-rithm (which is unrelated to the Unicode Bidirec-tional Algorithm; the latter implicitly chooses thedirections of the text) and added to TEX the fourprimitives (\beginL, \endL, \beginR and \endR)made things much better!

Some early attempts were also carried out byY. Haralambous, who used the new extended en-gine TEX--XET. This includes the non-free Al-Amal3

(1992, [6]), and the free ArabiTEX 4 (April 1995).The most widely used system at present is prob-

ably K. Lagally’s ArabTEX [13]. It is a package forwriting Arabic in several languages using the Ara-bic script. It consists of a TEX macro package andone Arabic Naskhi-like font. ArabTEX will run withPlain TEX and LATEX; and work with any TEX en-gine, because it uses its own bidirectional algorithm.So, no preprocessor is needed! This makes it a littleslow but with today’s computer power, this is notreally a problem. Its real drawback lies in the factthat the macros apparently depend heavily on theglyphs of the font it uses, making it quite impossi-ble to use any other fonts that may be available tothe user.

For courageous users, there also exist two morepowerful systems

• Ω by Y. Haralambous and J. Plaice, and

• X ETEX by J. Kew, if you have the right systemand the right fonts.

2 Through typographical simplifications. Some aspects oftraditional Arabic typography are described in [5].

3 We did not review it, as it was not available to the publicas far as we know.

4 The source and a DOS executable of the preprocessorwere available through the French TUG.

3 Arabic script specifics

The Arabic script is one of the most widely usedscripts on earth. It dominates in Arabic countries,of course, but has a special place for all Muslimsbecause it’s the script used to write the Koran, theholy book of Muslims.

The Arabic script, like all other Semitic lan-guages, is written from Right-to-Left.

Another important aspect of the Arabic scriptis that no hyphenation is needed, or allowed at all.So, no hyphenation patterns are needed for any lan-guages that uses the Arabic script. In very old Ara-bic documents, words could be split after a non-connecting character, while characters that connectwere never split. In modern Arabic, hyphenation isforbidden completely. This makes it more difficultto get justification when long words occur at theend of a line, but Arabic is also cursive and has (inmodern fonts mimicking the handwritten forms) aspecial character called kashida or tatweel (keshidehis a Farsi word that means stretch) that may be usedbetween adjoining characters to make the word be-come longer. An example is the following word:A that may be written to occupy longer Aþand longer Aþþ and much more longer spaceAþþþþ.

3.1 The Arabic alphabet

The Arabic alphabet is caseless, but most lettershave either two or four forms. The different formsare used according to the letter’s position in theword (initial, medial, final and isolated). The al-phabet is constituted in its basic form by

• 28 consonants (29 if we count the hamza). Butthe number of 28 characters can exceed easily1000 glyphs per font if all ligatures are present!

Isolated Initial Medial Final

b ` £ ¡ h ¢

Table 1: Some characters’ contextual forms

• Seven diacritical marks specifying the vowels.They are not used in typical Arabic texts butappear in poetry, textbooks for people learningthe Arabic language, and some religious texts.They can be typed and then at the moment ofcompiling the document, can be either includedor omitted according to the author’s wish! The

148 TUGboat, Volume 27 (2006), No. 2 — Proceedings of the 2006 Annual Meeting

Page 3: tb87jabri

The Arabi system ] ¨r` [ A\ — TEX writes in Arabic and Farsi

three basic ones are called fatha, damma and

kasra: þiþþþþþuþþþþaþ ; the sukun þ"þ is used

for the absence of vowels; and there are threetanwin forms written by doubling the three ba-

sic ones: þÀþþþ¿þþþþ¾þþ .

The vowel marks are written somewhat likeaccents in the Latin script. Above, the drawnline represents the baseline, with the vowels thatappear above the line being typeset above let-ters, while those below the line are typeset be-low letters.

3.2 Arabic typography

This aspect of Arabic merits much investigation andso much can be said about it. But in order not tobe too lengthy, we will just cite three points.

In the classical Arabic literature, there are notypographical styles like bold, italic, etc. Differentclassical typefaces are used instead (req’a, naskhi,thuluth, etc.) to distinguish between different log-ical parts of the text. In modern literature, thatdepends heavily on computers made by people whoare either unaware of the rules of Arabic typographyor do not have enough time or money to developsuch possibilities, we use more and more boldfaceand italics (slanted to the wrong side many times,unfortunately).

Concerning spacing and punctuation, there isa lot of change between books published early inthis century by mechanical means and some morerecent ones typeset using computer programs. Itseems that different editors adopted different rules.Some use English or French rules, while others insertspace before and after each sign — which was therule in the older texts!

In general, in Arabic texts, enumerated lists usethe abjad system using letters, in a particular order,instead of numbers, but numbered lists are used also.

4 The Arabi system

The two main problems faced when typesetting Ara-bic with TEX are managed by Arabi as follows.

1. The bi-directional capability supposes that theuser has a TEX engine providing the four primi-tives \beginR, \endR, \beginL and \endL. Thisis the case with the TEX--XET and ε-TEX en-gines.

2. The contextual analysis does not need/use anypre-processor; this is done completely in the

fonts, using the (quite limited) ligature possi-bilities of METAFONT.

This second point is the whole secret of Arabi’s com-patibility with most available packages. We tried toshorten TEX coding to deal with the specifics of theArabic script as much as we could, to avoid eventualconflicts and clashes with other code.

The system is also compatible with all other for-mats, such as plain or ConTEXt. This too is becausethe whole contextual analysis is done in the fonts!

4.1 Input and font encodings

Typesetting Arabic and Farsi texts with TEX impliesthe use of special input and output encodings, so weneed to use the standard packages inputenc andfontenc.

We use two special font encodings. For Arabic,we use LAE for Local Arabic Encoding, while for Farsiwe use LFE that stands for Local Farsi Encoding.These two encoding are not final. Some characterpositions may change, and some empty slots will befilled with new characters.

Concerning the input encoding, the user simplycreates an ordinary LATEX file, in which he can use 8-bit Arabic characters, typed visually on some systemthat supports the Arabic script.

For now, the Arabi system supports the followinginput code pages:

1. Arabic Windows CP-1256 for Arabic and Farsi.

2. ISO-8859-6 for Arabic, not suitable for Farsi be-cause many Farsi characters are missing.

3. The multibyte Unicode UTF-8 (ISO-10646) forArabic and Farsi.

4.2 What has been done so far?

Currently, with Arabi you can typeset correctly, whilemixing the Arabic and Latin scripts, according tothe context:

• Footnotes, appearing on the right side of thepage.

• Lists, both itemized and enumerated. The stan-dard enumerate environment uses the abjad

system mentioned earlier.

• Floats are typeset with the right caption formand the appropriate entry is added to the tableof contents.

Moreover, Arabi takes care of the bidirectional for-matting of sectioning, chapters, (sub-)sections, etc.,according to the context. And the tables (of con-tents, figures and tables) are typeset all accordingto one global text direction, which is the main textdirection as specified by the user. This is meant to

TUGboat, Volume 27 (2006), No. 2 — Proceedings of the 2006 Annual Meeting 149

Page 4: tb87jabri

Youssef Jabri

\documantclassarticle

\usepackage[ cp1256 ]inputenc

\usepackage[ arabic ,english]babel

\begindocument

\selectlanguagearabic

, yr mr ü s\\

­CAtF¯ ¨ rK x As Of

¡ Ð rq ­Cws Anml`§ Am r¯ ¨ ­CAtF¯ Anml`§ ü wFC A A rA ©CAb y ¨ AF¤ Cdq CdqtF¤ ml` rytF ¨ hl qy TS§rf ry yt`C ryl r¯A dYms§¤ r¯ @¡ l` n hl wy ® ¤ l ¯¤ l`¤ Cd ¯¤ Cdq A y\` lSrJ r¯ @¡ l` n ¤ ¢y ¨ CA ¨ £rs§¤ ¨ £CdA ©r TbA¤ ¨JA`¤ ¨n§ ¨ ¨ ry ¢tAdns ¨¤ ¢ ¨nRC A y ry ¨ Cd¤ ¢n ¨nr¤ ¨n ¢rA ©r TbA¤ ¨JA`¤ ¨n§ ¨ ¨ ­ A`F ¤ ü ­CAtF ­ A`F A ¢ Q ¨bn QA¤ ¨ d`F §d dm A¯A d¤ ü YS Am ¢WF ­wqJ ¤ ü ­CAtF ¢r ­wqJ ¤ ü YS Am £ARC

YA`¤ ¢AbF[\textmash

ü Yl wt z ÐA r¯ ¨ ¡C¤AJ¤]

¡r dJC Y ¤d¡ ¯ ü ¢¤ wtb§ w C¤AK A £ At A¤\LThis is a simple example of Arabic text you may want to type

.ymA` C ü dm¤ \enddocument

Figure 1: Sample Arabi input

be the one that dominates your text, either an Ara-bic (script) document with small amounts of Latintext included, or a Latin one that contains Arabic.

Arabi has also a limited, but almost good, capa-bility of vocalizing. Some more work needs to bedone in that direction. Things would have been cer-tainly better if METAFONT had more powerful lig-ature possibilities! But if you use X ETEX and havethe right fonts, then things are certainly better.

The package also comes with extensive, and, wehope, clear documentation.

4.3 Current status

At the time of this writing, Arabi is at version 1.0, andalready included in some distributions like MikTEXand BakomaTEX.

The latest version is always available from theCTAN archives. You should find it atCTAN:tex-archive/language/arabic/arabi

As mentioned earlier, the package is distributedunder the LPPL, and has the status “author-main-tained”. It can be used freely (including commer-cially) to produce beautiful texts that mix Arabicwith characters from other scripts.

Figure 1 shows a sample Arabi input document,and figure 2 the corresponding output.

4.4 Babel compliance

Arabi is fully LATEX2ε and Babel compliant. It pro-vides almost all the language-dependent strings forthe Arabic and Farsi languages and can generateautomatically the official Jalali calendar. The Farsicaptions and the code for the Farsi date are fromthe FarsiTEX system.5 Moreover, all Babel languageswitching commands apply.

5 The FarsiTEX system seems unfortunately still not avail-able with LATEX2ε. We hope that the Farsi support offeredby Arabi and the Farsi fonts from the Farsi web project thatcome with Arabi will be useful to all Farsi users.

150 TUGboat, Volume 27 (2006), No. 2 — Proceedings of the 2006 Annual Meeting

Page 5: tb87jabri

The Arabi system ] ¨r` [ A\ — TEX writes in Arabic and Farsi

, yr mr ü s­CAtF¯ ¨ rK x As Of

­Cws Anml`§ Am r± ¨ ­CAtF¯ Anml`§ ü wFC A A rA ©CAb y ¨rytF ¨ hl qy TS§rf ry yt`C ryl r±A d ¡ Ð rq l ¯¤ l`¤ Cd ¯¤ Cdq A y\` lS F¤ Cdq CdqtF¤ ml`TbA¤ ¨JA`¤ ¨n§ ¨ ¨ ry ¢tA Yms§¤ r± @¡ l` n hl wy ® ¤¨JA`¤ ¨n§ ¨ ¨ rJ r± @¡ l` n ¤ ¢y ¨ CA ¨ £rs§¤ ¨ £CdA ©rdns ¨¤ ¢ ¨nRC A y ry ¨ Cd¤ ¢n ¨nr¤ ¨n ¢rA ©r TbA¤¤ ü ­CAtF ­ A`F A ¢ Q ¨bn QA¤ ¨ d`F §d dm A³¢WF ­wqJ ¤ ü ­CAtF ¢r ­wqJ ¤ ü YS Am £ARC ­ A`F­ At A¤ ]ü Yl wt z Ð r± ¨ ¡C¤AJ¤[ YA`¤ ¢AbF A d¤ ü YS AmThis is a simple example of Arabic text ¡r dJC Y ¤d¡ ¯ ü ¢¤ wtb§ w C¤AK A

.ymA` C ü dm¤ you may want to type

Figure 2: Sample Arabi output

4.5 Compatibility

The Arabi package has been tested successfully withpackages such as parshape, poster, pstricks (andmany of its derivatives), and, to our great surpriseand pleasure, ArabTEX. It has been tested also ona Mac OS X system with the teTEX distribution andTeXShop (see figure 3).

4.6 Arabic fonts

One of the good features in Arabi is its ability touse any existing fonts that the underlying TEX en-gine can access. Arabi comes with a collection ofArabic and Farsi GNU fonts from, respectively, theArabeyes and Farsi Web projects. The TFM files ofsome widely available commercial fonts are also in-cluded in the distribution, but the user still has tomanage telling his engine where to find the corre-sponding font.

One remark to make here is that when prepar-ing the vector encoding files for the different fonts,we learned that there is no standard. Even somecorporations who produce and distribute applica-tions and fonts that support the Arabic script formany years use so many names for the same glyphsthat we arrived at the conclusion that one can neverknow what will be found when the font is opened!

5 Some bells and whistles

Arabi comes also with an experimental module thatproduces a transliteration of Arabic texts. Nocounterpart has been done for Farsi yet.

When texts are in general not fully vowelized,the transliteration cannot be expected to be correct.Moreover, when writing using some 8-bit input en-coding there is absolutely no way to distinguish be-tween long vowels © ¤ and the letters alif, yaa andwaw. Neither, it is possible to write correctly thehamza when on alif , waw, or ya.

To use it, just load the package translit aswith any other package, and type Arabic text in 8bits in a Latin context, that is, without issuing acommand that switches to the Arabic language.

1 abw alla almry ©r`m º®` w 1

2 matnuN mubarakuN ¿ÁCAbu ¿ta 23 h. g mbrwr C¤rb 3

Table 2: A little example of transliteration

Classical poetry, in both Arabic and Farsi, isformatted in two “parallel” verses that begin andend at the same positions. When verses are tooshort, they are written closer to the (vertical) centerof the page, as in the next example. Arabi relies onthe same idea6 of spreading the keshida glyph usedby ArabTEX.

6 A contribution by the author to ArabTEX a long timeago. ArabTEX uses a variable width horizontal “line” whilewe stack the kashida glyph the necessary number of times toget the right width!

TUGboat, Volume 27 (2006), No. 2 — Proceedings of the 2006 Annual Meeting 151

Page 6: tb87jabri

Youssef Jabri

Figure 3: Arabi running on Mac OS

] ` Ty¯ ¨ ¨¶rW A [

¢þþbA ¡ ¨n§ Tþþ®s þþskA ºrm ©r§¤¨Aþþ`m

Aþþþqf @A ¢þþþy n zþþt¤ w ¨ AþþmlF¤|C± ¨

Ynwþþl«¤mrJ¨ Aþþwþþm ­C Aþþw§HmK rb

h@xAþþn dnþþd J¤dþþþt`m w` AþþþW§ ¡¤

¯¤ ¢þþyl YK§ ¯ TAþþnqlwþþ¤ CAþþO± Y ¢y Aþþt§

Aþþh Ab ¯ Cd ºAþþqb wrþþþqtn ry þþþ\ `mF h

Figure 4: Some Arabic poetry

6 The limits and the problems

The main limit seems to be the capacity of the TFM

format:

• First in its 256-glyph limit, which certainly isnot a sufficient number for a modern font, notto talk about an Arabic one!

• And second in the very limiting way it han-dles ligatures. In a script like Arabic, three-character ligatures are the rule, while there areeven four letter ligatures, e.g., dm. But if wealso want to manage diacritics, which we canrecall play in Arabic the role of vowels in Latinlanguages, things become even worse.

There is also an important ε-TEX issue, thatthe R2L direction is not supported in Mathematics.So we have to rely on some script a la Knuth andMacKay to reverse the characters and the words.

7 The future for Arabi

Concerning the future developments of Arabi. Inthese early times, we focus on keeping it alive and

152 TUGboat, Volume 27 (2006), No. 2 — Proceedings of the 2006 Annual Meeting

Page 7: tb87jabri

The Arabi system ] ¨r` [ A\ — TEX writes in Arabic and Farsi

bringing it to maturity by correcting any bug thatappears and completing the already existing func-tions, as no one is perfect. Let us cite the poetal-mutanabbi : ¨bntm yW w A

¾Aþþþþby xAn wy ¨ C ¤Aþþþþmt Yl §C Aq Pqn

Please do not hesitate to forward suggestions,questions, or comments on Arabi. Thanks for yourinterest.

References

[1] B. Esfahbod and R. Pournader. FarsiTEX andthe Iranian TEX community. TUGboat 23(1),41–45, 2002.

[2] J. Braams. Babel, a multilingual style-optionsystem for use with LATEX’s standarddocument styles. TUGboat 12(2), 291–301,1992.

[3] J. Braams. An update on the Babel system.TUGboat 14(1), 60–61, 1993.

[4] Michel Goossens and Frank Mittelbach, withJohannes Braams, David Carlisle, and ChrisRowley. The LATEX Companion.Addison-Wesley, 2nd edition, 2004.

[5] Y. Haralambous. Towards the revival oftraditional Arabic typography . . . throughTEX. Proceedings of the EuroTEX’92conference, Prague, 1992.

[6] Y. Haralambous. Typesetting the Holy Qur’anwith TEX. Proceedings of the 2ndInternational Conference on MultilingualComputing (Latin and Arabic script),Durham, 1992.

[7] A. Hoenig. TEX Unbound: Strategies forFonts, Graphics, and More. Oxford UniversityPress, 1998.

[8] D.E. Knuth. The TEXbook. Addison-Wesley,Reading, MA, USA, 1986.

[9] D.E. Knuth. The METAFONTbook.Addison-Wesley, Reading, MA, USA, 1986.

[10] D.E. Knuth. Virtual Fonts: More fun for grandwizards. TUGboat 11(1), 13–23, April 1990.

[11] D.E. Knuth and P. MacKay. Mixingright-to-left texts with left-to-right texts.TUGboat 8(1), 14–25, April 1987.

[12] A. Lakhdar-Ghazal. Caracteres arabesdiacritiques selon l’ASV-CODAR (pourimprimer les langues arabes). Institutd’Etudes et de Recherches pour l’Arabisation,Rabat, 1993.

[13] K. Lagally. ArabTEX —Typesetting Arabicwith vowels and ligatures. Proceedings of theEuroTEX92 conference, Prague, 1992

[14] K. Lagally. ArabTEX Arabic and Hebrew,(Draft) User Manual Version 4.00. March 11,2004.

[15] L. Lamport. LATEX: A Document PreparationSystem: User’s Guide and Reference Manual.Addison-Wesley, Reading, MA, USA, secondedition, 1994.

[16] P. MacKay. Typesetting problem scripts.BYTE 11(2), 201–218, 1986.

[17] The FarsiTEX Project.http://www.farsitex.org/

[18] The FarsiWeb Project.http://www.farsiweb.info/

[19] Institute of Standards and Industrial Researchof Iran. http://www.isiri.com

[20] Microsoft. Free download of the Arabic fontpack, arafonts.exe.http://office.microsoft.com/arabicregion/

Downloads/2000/arafonts.aspx

[21] X ETEX web site and mailing list.http://scripts.sil.org/xetex

[22] The Unicode standard.http://www.unicode.org/

TUGboat, Volume 27 (2006), No. 2 — Proceedings of the 2006 Annual Meeting 153