Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than...
Transcript of Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than...
![Page 1: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/1.jpg)
Devanagari in LuaTeX
Using OpenType features
Ivo Geradts
Kai Eigner
![Page 2: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/2.jpg)
1. About us
2. Foreign scripts in TeX, past and present
3. OpenType features
4. OpenType rendering engines
5. ConTeXt engine
6. Example 1: Latin with mark and mkmk
7. Example 2: Arabic
8. Example 3: Devanagari
![Page 3: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/3.jpg)
TAT Zetwerk offers academic typesetting services
Specialties:
- critical editions
- foreign scripts
PlainTeX, for two reasons:
- our exotic needs
- well documented
1. About us
![Page 4: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/4.jpg)
![Page 5: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/5.jpg)
![Page 6: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/6.jpg)
![Page 7: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/7.jpg)
Past: 8-bit PostScript fonts; e.g. approach for classical greek:
- encoding: α = a, β = b, γ = g
- ligature table: σ = s, ς = /s, ἄ = a)'
- multitude of font-related files: tfm, vf, pfb, enc
Present: new TeX-engines XeTeX and LuaTeX can handle
OpenType fonts containing Unicode glyph table:
- ἄ is unicode position 1F04
2. Foreign scripts in TeX, past and present
![Page 8: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/8.jpg)
OpenType fonts contain more information than traditional fonts
- tfm: bounding boxes, kerning, ligaturen, etc.
- OpenType additions: GPOS, GSUB, marks
Introduction of XeTeX and LuaTeX removes old limitations:
- vocalized Hebrew, Arabic
- CJK
- Devanagari
3. OpenType features
![Page 9: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/9.jpg)
OpenType fonts require rendering engine, such as:
- Uniscribe (Windows)
- AAT (OS X); XeTeX on OS X
- Graphite (Windows and Linux); XeTeX on all platforms
- ConTeXt engine: collection of Lua-scripts attached to various
callbacks related to font calls and processing of node list
4. OpenType rendering engines
![Page 10: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/10.jpg)
- independent of operating system
- readable and modifiable
- work in progress
5. ConTeXt engine
![Page 11: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/11.jpg)
6. Example 1: Latin script with mark and mkmk
7. Example 2: Arabic
![Page 12: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/12.jpg)
8. Example 3: Devanagari
- Introduction: what is Devanagari?
- Devanagari and OpenType
- Examples
![Page 13: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/13.jpg)
Devanagari
Script
- Sanskrit (old Indic)
- Hindi
- Nepali
Abugida (consonant–vowel
sequences are written as a unit)
क = “ka”
क ्= “k” क + ◌् (halant)
क# = “ku” क + ◌ु (matra)
Mahabharata
![Page 14: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/14.jpg)
Syllable structure
- Consonants: e.g. क (“ka”), ष (“ssa”); concatenated by means of halant: in
व'णा (“vaksanaah”) ligature-syllable ' (“kssa”) produced by क + ◌् + ष
- Matra’s: e.g. ◌ा, ि◌, ◌ी, ◌ु, ◌ू, ◌ृ, ◌ॄ, ◌ॅ, ◌ॆ, ◌े, ◌ै, ◌ॉ, ◌ॊ, ◌ो, ◌ौ,
◌ॢ, ◌ॣ
- Independent vowels: e.g. अ, आ, इ, ई, उ, ऊ, ऋ, ऌ, ऍ, ऎ, ए, ऐ, ऑ, ऒ, ओ, औ, ॠ, ॡ
- Vowel modifiers: e.g. ◌ँ, ◌ं, ◌ः and stress marks: e.g. ◌॑, ◌॒, ◌॓, ◌॔
Word with two syllables: “sa” (स) and “mrtĭ” produced by “ma” (म) +
![Page 15: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/15.jpg)
Ligatures and other substitutions
Half-forms (over 1000): क ्त → Uत (“kta”) and क ्ष → ' (“kssa”)
Reph: र (“ra”) + ◌् + क → कW
![Page 16: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/16.jpg)
Character reordering
• - Reorder reph (र + ◌्) from beginning to end of syllable:
व (“va”) + र (“ra”) + ◌् + त (“ta”) + ◌् + र (“ra”) + ◌ो (“o”) →:
वXY
- Reorder ि◌ to beginning of syllable:
![Page 17: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/17.jpg)
OpenType rendering engine
Based on Devanagari section of Microsoft Typography website
- Analyze text
- recognize syllables
- find base vowel
- classify consonants (reph, half-form, pre-base, below-base, post-base)
- Reorder characters using this analysis (e.g. matra’s)
- GSUB: basic shaping forms (e.g. features rphf, half, blwf)
- Reorder characters (e.g. reph and matra’s)
- GSUB: other features
- GPOS
![Page 18: Devanagari in LuaTeX - NTG · 2012. 10. 19. · OpenType fonts contain more information than traditional fonts - tfm: bounding boxes, kerning, ligaturen, etc. - OpenType additions:](https://reader035.fdocuments.net/reader035/viewer/2022070213/610bb664b35edf426d183483/html5/thumbnails/18.jpg)
Examples