diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /language/tibetan/steiner |
Initial commit
Diffstat (limited to 'language/tibetan/steiner')
-rw-r--r-- | language/tibetan/steiner/acip.ttd | 92 | ||||
-rw-r--r-- | language/tibetan/steiner/gedtest | 21 | ||||
-rw-r--r-- | language/tibetan/steiner/input.ttd | 94 | ||||
-rw-r--r-- | language/tibetan/steiner/install.how | 124 | ||||
-rw-r--r-- | language/tibetan/steiner/latex.ttd | 205 | ||||
-rw-r--r-- | language/tibetan/steiner/readme | 56 | ||||
-rw-r--r-- | language/tibetan/steiner/tex.ttd | 206 | ||||
-rw-r--r-- | language/tibetan/steiner/tplatex.tex | 114 | ||||
-rw-r--r-- | language/tibetan/steiner/tptex.tex | 117 | ||||
-rw-r--r-- | language/tibetan/steiner/ttt.c | 1121 | ||||
-rw-r--r-- | language/tibetan/steiner/tttintro.ps | 828 | ||||
-rw-r--r-- | language/tibetan/steiner/tttintro.tib | 243 |
12 files changed, 3221 insertions, 0 deletions
diff --git a/language/tibetan/steiner/acip.ttd b/language/tibetan/steiner/acip.ttd new file mode 100644 index 0000000000..1fdc900cb7 --- /dev/null +++ b/language/tibetan/steiner/acip.ttd @@ -0,0 +1,92 @@ +c___ka K +c___kha KH +p___ga G +c___nga NG +c___ca C +c___cha CH +c___ja J +c___nya NY +c___ta T +c___tha TH +p___da D +c___na N +c___pa P +c___pha PH +p___ba B +p___ma M +c___tsa TZ +c___tsha TS +c___dza DZ +b___wa W +c___zha ZH +c___za Z +p___'a ' +b___ya Y +b___ra R +b___la L +c___sha SH +c___sa S +b___ha H +c___a +v___a A +v___gigu I +v___shabkyu U +v___drengbu E +v___naro O +v___anusvaara +v___dummy - +.___shad , +.___tsheg +.___tshegshad +.___swasti * +.___0 0 +.___1 1 +.___2 2 +.___3 3 +.___4 4 +.___5 5 +.___6 6 +.___7 7 +.___8 8 +.___9 9 + +x___active_init x___active_init + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/language/tibetan/steiner/gedtest b/language/tibetan/steiner/gedtest new file mode 100644 index 0000000000..d27ee52bc2 --- /dev/null +++ b/language/tibetan/steiner/gedtest @@ -0,0 +1,21 @@ +#!/bin/sh +ttt acip.ttd latex.ttd $0 test.tex; latex test; exit + +*, ,BSTAN BCOS MNGON PAR RTOGS PA'I RGYAN 'GREL PA DANG BCAS +PA'I RNAM BSHAD RNAM PA GNYIS KYI DKA' GNAD GSAL BAR BYED PA +LAGS BSHAD SKAL BZANG KLU DBANG GI ROL MTSO ZHES BYA BA LAS +SKABS DANG PO'I SPYI DON GYI SMAD CHA BZHUGS SO, , + +@01A #, ,GNYIS PA RTOGS DKA' BA BYE BRAG TU BSHAD PA LA, DBANG +PO RTUL DANG RNON PO DAG, CES SOGS GSUNGS NA, GZHUNG 'DIS DGE +'DUN DKON MCHOG 'CHAD TSUL GANG ZHE NA, 'DI LA MDO LAS GSUNGS + +TSUL DANG, BSTAN CHOS KYIS 'GREL TSUL GNYIS LAS, DANG PO NI, +MDO LAS, SH'A RI'I BU BYANG CHEN SHER PHYIN 'DIS GNAS PA DE NI +SANGS RGYAS KYI ZHING GZHAN NAS SHI 'PHOS NAS 'DIR SKYES +PA'AM, ZHES SOGS KYIS BSTAN, + +GNYIS PA LA, MTSAMS SBYAR BA, RTZA BA, 'GREL PA DANG GSUM LAS, +DANG PO NI, GDAMS YUL BCU YOD PA'I NANG NAS DGE 'DUN DKON +MCHOG BYE BRAG TU 'CHAD PA'I RGYU MTSAN CI YIN ZHE NA, DE'I +RGYU MTSAN YOD DE, DGE 'DUN DKON MCHOG diff --git a/language/tibetan/steiner/input.ttd b/language/tibetan/steiner/input.ttd new file mode 100644 index 0000000000..d437f38a29 --- /dev/null +++ b/language/tibetan/steiner/input.ttd @@ -0,0 +1,94 @@ +c___ka k +c___kha kh +p___ga g +c___nga ng +c___ca c +c___cha ch +c___ja j +c___nya ny +c___ta t +c___tha th +p___da d +c___na n +c___pa p +c___pha ph +p___ba b +p___ma m +c___tsa ts +c___tsha tsh +c___dza dz +b___wa w +c___zha zh +c___za z +p___'a ' +b___ya y +b___ra r +b___la l +c___sha sh +c___sa s +b___ha h +v___a a +v___gigu i +v___shabkyu u +v___drengbu e +v___naro o +v___anusvaara * +v___dummy - +c___aa aa +.___no_tsheg # +.___visarga : +.___shad / +.___shad_space | +.___tsheg , +.___tshegshad ! +.___swasti @@ +.___0 0 +.___1 1 +.___2 2 +.___3 3 +.___4 4 +.___5 5 +.___6 6 +.___7 7 +.___8 8 +.___9 9 + +x___error ? +x___transp_word \ +x___transp_char & +x___transp_char } +x___transp_line % + +x___active~ %% +x___active{ \begin{Tibetan} +x___active} \end{Tibetan} + +c___taX tx +c___thaX thx +c___daX dx +c___naX nx +c___shaX shx + +c___\swasti \swasti +c___\ai \ai +c___\om \om +c___\dme \dme +c___\hung \hung +c___\hrih \hrih +c___\endsym \endsym +c___\altm{ \altm{ +c___\altmu{ \altmu{ +c___\subm{ \subm{ +c___\achung{ \achung{ + + + + + + + + + + + + diff --git a/language/tibetan/steiner/install.how b/language/tibetan/steiner/install.how new file mode 100644 index 0000000000..f9e55ebabe --- /dev/null +++ b/language/tibetan/steiner/install.how @@ -0,0 +1,124 @@ +IMPORTANT +--------- + +This Package only supplies the Tibetan Transcript Translator. +You must have Sam Sirlin's font(*.mf), font metrics (*.tfm) +and tibdef.tex installed! If you don't have Metafont or work +on an old LaTeX version, follow the special instructions below. + +Please look at the remarks at the top of the c source code. + + +IF YOU HAVE SAM SIRLIN'S PACKAGE ALREADY INSTALLED +-------------------------------------------------- + +The only thing you have to do is to compile the source ttt.c: + + gcc ttt.c -o ttt + +that's it! + +If you want to LaTeX compile the file intro.tib, enter the following +three lines. Maybe you have another viewer than xdvi. + + ttt input.ttd tex.ttd intro.tib intro.tex + latex intro + xdvi intro & + +You still may have to adopt is the paper size: instead of a4paper, +use letterpaper, a5paper, b5paper, executivepaper or legalpaper. + + +WORKING WITHOUT METAFONT +------------------------ + +Jeff Sparkes supplies the *.pk files in the package called 'original'. +Install the *.pk and *.tfm files there and compile ttt.c as above. +Do not use any feature supplied by Sam Sirlin. You may even have +to comment away or remove the + \input{tibdef.tex} +in the files tptex.tex and tplatex.tex + + +WORKING WITH OLD LATEX VERSIONS +------------------------------- + +Change all \documentclass commands to \documentstyle +and adapt the paper size names. + + grep '\documentclass' * + +will help you doing so. + + +INSTALLING THE FONTS +-------------------- + +A good question regulary occurs on where to put the TeX font files. +Here are some suggestions where to put them (taken from my installations). +Since the paths differ quite much among systems and distributions, +I could not write an installation script saving you this setup work +which is quite hard for beginners. + +Instead of copying the font files, you can set font path variables (see +extract from my SET-TEX.BAT file for DOS below. Hopefully, the variable +names are equal under Linux). + +If the directories mentioned do not exist, look for them using +on UNIX and derivated systems: + find / -type f -name "*.mf" -print + +Under DOS, use + cd \ + dir *.mf /s + + +teTeX Font Path for Metafonts (*.mf) on SuSE Linux: +/usr/lib/teTeX/texmf/fonts/source/public/tib + +teTeX Font Path for pk (*.300pk or *.pk) fonts on SuSE Linux: +/var/texfonts/pk/deskjet/*.300pk +emtex under DOS: +\emtex\pixel.lj\300dpi\*.pk + +teTeX Font Path for (*.tfm) files on SuSE Linux: +/var/texfonts/tfm +DOS: +/emtex/tfm + +teTeX inputs (*.tex) and style (*.sty) Path on SuSE Linux: +/usr/lib/teTeX/texmf/tex/generic/tib + + +Font and other path environment variables (at least for emtex under DOS): + +SET TEXINPUT=T:\EMTEX\TEXINPUT;T:\MYTEX +SET TEXFMT=T:\EMTEX\TEXFMTS +SET BTEXFMT=T:\EMTEX\BTEXFMTS +SET TEXTFM=T:\EMTEX\TFM +SET MFINPUT=T:\EMTEX\MFINPUT +SET MFBAS=T:\EMTEX\MFBASES +SET BMFBAS=T:\EMTEX\BMFBASES +SET MFJOB=T:\EMTEX\MFJOB +SET BIBINPUT=T:\EMTEX\BIBINPUT +SET DVIDRVINPUT=T:\MYTEX;T:\EMTEX\DOC +SET DVIDRVFONTS=T:\TEXFONTS + + +Hope this helps. + + +---------------------------- + +Beat.Steiner@gseved.admin.ch +March 1997 + + + + + + + + + + diff --git a/language/tibetan/steiner/latex.ttd b/language/tibetan/steiner/latex.ttd new file mode 100644 index 0000000000..b748ba5134 --- /dev/null +++ b/language/tibetan/steiner/latex.ttd @@ -0,0 +1,205 @@ +c___ka \tibetan\char0 +c___kha \tibetan\char1 +p___ga \tibetan\char2 +c___nga \tibetan\char3 +c___ca \tibetan\char4 +c___cha \tibetan\char5 +c___ja \tibetan\char6 +c___nya \tibetan\char7 +c___ta \tibetan\char8 +c___tha \tibetan\char9 +p___da \tibetan\char10 +c___na \tibetan\char11 +c___pa \tibetan\char12 +c___pha \tibetan\char13 +p___ba \tibetan\char14 +p___ma \tibetan\char15 +c___tsa \tibetan\char16 +c___tsha \tibetan\char17 +c___dza \tibetan\char18 +b___wa \tibetan\char19 +c___zha \tibetan\char20 +c___za \tibetan\char21 +p___'a \tibetan\char22 +b___ya \tibetan\char23 +b___ra \tibetan\char24 +b___la \tibetan\char25 +c___sha \tibetan\char26 +c___sa \tibetan\char27 +b___ha \tibetan\char28 +c___a \tibetan\char29 +v___a{ +v___a} +v___gigu{ \gigu{ +v___gigu} } +v___shabkyu{ \shabkyu{ +v___shabkyu} } +v___drengbu{ \drengbu{ +v___drengbu} } +v___naro{ \naro{ +v___naro} } +v___anusvaara{ \anusvaara{ +v___anusvaara} } +v___dummy{ +v___dummy} +.___shad \tibsp\char115 +.___shad_space \hskip1cm plus1cm minus.5cm +.___tsheg \tibsp\char114{\rm\tiny\kern-0.35em\ } +.___tshegshad \tibsp\char121 +.___swasti \tibsp\char116 +.___visarga \visarga +.___0 \tibsp\char0 +.___1 \tibsp\char1 +.___2 \tibsp\char2 +.___3 \tibsp\char3 +.___4 \tibsp\char4 +.___5 \tibsp\char5 +.___6 \tibsp\char6 +.___7 \tibsp\char7 +.___8 \tibsp\char8 +.___9 \tibsp\char9 +x___preamble \input{tplatex} +x___postamble \end{document} +x___error \rm{\huge\bf ?} +x___inner_box{ \hbox{ +x___inner_box} } +x___outer_box{ \strut\baselineskip0pt\vtop{ +x___outer_box} } + +x___transp_word +x___transp_char +x___active_in~ %% +x___active_in{ \begin{Tibetan} +x___active_in} \end{Tibetan} +x___active{ \parindent=0pt +x___active} \rm + +.___no_tsheg + +c___aa \aa +l___ha_ya \hya +l___ra_ya \rya +l___dza_ra \dzra + +c___\swasti \swasti +c___\ai \ai +c___\om \om +c___\dme \dme +c___\hung \hung +c___\hrih \hrih +c___\endsym \endsym +c___\altm{ \altm{ +c___\altmu{ \altmu{ +c___\subm{ \subm{ +c___\achung{ \achung{ + +l___ra_ka \tibetan\char30 +l___ra_ga \tibetan\char31 +l___ra_nga \tibetan\char32 +l___ra_ja \tibetan\char33 +l___ra_nya \tibetan\char34 +l___ra_ta \tibetan\char35 +l___ra_da \tibetan\char36 +l___ra_na \tibetan\char37 +l___ra_ba \tibetan\char38 +l___ra_ma \tibetan\char39 +l___ra_tsa \tibetan\char40 +l___ra_dza \tibetan\char41 +l___la_ka \tibetan\char42 +l___la_ga \tibetan\char43 +l___la_nga \tibetan\char44 +l___la_ca \tibetan\char45 +l___la_ja \tibetan\char46 +l___la_ta \tibetan\char47 +l___la_da \tibetan\char48 +l___la_pa \tibetan\char49 +l___la_ba \tibetan\char50 +l___la_ha \tibetan\char51 +l___sa_ka \tibetan\char52 +l___sa_ga \tibetan\char53 +l___sa_nga \tibetan\char54 +l___sa_nya \tibetan\char55 +l___sa_ta \tibetan\char56 +l___sa_da \tibetan\char57 +l___sa_na \tibetan\char58 +l___sa_pa \tibetan\char59 +l___sa_ba \tibetan\char60 +l___sa_ma \tibetan\char61 +l___sa_tsa \tibetan\char62 +l___ka_wa \tibetan\char63 +l___kha_wa \tibetan\char64 +l___ga_ra_wa \tibetan\char66 +l___ra_ga_wa \tibetan\char67 +l___nya_wa \tibetan\char68 +l___da_wa \tibetan\char69 +l___tsha_wa \tibetan\char70 +l___ra_tsa_wa \tibetan\char71 +l___zha_wa \tibetan\char72 +l___za_wa \tibetan\char73 +l___ra_wa \tibetan\char74 +l___la_wa \tibetan\char75 +l___sha_wa \tibetan\char76 +l___ha_wa \tibetan\char77 +l___pha_ya_wa \tibetan\char78 +l___ca_wa \tibetan\char79 +l___ka_ya \tibetan\char80 +l___kha_ya \tibetan\char81 +l___ga_ya \tibetan\char82 +l___pa_ya \tibetan\char83 +l___pha_ya \tibetan\char84 +l___ba_ya \tibetan\char85 +l___ma_ya \tibetan\char86 +l___ka_ra \tibetan\char87 +l___kha_ra \tibetan\char88 +l___ga_ra \tibetan\char89 +l___ta_ra \tibetan\char90 +l___tha_ra \tibetan\char91 +l___da_ra \tibetan\char92 +l___na_ra \tibetan\char93 +l___pa_ra \tibetan\char94 +l___pha_ra \tibetan\char95 +l___ba_ra \tibetan\char96 +l___ma_ra \tibetan\char97 +l___sha_ra \tibetan\char98 +l___sa_ra \tibetan\char99 +l___ha_ra \tibetan\char100 +l___ka_la \tibetan\char101 +l___ga_la \tibetan\char102 +l___ba_la \tibetan\char103 +l___za_la \tibetan\char104 +l___ra_la \tibetan\char105 +l___sa_la \tibetan\char106 +l___ra_ka_ya \tibetan\char107 +l___ra_ga_ya \tibetan\char108 +l___sa_ka_ya \tibetan\char109 +l___sa_ka_ra \tibetan\char110 +l___sa_ga_ya \tibetan\char111 +l___sa_ga_ra \tibetan\char112 +l___sa_pa_ya \tibetan\char113 +l___sa_pa_ra \tibetan\char114 +l___sa_ba_ya \tibetan\char115 +l___sa_ba_ra \tibetan\char116 +l___ra_ma_ya \tibetan\char117 +l___sa_ma_ya \tibetan\char118 +l___sa_ma_ra \tibetan\char119 +l___ta_wa \tibetan\char120 +l___tsa_wa \tibetan\char121 +l___sa_wa \tibetan\char122 +l___da_ha \tibsp\char20 +l___ga_ha \tibsp\char21 +l___daX_ha \tibsp\char22 +l___ba_ha \tibsp\char23 +l___dza_ha \tibsp\char24 +c___thaX \tibsp\char25 +c___taX \tibsp\char26 +c___daX \tibsp\char27 +c___naX \tibsp\char28 +l___ka_shaX \tibsp\char29 +c___shaX \tibsp\char30 + + + + + + + diff --git a/language/tibetan/steiner/readme b/language/tibetan/steiner/readme new file mode 100644 index 0000000000..ed04e899ec --- /dev/null +++ b/language/tibetan/steiner/readme @@ -0,0 +1,56 @@ + +README for ttt (Tibetan Transcript Translator) +============================================== + +IMPORTANT +--------- + +This Package only supplies the Tibetan Transcript Translator. +You must have Sam Sirlin's font(*.mf), font metrics (*.tfm) +and tibdef.tex installed! If you don't have Metafont or work +on an old LaTeX version, follow the special instructions in +INSTALL.HOW. + +Please look at ... + + the remarks at the top of the c source code. + INSTALL.HOW + tttintro.* + The documentation supplied with the other two packages. + + +FEATURES +-------- + +This program is able to typeset many syllables which originate from +Sanskrit. Tables and inline LaTeX commands are also supported. +You can import ACIP transcribed texts into LaTeX. +Look at tttintro.* for further info. + + +DISADVANTAGES +------------- + +More complex command line. +The vovels on tsa, tsha and dza are not specially handled and don't +look as nice as in the other implementations. The same applies to +cu and tsu, which are not confused any more. You will have to +remove such workarounds from your texts. + + +THANKS +------ + +to Jeff Sparkes and Sam Sirlin for their previous implementations, +which supplied me the fonts and some good ideas for the ttt program. + + + Beat.Steiner@gseved.admin.ch March 1997 + + + + + + + + diff --git a/language/tibetan/steiner/tex.ttd b/language/tibetan/steiner/tex.ttd new file mode 100644 index 0000000000..91e8da2ede --- /dev/null +++ b/language/tibetan/steiner/tex.ttd @@ -0,0 +1,206 @@ +c___ka \tibetan\char0 +c___kha \tibetan\char1 +p___ga \tibetan\char2 +c___nga \tibetan\char3 +c___ca \tibetan\char4 +c___cha \tibetan\char5 +c___ja \tibetan\char6 +c___nya \tibetan\char7 +c___ta \tibetan\char8 +c___tha \tibetan\char9 +p___da \tibetan\char10 +c___na \tibetan\char11 +c___pa \tibetan\char12 +c___pha \tibetan\char13 +p___ba \tibetan\char14 +p___ma \tibetan\char15 +c___tsa \tibetan\char16 +c___tsha \tibetan\char17 +c___dza \tibetan\char18 +b___wa \tibetan\char19 +c___zha \tibetan\char20 +c___za \tibetan\char21 +p___'a \tibetan\char22 +b___ya \tibetan\char23 +b___ra \tibetan\char24 +b___la \tibetan\char25 +c___sha \tibetan\char26 +c___sa \tibetan\char27 +b___ha \tibetan\char28 +c___a \tibetan\char29 +v___a{ +v___a} +v___gigu{ \gigu{ +v___gigu} } +v___shabkyu{ \shabkyu{ +v___shabkyu} } +v___drengbu{ \drengbu{ +v___drengbu} } +v___naro{ \naro{ +v___naro} } +v___anusvaara{ \anusvaara{ +v___anusvaara} } +v___dummy{ +v___dummy} +.___shad \tibsp\char115 +.___shad_space \hskip1cm plus1cm minus.5cm +.___tsheg \tibsp\char114{\rm\tiny\kern-0.35em\ } +.___tshegshad \tibsp\char121 +.___swasti \tibsp\char116 +.___visarga \visarga +.___0 \tibsp\char0 +.___1 \tibsp\char1 +.___2 \tibsp\char2 +.___3 \tibsp\char3 +.___4 \tibsp\char4 +.___5 \tibsp\char5 +.___6 \tibsp\char6 +.___7 \tibsp\char7 +.___8 \tibsp\char8 +.___9 \tibsp\char9 +x___preamble \input{tptex} +x___postamble +x___error \rm{\huge\bf ?} + +x___inner_box{ \hbox{ +x___inner_box} } +x___outer_box{ \strut\baselineskip0pt\vtop{ +x___outer_box} } + +x___transp_word +x___transp_char +x___active_in~ %% +x___active_in{ \begin{Tibetan} +x___active_in} \end{Tibetan} +x___active{ \parindent=0pt +x___active} \rm + +.___no_tsheg + +c___aa \aa +l___ha_ya \hya +l___ra_ya \rya +l___dza_ra \dzra + +c___\swasti \swasti +c___\ai \ai +c___\om \om +c___\dme \dme +c___\hung \hung +c___\hrih \hrih +c___\endsym \endsym +c___\altm{ \altm{ +c___\altmu{ \altmu{ +c___\subm{ \subm{ +c___\achung{ \achung{ + +l___ra_ka \tibetan\char30 +l___ra_ga \tibetan\char31 +l___ra_nga \tibetan\char32 +l___ra_ja \tibetan\char33 +l___ra_nya \tibetan\char34 +l___ra_ta \tibetan\char35 +l___ra_da \tibetan\char36 +l___ra_na \tibetan\char37 +l___ra_ba \tibetan\char38 +l___ra_ma \tibetan\char39 +l___ra_tsa \tibetan\char40 +l___ra_dza \tibetan\char41 +l___la_ka \tibetan\char42 +l___la_ga \tibetan\char43 +l___la_nga \tibetan\char44 +l___la_ca \tibetan\char45 +l___la_ja \tibetan\char46 +l___la_ta \tibetan\char47 +l___la_da \tibetan\char48 +l___la_pa \tibetan\char49 +l___la_ba \tibetan\char50 +l___la_ha \tibetan\char51 +l___sa_ka \tibetan\char52 +l___sa_ga \tibetan\char53 +l___sa_nga \tibetan\char54 +l___sa_nya \tibetan\char55 +l___sa_ta \tibetan\char56 +l___sa_da \tibetan\char57 +l___sa_na \tibetan\char58 +l___sa_pa \tibetan\char59 +l___sa_ba \tibetan\char60 +l___sa_ma \tibetan\char61 +l___sa_tsa \tibetan\char62 +l___ka_wa \tibetan\char63 +l___kha_wa \tibetan\char64 +l___ga_ra_wa \tibetan\char66 +l___ra_ga_wa \tibetan\char67 +l___nya_wa \tibetan\char68 +l___da_wa \tibetan\char69 +l___tsha_wa \tibetan\char70 +l___ra_tsa_wa \tibetan\char71 +l___zha_wa \tibetan\char72 +l___za_wa \tibetan\char73 +l___ra_wa \tibetan\char74 +l___la_wa \tibetan\char75 +l___sha_wa \tibetan\char76 +l___ha_wa \tibetan\char77 +l___pha_ya_wa \tibetan\char78 +l___ca_wa \tibetan\char79 +l___ka_ya \tibetan\char80 +l___kha_ya \tibetan\char81 +l___ga_ya \tibetan\char82 +l___pa_ya \tibetan\char83 +l___pha_ya \tibetan\char84 +l___ba_ya \tibetan\char85 +l___ma_ya \tibetan\char86 +l___ka_ra \tibetan\char87 +l___kha_ra \tibetan\char88 +l___ga_ra \tibetan\char89 +l___ta_ra \tibetan\char90 +l___tha_ra \tibetan\char91 +l___da_ra \tibetan\char92 +l___na_ra \tibetan\char93 +l___pa_ra \tibetan\char94 +l___pha_ra \tibetan\char95 +l___ba_ra \tibetan\char96 +l___ma_ra \tibetan\char97 +l___sha_ra \tibetan\char98 +l___sa_ra \tibetan\char99 +l___ha_ra \tibetan\char100 +l___ka_la \tibetan\char101 +l___ga_la \tibetan\char102 +l___ba_la \tibetan\char103 +l___za_la \tibetan\char104 +l___ra_la \tibetan\char105 +l___sa_la \tibetan\char106 +l___ra_ka_ya \tibetan\char107 +l___ra_ga_ya \tibetan\char108 +l___sa_ka_ya \tibetan\char109 +l___sa_ka_ra \tibetan\char110 +l___sa_ga_ya \tibetan\char111 +l___sa_ga_ra \tibetan\char112 +l___sa_pa_ya \tibetan\char113 +l___sa_pa_ra \tibetan\char114 +l___sa_ba_ya \tibetan\char115 +l___sa_ba_ra \tibetan\char116 +l___ra_ma_ya \tibetan\char117 +l___sa_ma_ya \tibetan\char118 +l___sa_ma_ra \tibetan\char119 +l___ta_wa \tibetan\char120 +l___tsa_wa \tibetan\char121 +l___sa_wa \tibetan\char122 +l___da_ha \tibsp\char20 +l___ga_ha \tibsp\char21 +l___daX_ha \tibsp\char22 +l___ba_ha \tibsp\char23 +l___dza_ha \tibsp\char24 +c___thaX \tibsp\char25 +c___taX \tibsp\char26 +c___daX \tibsp\char27 +c___naX \tibsp\char28 +l___ka_shaX \tibsp\char29 +c___shaX \tibsp\char30 + + + + + + + diff --git a/language/tibetan/steiner/tplatex.tex b/language/tibetan/steiner/tplatex.tex new file mode 100644 index 0000000000..f9ba6f179c --- /dev/null +++ b/language/tibetan/steiner/tplatex.tex @@ -0,0 +1,114 @@ +% +% LaTeX Preamble for the Tibetan Transcript Translator +% Written and collected by Beat.Steiner@gseved.admin.ch +% + +% Thanks to J. Sparkes and Sam Sirlin to give me the necessary ideas +% to solve LaTeX boxing problems + + +% Vovel Macros + +% Sorry for using such brute force to (almost) center the +% vovels on their main letter. The \kern commands work around the +% fact that a \hfil is never negative. +% A further benefit is that the ligature boxes are only as +% wide as the main letter even if the vovel is wider. +% Unfortunately, an \accent can not be put on boxes (generic ligatures). + + +\def\gigu#1{\strut + \vbox{\baselineskip0pt\ialign{## + \cr{\hfil\rm\kern-8.7em + \tibsp\accent126 + \rm\kern-9em\hfil} + \cr{#1}\cr + }}} + +\def\shabkyu#1{\strut + \vtop{\baselineskip0pt\ialign{## + \cr{#1} + \cr{\hfil\rm\kern-9em + \tibsp\char123 + \rm\kern-8.9em\hfil} + \cr + }}} + + +\def\drengbu#1{\strut + \vbox{\baselineskip0pt\ialign{## + \cr{\hfil\rm\kern-9em + \tibsp\accent127 + \rm\kern-9em\hfil} + \cr{#1}\cr + }}} + +\def\naro#1{\baselineskip0pt\strut + \vbox{\baselineskip0pt\ialign{## + \cr{\hfil\rm\kern-8.7em + \tibsp\accent125 + \rm\kern-9em\hfil} + \cr{#1}\cr + }}} + +\def\anusvaara#1{\strut\baselineskip0pt + \vbox{\baselineskip0pt\ialign{## + \cr{\hfil\rm\kern-8.9em + \tibsp\char0 + \rm\kern-9em\hfil} + \cr{#1}\cr + }}} + + + +% Fonts + +\font\tibetan=gtib +\font\tibsp=gtibsp + + + +% Manual ligature definitions + + +\def\aa{\strut + \vtop{\baselineskip0pt\ialign{## + \cr{\tibetan\char29} + \cr{\hfil\rm\kern-8.7em + \tibetan\char22 + \rm\kern-9em\hfil} + \cr + }}} + +\def \rya{\vtop{\baselineskip0pt\hbox{\tibetan\char24}\hbox{\tibsp\char4}}} +\def \hya{\vtop{\baselineskip0pt\hbox{\tibetan\char28}\hbox{\tibsp\char4}}} +\def \dzra{\vtop{\baselineskip0pt\hbox{\tibetan\char18}\hbox{\tibsp\char127}}} + + + +% Sam Sirlin's \endsym +\def \visarga{ +\vtop{\ialign{##\cr +{\tibsp\char0}\cr +\noalign{\kern -2pt\nointerlineskip} +{\hskip1pt\bf-}\cr +\noalign{\nointerlineskip} +{\tibsp\char0}\cr }} +} + +% From Sam Sirlin +\input{tibdef.tex} + +% LaTeX Preamble + +\documentclass[a4paper]{article} +\begin{document} + +\parindent=0pt +\parskip=0pt +\sloppy + + + + + diff --git a/language/tibetan/steiner/tptex.tex b/language/tibetan/steiner/tptex.tex new file mode 100644 index 0000000000..bfd149a7d3 --- /dev/null +++ b/language/tibetan/steiner/tptex.tex @@ -0,0 +1,117 @@ +% +% LaTeX Preamble for the Tibetan Transcript Translator +% Written and collected by Beat.Steiner@gseved.admin.ch +% + +% Thanks to J. Sparkes and Sam Sirlin to give me the necessary ideas +% to solve LaTeX boxing problems + + +% Vovel Macros + +% Sorry for using such brute force to (almost) center the +% vovels on their main letter. The \kern commands work around the +% fact that a \hfil is never negative. +% A further benefit is that the ligature boxes are only as +% wide as the main letter even if the vovel is wider. +% Unfortunately, an \accent can not be put on boxes (generic ligatures). + + +\def\gigu#1{\strut + \vbox{\baselineskip0pt\ialign{## + \cr{\hfil\rm\kern-8.7em + \tibsp\accent126 + \rm\kern-9em\hfil} + \cr{#1}\cr + }}} + +\def\shabkyu#1{\strut + \vtop{\baselineskip0pt\ialign{## + \cr{#1} + \cr{\hfil\rm\kern-9em + \tibsp\char123 + \rm\kern-8.9em\hfil} + \cr + }}} + + +\def\drengbu#1{\strut + \vbox{\baselineskip0pt\ialign{## + \cr{\hfil\rm\kern-9em + \tibsp\accent127 + \rm\kern-9em\hfil} + \cr{#1}\cr + }}} + +\def\naro#1{\baselineskip0pt\strut + \vbox{\baselineskip0pt\ialign{## + \cr{\hfil\rm\kern-8.7em + \tibsp\accent125 + \rm\kern-9em\hfil} + \cr{#1}\cr + }}} + +\def\anusvaara#1{\strut\baselineskip0pt + \vbox{\baselineskip0pt\ialign{## + \cr{\hfil\rm\kern-8.9em + \tibsp\char0 + \rm\kern-9em\hfil} + \cr{#1}\cr + }}} + + + +% Fonts + +\font\tibetan=gtib +\font\tibsp=gtibsp + +% Manual ligature definitions + +\def\aa{\strut + \vtop{\baselineskip0pt\ialign{## + \cr{\tibetan\char29} + \cr{\hfil\rm\kern-8.7em + \tibetan\char22 + \rm\kern-9em\hfil} + \cr + }}} + +\def \rya{\vtop{\baselineskip0pt\hbox{\tibetan\char24}\hbox{\tibsp\char4}}} +\def \hya{\vtop{\baselineskip0pt\hbox{\tibetan\char28}\hbox{\tibsp\char4}}} +\def \dzra{\vtop{\baselineskip0pt\hbox{\tibetan\char18}\hbox{\tibsp\char127}}} + +% Sam Sirlin's end symbol \endsym +\def \visarga{ +\vtop{\ialign{##\cr +{\tibsp\char0}\cr +\noalign{\kern -2pt\nointerlineskip} +{\hskip1pt\bf-}\cr +\noalign{\nointerlineskip} +{\tibsp\char0}\cr }} +} + + +% From Sam Sirlin +\input{tibdef.tex} + +\parindent=0pt +\parskip=0pt + + + + + + + + + + + + + + + + + + diff --git a/language/tibetan/steiner/ttt.c b/language/tibetan/steiner/ttt.c new file mode 100644 index 0000000000..c5765dce58 --- /dev/null +++ b/language/tibetan/steiner/ttt.c @@ -0,0 +1,1121 @@ +/***********************************************************************/ +/***********************************************************************/ +/* */ +/* Tibetan Transcript Translator */ +/* */ +/***********************************************************************/ +/***********************************************************************/ +/* + (C) Dec 1996 / Jan, Feb 1997 by + Beat Steiner, Brunngasse 12, 3011 Bern, Switzerland + e-mail: Beat.Steiner@gseved.admin.ch + Version 0.1 alpha prerelease + + + LEGAL STUFF + ----------- + Refer to GNU General Public License (feel free to use and distribute + this program at your own risk but at no cost, keeping copyright + notices intact). + + + DESCRIPTION + ----------- + This program is intended to convert different transcript standards + of the Tibetan language or even to perform a transcript import into + a document processing system. + + At present, it is able to convert transcripts to LaTeX, based + on Jeff sparkes' and / or Sam Sirlin's fonts and ideas. Since I + got into trouble to reverse engineer Sparkes' code, I have rewriten + the complete transcript translator, only picking some ideas from his + code. + + The main additional feature is fully automatic ligature generation, + openness towards different transcript standards and inline LaTeX + command support. + + The main disadvantages are: + ** Sparkes' and Sirlin's language mix handling is not supported yet. + ** vovels on tsa, tsha, dza (resp. TZA, TSA, DZA) do not look nice. + + WARNING: the ttd file format is still subject to change. + If you create your own ttd files now, you risk to spend much work + on updating them. + + + INSTALLING + ---------- + Install Sam Sirlin's fonts from the CTAN archive + tex/language/tibetan/sirlin + to the appropriate directory or set the Tex font path. + Do the same with the tfm files. Look at the README file + for help on this. If you dont have metafont, use Jeff Sparkes' + pk and tfm files. + + This is a single file program which can be compiled without + complication by + gcc ttt.c -o ttt + or + cc ttt.c -o ttt + or whatever ANSI compliant C compiler you have. + + + STARTING THIS PROGRAM + --------------------- + In order to translate ACIP to LaTeX, use + + ttt acip.ttd latex.ttd input.tib output.tex + + where acip.ttd is the input transcript definition file + . latex.ttd is the output transcript definition file + . input.tib is your ACIP input text + . output.tex is the output file to be processed by latex + + On Linux, you will enjoy the feature of magic line support: + In your input.tib file, add the following two lines at the + VERY TOP (replacing the respective filenames): + + #!/bin/sh + ttt acip.ttd latex.ttd $0 output.tex; latex output; exit + + Due to the magic line at the top, (ba)sh will think that your text + input.tib is a shell script, executing the 2nd line. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + This program will ignore the FIRST AND THE SECOND + line if the FIRST line starts with #! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + Do not put anything, even not comments above these lines. + $0 is automatically replaced by the file name (e.g. input.tib). + + Then turn your input.tib file into an executable by + chmod 755 input.tib + + Now, you can start this program by entering + input.tib + at the shell command prompt. + + DOS users, please write an apropriate *.BAT file (without $0). + Windows users may set the command line options as program properties. + + + RETURN VALUES + ------------- + 0: Normal program completion. + 1: x___error occurred (unknown input key, missing output ligature + . and such) + 2: Could not open a file or bad number of command line arguments + 3: Static memory allocation overrun + + + IMPLEMENTATION NOTICE + --------------------- + This kind of implementation was motivated by the need of importing + texts typed at Sera Monastery into the ClearLook document + processing system and solving other conversion problems like + differences between ACIP and Wiley transcripts plus the need to + import both of them into LaTeX, ClearLook, Lout and other programs. + + Therefore, a very flexible solution based on Tibetan Transcript + Definition (ttd) files has been chosen. + They map the different transcribed letters, control sequences + and ligatures (btags pa) to common keys. + + example: ACIP --> LaTeX conversion for the letter 'tsa + the acip.ttd file says: + c___tsa TZ + which associates the key 'tsa' to the value 'TZ' + the tex.ttd file says: + c___tsa \tibetan\char16 + which associates the key 'tsa' to the tex font chracter. + + The magic characters before the transcript key have the following + meaning: + + 1st char: + c: normal consonant + p: potential prefix (negative bias for ligature generation) + b: potential btagspa (simplified lower part of ligatureand ha, + positive bias for ligature generation) + .: punctuation (Terminates syllable and suppresses tsheg) + x: program control + + 2nd char and 3rd char: + reserved for generic ligature generation (join styles, + character substitution) + + 4th char: + _: just to increase readability of ttd file + + Meaning of x___ keys: + + General controls: + x___preamble Will be at top of output without being asked for + x___postamble Will be at bottom of output without being asked for + x___error Error message included to output file + + Generic ligatures: + x___inner_box{ Encapsulation of individual characters (no vovels) + x___inner_box} + x___outer_box{ Encapsulation of whole ligature without vovel + x___outer_box} + + Mixed language handling (subject to change, not fully implemented yet) + x___transp_word Input will be put out without modification til space + x___transp_char Unmodified character passing + x___transp_reg{ Unmodified region passing start + x___transp_reg} end + x___transp_reg~ toggle + + + WARNING: The values of the input ttd and the keys of the output + ttd file MUST be unique, otherwise the result is undefined. + + The input stream is scanned for the largest matched value in the + input ttd file, giving the common key. A lookup in the output ttd + file generates the output stream. + + The ligature generation is a special issue documented at the + rather complicated if construct in the main function. + + + To Do: + ------ + + ** Better char comparison in ttread + ** Write documentation + ** allow comments in ttd files + ** Warn on ambiguous transcript (gyin, gyas, ...) + ** Full support of Sirlin and Sparkes + ** Mixed language support + Two flags allow mixing Tibetan, other languages and control sequences: + 'active' says wether or not the lookup and ligature generation + . take place or not. If not, + 'transparent' says wether the input stream is passed unmodified to + . the output stream or simply be ignored (crunched). + + ** Clean escape char handling for binary output + + ** More intelligence for Generic Ligatures + ** Font: Character fragments for generic ligatures + ** Vertically stretched (50% or 75%) chars for generic ligatures + ** Mirrored gigu + + ALMOST DONE + ----------- + ** Clean up and update comments and program style + ** Read filenames from command line + . (unflexible, no default handling, magic lines for linux only) + ** Vovel support for generic ligatures (still a LaTeX problem to solve) + ** (Only) two vovels on a character supported + + PERFORMANCE + ----------- + The actual lookup process is performed by a binary search although + a hash table lookup is expected to be about 5 times faster. This is + just caused by my not being that much familiar with C++ and g++. + Furtheron, bsearch is better documented and available on more + compilers. + This program needs less than 1 second to produce 6 a4paper output pages + on my 5x86 machine. So there are more important problems to solve now. + */ + +/***********************************************************************/ +/* May this program contribute to the */ +/* Dharma practice of many people */ +/***********************************************************************/ + +/******************************/ +/******************************/ +/* */ +/* Includes */ +/* */ +/******************************/ +/******************************/ + +#include <stdio.h> +#include <stdlib.h> /* contians qsort and bsearch */ +#include <string.h> + + +/******************************/ +/******************************/ +/* */ +/* Static Memory Allocations */ +/* */ +/******************************/ +/******************************/ + +const int MAX_SYL_SIZE_LINE = __LINE__ + 1; +#define MAX_SYL_SIZE 50 +/* maximum characters per syllable (ligature complexity) + very cheap and should be enough + */ + +const int MAX_KEY_VAL_LENGTH_LINE = __LINE__ + 1; +#define MAX_KEY_VAL_LENGTH 44 +/* maximum ttd key/value length + critical for output preamble + hint: try to include the preamble + */ + +const int TTSIZE_LINE = __LINE__ + 1; +#define TTSIZE 300 +/* transcript table size + critical for predefined ligatures + keep in mind that you add an appropriate command margin + to the number of characters in your font. + */ + +const int INPUT_LINEBUFFER_LENGTH_LINE = __LINE__ + 1; +#define INPUT_LINEBUFFER_LENGTH 180 +/* Maximum line length of input text file */ + + +/******************************/ +/******************************/ +/* */ +/* Global stuff */ +/* */ +/******************************/ +/******************************/ + +typedef struct +{ + char key[MAX_KEY_VAL_LENGTH]; + char val[MAX_KEY_VAL_LENGTH]; +} ttentry; + +char ESCAPE_CHAR='\xff'; +int KEY_LEN[MAX_KEY_VAL_LENGTH]; +int X_ERROR_OCCURRED = 0; +static FILE *OUTTEXT; + +/******************************/ +/******************************/ +/* */ +/* Functions */ +/* */ +/******************************/ +/******************************/ + +void trace(char *message) +{ + /* + if (message == NULL) + { + fprintf(stderr, "<NULL>"); + fflush(stderr); + }else{ + fprintf(stderr, "<%s>", message); + fflush(stderr); + } + */ +} + + +/******************************/ + +/* clean interface for strncmp */ +int ttcmp(const void *first, const void *second) +{ + return strncmp(((ttentry*)first)->key, ((ttentry*)second)->key, + MAX_KEY_VAL_LENGTH); } + + +/******************************/ + +void ttprepare(ttentry ttable[]) +{ + qsort(&ttable[0], TTSIZE, sizeof(ttentry), ttcmp); +} + + +/******************************/ + +char *ttlookup(const char *key, const ttentry ttable[]) +{ + ttentry *found=NULL; + + if (key) + { + found=(ttentry*)bsearch(key, ttable, TTSIZE, + sizeof(ttentry), ttcmp); + + if (found) + { + return found->val; + }else{ + return NULL; + } + } +} + + +/******************************/ + +void ttread(const char *name, int swap, ttentry ttable[]) +{ + /* This procedure reads the transcript definition files. + The first column MUST be strictly left aligned. + 'name' is the filenamae + 'swap' is a flag which swaps the key/value reading order: + file contents for swap=0: + <key> <value> + file contents for swap=1: + <value> <key> + 'ttable' is the transcript table where the file is read into. + 'TTSIZE' is allocated statically and needed to avoid an + index overflow + */ + char c = ' '; /* not EOF */ + char *cp = NULL; + char *cp_start = NULL; /* Needed for ptr range check */ + FILE *ttd = NULL; + int idx = 0; + + void CheckCP(void) + { + if ((cp - cp_start) >= (MAX_KEY_VAL_LENGTH - 1)) + { + fprintf(stderr, "Insufficient static memory allocation. "); + fprintf(stderr, "Please increase MAX_KEY_VAL_LENGTH in "); + fprintf(stderr, "line %d of %s and compile again.\n", + MAX_KEY_VAL_LENGTH_LINE, __FILE__); + exit(3); + } + } + + /* Clear array storing input ttd key length flags + for boosting performance in charparse() */ + for (idx = 0; idx < MAX_KEY_VAL_LENGTH; idx++) + { + KEY_LEN[idx] = 0; + } + idx = 0; + + /* Clear transcript table struct arrays */ + for (idx = 0; idx < TTSIZE; idx++) + { + *ttable[idx].key = '\0'; + *ttable[idx].val = '\0'; + } + idx = 0; + + + if (!(ttd = fopen(name, "r") )) + { + fprintf(stderr, "%s %s\n", "could not open ttd file ", name); + exit(2); + } + + + /* ev. better with strpbrk() */ + while (c != EOF && idx < TTSIZE) + { + /* Read ttd keys/values */ + if (swap) cp = ttable[idx].val; + else cp = ttable[idx].key; + + cp_start = cp; + + c = fgetc(ttd); + while ( c != ' ' && c != '\t' && c != '\n' && c != EOF) + { + *cp++ = c; CheckCP(); + c=fgetc(ttd); + } + *cp++ = '\0'; CheckCP(); + + /* Eliminate separtor garbage */ + while ( c == ' ' || c == '\t' ) + { c = fgetc(ttd); + } + + /* Read ttd values/keys */ + if (swap) cp = ttable[idx].key; + else cp = ttable[idx].val; + + cp_start = cp; + while ( c != '\t' && c != '\n' && c != EOF ) + /* ev. add comment char and spaces */ + { + *cp++ = c; CheckCP(); + c = fgetc(ttd); + } + *cp++ = '\0'; CheckCP(); + + /* Eliminate trailing garbage */ + while ( c != '\n' && c != EOF ) + { c = fgetc(ttd); + } + + /* mark existing key lengths */ + KEY_LEN[strlen(ttable[idx].key)] = !0; + + idx++; + } + if (idx >= TTSIZE) + { + fprintf(stderr, "Insufficient memory allocation. Please increase"); + fprintf(stderr, + " TTSIZE in line %d of %s and compile again.\n", + TTSIZE_LINE, __FILE__); + exit(3); + } +} + + +/******************************/ + +void prepare_flags(ttentry inptrans[], ttentry outtrans[], + int *active, int *transparent) +{ + char *charptr; + + /* Set activity flag according to INPUT ttd */ + charptr=ttlookup("x___init_active", inptrans); + if (charptr) + { + if ( strcasecmp("yes", charptr) == 0 ) + { *active = 1; }else{ *active = 0; + } + } + + /* Set transparency flag according to OUTPUT ttd */ + charptr=ttlookup("x___init_transprent", outtrans); + if (charptr) + { + if ( strcasecmp("yes", charptr) == 0 ) + { *transparent = 1; }else{ *transparent = 0; + } + } + + + /* Set escape character + In this release, escapechar is only accepted if it is the first + char in the output ttd */ + + charptr=ttlookup("x___escape_char", outtrans); + if (charptr) + { + ESCAPE_CHAR = *charptr; + } +} + + +/******************************/ + +char *charparse(const char *input, int *parsestep, + const ttentry *inptrans) +{ + char yigcpy[MAX_KEY_VAL_LENGTH+1]; + char *charptr=NULL; + int parselen; + int yiglen; + + strncpy(yigcpy, input, MAX_KEY_VAL_LENGTH); + parselen=strlen(input); + if (parselen > MAX_KEY_VAL_LENGTH) parselen=MAX_KEY_VAL_LENGTH; + yiglen=parselen; + + while (yiglen > 0 && charptr == NULL) + { + yigcpy[yiglen] = '\0'; + if (KEY_LEN[yiglen]) charptr = ttlookup(yigcpy, inptrans); + yiglen--; + } + *parsestep=yiglen+1; + return charptr; +} + + +/******************************/ + +void yigprint(char *yig, + ttentry *outtrans) +{ + char *charptr=NULL; + if (yig != NULL) + { + charptr=ttlookup(yig, outtrans); + if (charptr) + { + /* DIRTY: detects escape char only if it is the first one. */ + if (*charptr != ESCAPE_CHAR) + { + if (*charptr != '\0') fprintf(OUTTEXT, "%s", charptr); + /* fflush(OUTTEXT); */ + }else{ + charptr++; /* skip the escape char itself */ + fprintf(OUTTEXT, "%c", (char)strtol(charptr, NULL, 0)); + /* fflush(OUTTEXT); */ + } + }else{ /* no output ttd match */ + X_ERROR_OCCURRED = !0; + fprintf(OUTTEXT, "%s", ttlookup("x___error", outtrans)); + fflush(OUTTEXT); + trace(yig); + } + }else{ + /* trace("gugus"); */ + } +} + + +/******************************/ + +int vovel_left(char *syl[MAX_SYL_SIZE], int start, int syllength) +{ + int i; + int result = 0; + + for (i=start; i<syllength; i++) + { + /* trace(syl[i]); */ + if (*syl[i] == 'v') result = !0; + } + return result; +} + + +/**********************************************************************/ +/**********************************************************************/ +/********************* *********************/ +/********************* Main *********************/ +/********************* *********************/ +/**********************************************************************/ +/**********************************************************************/ + +int main(int argc, char **argv) +{ + /* Trnscript tables + TTSIZE is #defined at the static memory allocations at top of code + */ + ttentry inptrans[TTSIZE]; + ttentry outtrans[TTSIZE]; + + /* Filter activity flag */ + int active = 0; /* 0=non-Tibetan, 1=Tibetan text */ + + /* Filter transparency flag */ + int transparent = 0; /* 0=crunch non-Tibetan, 1=pass non-Tibetan */ + + int pending_tsheg = 0; /* (c) by Jeff Sparkes */ + int pending_shad_space = 0; /* (c) by Jeff Sparkes */ + + /* Char & syllable buffers */ + char linebuf [INPUT_LINEBUFFER_LENGTH + 1]; + char inner_vovel_key_buf [MAX_KEY_VAL_LENGTH + 2]; + char outer_vovel_key_buf [MAX_KEY_VAL_LENGTH + 2]; + char lig_key[MAX_SYL_SIZE * MAX_KEY_VAL_LENGTH]; + char *charptr = NULL; + char *parseptr = NULL; + char *yig = NULL; +/* char *yigbuf = NULL; */ + + char *syllable[MAX_SYL_SIZE]; + int sylindex; + int sylend; + int parsestep; + int i; + int geni; + int firstline = !0; + int skipline = 0; + + char *active_start = NULL; + char *active_end = NULL; + char *active_toggle = NULL; + + int active_start_len = 0; + int active_end_len = 0; + int active_toggle_len = 0; + + + /* Input text file */ + static FILE *inptext; + /* OUTTEXT is defined in the global section */ + + +/******************************/ +/* */ +/* Preparation */ +/* */ +/******************************/ + + + if (argc != 5) + { + /* fprintf(stderr, "You gave %d arguments:\n", argc - 1); + fprintf(stderr, "Input ttd: %s\n", argv[1]); + fprintf(stderr, "Output ttd: %s\n", argv[2]); */ + fprintf(stderr, + "USAGE: %s input.ttd output.ttd input.text output.text\n", + argv[0]); + exit(2); + } + + + /* Read transcript tables from files and prepare (sort) them + for binary search. Input ttd MUST be read last in order to + maintain the KEY_LEN array + */ + ttread (argv[2], 0, outtrans); + ttread (argv[1], 1, inptrans); + ttprepare(inptrans); + ttprepare(outtrans); + + +trace(ttlookup("c___ka", outtrans)); + +trace("prepare activity flags"); + +// active_start = ttlookup("x___active_in{", outtrans); +// if (active_start != NULL) active_start_len = strlen(active_start); +// trace(active_start); +// active_end = ttlookup("x___active_in}", outtrans); +// if (active_end != NULL) active_end_len = strlen(active_end); +// trace(active_end); +// active_toggle = ttlookup("x___active_in~", outtrans); +// if (active_toggle != NULL) active_toggle_len = strlen(active_toggle); +// trace(active_toggle); + + if (ttlookup("x___active_init", inptrans) != NULL) + { + active = !0; + }else{ + active = 0; + } + +/******************************/ +/* */ +/* Open Files */ +/* */ +/******************************/ + + + /* Open input text file */ + if (strncmp(argv[3], "-", 2) != 0) + { + if (!( inptext = fopen(argv[3], "r") )) + { + fprintf(stderr, "%s", "Could not open input text file"); + exit(2); + } + }else{ + inptext = stdin; + } + + /* Open output text file (outtext is global)*/ + if (strncmp(argv[4], "-", 2) != 0) + { + if (!( OUTTEXT = fopen(argv[4], "w") )) + { + fprintf(stderr, "%s", "Could not open output text file"); + exit(2); + } + }else{ + OUTTEXT = stdout; + } + + +/******************************/ +/* */ +/* Start Output */ +/* */ +/******************************/ + + /* Output preamble */ + yigprint("x___preamble", outtrans); + + prepare_flags(inptrans, outtrans, + &active, &transparent); + + + /* read input text file */ + while (fgets(linebuf, INPUT_LINEBUFFER_LENGTH, inptext) != NULL) + { + if (strlen(linebuf) >= (INPUT_LINEBUFFER_LENGTH-1)) + { + fprintf(stderr, "Input file contains too long lines. "); + fprintf(stderr, "Please keep them shorter than %d ", + INPUT_LINEBUFFER_LENGTH); + fprintf(stderr, "characters or increase "); + fprintf(stderr, "INPUT_LINEBUFFER_LENGTH in line %d of %s", + INPUT_LINEBUFFER_LENGTH_LINE, __FILE__); + fprintf(stderr, " and compile again.\n"); + exit(3); + } + + if (skipline) + { + *linebuf = '\0'; + skipline = 0; + } + + /* Filter out magic lines for Linux */ + parseptr = linebuf + 1; + if (firstline && (*linebuf == '#') && (*parseptr == '!')) + { + *linebuf = '\0'; + skipline = !0; + } + firstline = 0; + + parseptr = linebuf; + + /* parse until end of line */ + while (*parseptr != '\0' && *parseptr != '\n' && *parseptr != '\13') + { + yig = charparse(parseptr, &parsestep, inptrans); + if (yig != NULL) + { + if (*yig == 'x') trace(yig); + + if (strncmp(yig, "x___active{", MAX_KEY_VAL_LENGTH) == 0) + { + parseptr += parsestep; + active = !0; + if (ttlookup("x___active{", outtrans)) + { + yigprint("x___active{", outtrans); + } + } + + if (strncmp(yig, "x___active}", MAX_KEY_VAL_LENGTH) == 0) + { + parseptr += parsestep; + active = 0; + if (ttlookup("x___active}", outtrans)) + { + yigprint("x___active}", outtrans); + } + } + + if (strncmp(yig, "x___active~", MAX_KEY_VAL_LENGTH) == 0) + { + parseptr += parsestep; + trace("active toggle"); + active = !active; + if (active) + { + if (ttlookup("x___active{", outtrans)) + { + yigprint("x___active{", outtrans); + } + }else{ + if (ttlookup("x___active}", outtrans)) + { + yigprint("x___active}", outtrans); + } + } + } + } + if (active) + { + /*** read one syllable ***/ + sylindex = 0; + + do{ + yig = charparse(parseptr, &parsestep, inptrans); + if (yig == NULL) + { + sylend = !0; + if ( *parseptr == ' ' || *parseptr == '\x0D' + || *parseptr == '\0' || *parseptr == '\n' + || *parseptr == '\t' ) + { + }else{ + X_ERROR_OCCURRED = !0; + yigprint("x___error", outtrans); + /* fprintf(OUTTEXT, "Input not defined"); */ + } + parseptr++; + }else{ + if (*yig != '.' && *yig != 'x') + { + sylend = 0; + }else{ + pending_tsheg = 0; + sylend = !0; + if (strncmp(yig, ".___shad", MAX_KEY_VAL_LENGTH) == 0) + { + pending_shad_space = !0; + } + if (strncmp(yig, ".___tshegshad", + MAX_KEY_VAL_LENGTH) == 0) + { + pending_shad_space = !0; + } + if (strncmp(yig, "x___transp_line", + MAX_KEY_VAL_LENGTH) == 0) + { + while(!( *parseptr == '\0' + || *parseptr == '\n')) + { + fprintf(OUTTEXT, "%c", *parseptr++); + } + } + if (strncmp(yig, "x___transp_word", + MAX_KEY_VAL_LENGTH) == 0) + { + while(!(*parseptr == ' ' + || *parseptr == '\x0D' + || *parseptr == '\0' + || *parseptr == '\t' + || *parseptr == '\n')) + { + fprintf(OUTTEXT, "%c", *parseptr++); + } + } + if (strncmp(yig, "x___transp_char", + MAX_KEY_VAL_LENGTH) == 0) + { + fprintf(OUTTEXT, "%c", *parseptr++); + } + } + if ( *yig == 'v' || *yig == 'c' + || *yig == 'p' || *yig == 'b') + { + pending_tsheg = !0; + } + syllable[sylindex++] = yig; + if (parsestep > 0) + { + parseptr += parsestep; + }else{ + X_ERROR_OCCURRED = !0; + yigprint("x___error", outtrans); + fprintf(OUTTEXT, "sylr 2"); + parseptr++; + } + } + } + while (!sylend); + + /*** trace("syllable read"); ***/ + + /******************************/ + /* */ + /* Syllable Analysis */ + /* */ + /******************************/ + + + /* does syllable contain a prefix ? */ + if (sylindex >= 3) + /* at least 2 chars + 1 (inherent)vovel */ + { + if (*syllable[0] == 'p' + /* potential prefix marked as such in ttd */ + + && *syllable[1] != 'v' + /* vovel? -> pot. prefix is main letter */ + + /* is pot. prefix part of a ligature? */ + && !(strncmp(syllable[0], "p___'a", + MAX_KEY_VAL_LENGTH) != 0 + /* 'a is NEVER upper part of a ligature */ + /* ( I at least hope so ) */ + + && *syllable[1] == 'b' + /* ya, ra, la, wa subjoined to pot. prefix */ + + && *syllable[2] == 'v' + /* ligature complete -> no prefix + examples: bya, gya .... + negative examples: brgyad ... */ + + /* WARNING: gyin, gyas ... give wrong result + (ambiguous transcript). + Work around this using the + dummy vovel (usually '-'). + Examples: g-yin, g-yas, bu -ddha, ... + */ + ) + ) + { + yigprint(syllable[0], outtrans); /* output prefix */ + for (i = 0; i < sylindex; i++) + { + /* shift away prefix */ + syllable[i] = syllable[i + 1]; + } + sylindex--; + } + } /* min length for prefix */ + + /******************************/ + /* */ + /* Ligature Generation */ + /* */ + /******************************/ + + i = 0; + while (vovel_left(syllable, i, sylindex)) + { + if (*syllable[i] == 'v' && + strncmp(syllable[i], "v___dummy", MAX_KEY_VAL_LENGTH) + != 0) + { + strncpy(lig_key, "c___a", MAX_KEY_VAL_LENGTH); + } + else if(*syllable[i + 1] == 'v') + { + strncpy(lig_key, syllable[i++], MAX_KEY_VAL_LENGTH); + } + else + { + geni = i; + strncpy(lig_key, "l__", MAX_KEY_VAL_LENGTH); + while (i < sylindex && *syllable[i] != 'v') + /* compose ligature key */ + { + charptr = syllable[i]; + charptr += 3; /* cut off type */ + /* example p___ba + b___ya => l___ba_ya */ + + strncat(lig_key, charptr, MAX_KEY_VAL_LENGTH); + i++; + } + } + strncpy(inner_vovel_key_buf, syllable[i++], + MAX_KEY_VAL_LENGTH); + + if (i < sylindex) + { + if (*syllable[i] == 'v') + { + strncpy( outer_vovel_key_buf, syllable[i++], + MAX_KEY_VAL_LENGTH); + strncat( outer_vovel_key_buf, "{", + MAX_KEY_VAL_LENGTH); + yigprint(outer_vovel_key_buf, outtrans); + }else{ + *outer_vovel_key_buf = '\0'; + } + }else{ + *outer_vovel_key_buf = '\0'; + } + strncat( inner_vovel_key_buf, "{", MAX_KEY_VAL_LENGTH); + yigprint(inner_vovel_key_buf, outtrans); + + if (ttlookup(lig_key, outtrans)) + { + /* Predefined ligature */ + yigprint(lig_key, outtrans); + }else{ + /* Automatic ligature generation */ + yigprint("x___outer_box{", outtrans); + while (*syllable[geni] != 'v') + { + yigprint("x___inner_box{", outtrans); + + + /* Look for predefined two-letter ligatures + within generic ligature */ + charptr = NULL; + if (*syllable[geni+1] != 'v') + { + strncpy(lig_key, "l__", MAX_KEY_VAL_LENGTH); + charptr = syllable[geni]; + charptr += 3; + strncat(lig_key, charptr, MAX_KEY_VAL_LENGTH); + charptr = syllable[geni+1]; + charptr += 3; + strncat(lig_key, charptr, MAX_KEY_VAL_LENGTH); + charptr = ttlookup(lig_key, outtrans); + } + + if (charptr) + { + yigprint(lig_key, outtrans); + geni += 2; + }else{ + /* Single-letter generic ligature part */ + yigprint(syllable[geni++], outtrans); + } + yigprint("x___inner_box}", outtrans); + } + yigprint("x___outer_box}", outtrans); + } + + inner_vovel_key_buf[strlen(inner_vovel_key_buf) - 1] = '}'; + yigprint(inner_vovel_key_buf, outtrans); + + if (*outer_vovel_key_buf != '\0') + { + outer_vovel_key_buf[strlen(outer_vovel_key_buf) - 1] + = '}'; + yigprint(outer_vovel_key_buf, outtrans); + } + + } /* while vovel left */ + + while (i < sylindex) /* output suffix */ + { + yigprint(syllable[i], outtrans); + i++; + } + + if (pending_tsheg) + { + yigprint(".___tsheg", outtrans); + pending_tsheg = 0; + } + + if (pending_shad_space && (*parseptr == ' ' + || *parseptr == '\t' + || *parseptr == '\x0D' + || *parseptr == '\0' + || *parseptr == '\n')) + { + yigprint(".___shad_space", outtrans); + } + pending_shad_space = 0; /* MUST be after '}' */ + + }else{ /* not active */ +// if (strncmp(parseptr, "%%", 2) == 0) +// { +// active = !0; + fprintf(OUTTEXT, "%c", *parseptr++); + } + + } /* while parseptr */ + + fprintf(OUTTEXT, "\n"); + + } /* while fgets */ + + yigprint("x___postamble", outtrans); + fprintf(OUTTEXT, "\n"); + + if (X_ERROR_OCCURRED) + { + exit(1); + }else{ + exit(0); + } +} + + + + + + + + + + + + + + + + + + + + + + diff --git a/language/tibetan/steiner/tttintro.ps b/language/tibetan/steiner/tttintro.ps new file mode 100644 index 0000000000..abc6fac698 --- /dev/null +++ b/language/tibetan/steiner/tttintro.ps @@ -0,0 +1,828 @@ +%!PS-Adobe-2.0 +%%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software +%%Title: test.dvi +%%Pages: 4 +%%PageOrder: Ascend +%%BoundingBox: 0 0 596 842 +%%DocumentPaperSizes: a4 +%%EndComments +%DVIPSCommandLine: dvips -o tttintro.ps test.dvi +%DVIPSParameters: dpi=300, compressed, comments removed +%DVIPSSource: TeX output 1997.03.03:1017 +%%BeginProcSet: texc.pro +/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N +/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 +mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} +ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale +isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div +hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul +TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} +forall round exch round exch]setmatrix}N /@landscape{/isls true N}B +/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B +/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ +/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N +string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N +end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ +/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] +N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup +length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ +128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub +get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data +dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N +/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup +/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx +0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff +setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff +.1 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N +/cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id +gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp +add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add +/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{ +dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 +adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 +idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string +putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval +adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg} +{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{ +adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2 +chg nd}{pop nd}]dup{bind pop}forall N /D{/cc X dup type /stringtype ne{] +}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup +length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ +cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin +0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul +add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict +/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook +known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X +/IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for +65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 +0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V +{}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 +getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} +ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false +RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 +false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform +round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg +rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail +{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} +B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ +4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ +p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p +a}B /bos{/SS save N}B /eos{SS restore}B end +%%EndProcSet +TeXDict begin 39158280 55380996 1000 300 300 (test.dvi) +@start /Fa 61 122 df<12C0A81200A312C0A2020D7C8C0B>33 +D<1236A312FFA21236127E126CA212FFA2126CA2080D7F8C0B>35 +D<1208123C124A128BA212C81278123E120F120912C9A2126A123C1208A208107F8D0B> +I<1208121012201260124012C0A61240126012201210120805107D8D0B>40 +D<128012401220123012101218A61210123012201240128005107E8D0B>I<1218A212DB +127E1218127E12DB1218A208097F8A0B>I<124012E0126012201240128003067C820B> +44 D<12FFA208027F860B>I<124012E0124003037C820B>I<1203A212071206120E120C +121C1218A2123812301270126012E012C0A208107F8D0B>I<123C1266A212C3A71266A2 +123C080D7F8C0B>I<123C126612C3A21203A21206120C120812101220124312FF080D7F +8C0B>50 D<127E1260A4127C12461203A212C3A21246123C080D7F8C0B>53 +D<12FF12C21206120CA21218A31230A5080D7F8C0B>55 D<124012E012401200A3124012 +E0124003097C880B>58 D<124012E012401200A3124012E01260122012401280030C7C88 +0B>I<120CA2121E1212A41233A2123F1233A2EAF3C00A0D808C0B>65 +D<12FE12621263A31266127E1263A4126212FE080D7F8C0B>I<121D12271263124312C0 +A5124312631226121C080D7F8C0B>I<12FE1263A2EA6180A7EA6300A212FE090D808C0B> +I<B4FC1263A21260A2126C127C126C1260A2EA6180A212FF090D7F8C0B>I<12FF1263A2 +1260A21266127E12661260A412F8080D7F8C0B>I<121D12271263124312C0A3EACF80EA +C300124312631227121F090D7F8C0B>I<12E71266A5127E1266A512E7080D7F8C0B>I<12 +FF1218AB12FF080D7F8C0B>I<12F81260A91263A212FF080D7F8C0B>76 +D<EAF3C0EA7380A21261A3126DA31261A3EAF3C00A0D808C0B>I<12FF1276A21266A712 +6EA212FE080D7F8C0B>I<127E12E712C3A912E7127E080D7F8C0B>I<12FC12661263A312 +66127C1260A512F0080D7F8C0B>I<12F8126C1266A3126C1278126CA3EA6D80A2EAF700 +090D7F8C0B>82 D<123E124612C612C0A21278123E12071203A212C312C212FC080D7F8C +0B>I<EAFFC012CCA2EA0C00A9123F0A0D808C0B>I<EAF3C0EA6180EA3300A51212A3121E +A2120C0A0D808C0B>86 D<EAF3C0EA6180A4126DA2EA2D00122512211233A30A0D808C0B +>I<EA7380EA3300123E121E121C120CA2121EA31233A2EAF3C00A0D808C0B>I<EAF3C0EA +3300A3121EA3120CA5121E0A0D808C0B>I<127812C41206A2127E12C6A3EA7B8009097F +880B>97 D<12F01230A3123E1233EA3180A5EA3300123E090D808C0B>I<1238126C12C0 +A5126C123806097E880B>I<121E1206A3123E126612C6A51266EA3F80090D7F8C0B>I<12 +38126412C6A212FE12C0A21266123C07097F880B>I<1207EA1980EA1800A2EAFF80EA18 +00A7B4FC090D808C0B>I<EA1DC01222EA6300A21222123C1260127FEA3F80EA41C012C0 +A3EA6180EA1E000A0F80880B>I<12F01230A31236123B1233A6EAFFC00A0D808C0B>I<12 +18A21200A312F81218A712FF080E7E8D0B>I<120CA21200A3127C120CAB12C812700613 +7F8D0B>I<12F01230A3EA3F80EA3600123E123C123E12361233A2EAFBC00A0D808C0B>I< +12F81218AB12FF080D7F8C0B>I<12FBEA6D80A7EAFFC00A0980880B>I<12F6123B1233A6 +EAFFC00A0980880B>I<123C126612C3A51266123C08097F880B>I<12FE1233EA3180A5EA +3300123E1230A412FC090E80880B>I<12F7EA3980EA3000A612FE09097F880B>114 +D<127C128CA212F01278120C12C4A212F806097E880B>I<1218A2B4FC1218A5EA1980A2 +EA0F00090B808A0B>I<B4FC1233A7EA1FC00A0980880B>I<EAF3C0EA3300A3123F121EA3 +120C0A0980880B>I<EAFFC0EA6180A2EA2100122DA2123F1237A20A0980880B>I<EAF380 +EA3300121E121C120C121EA21233EAF3C00A0980880B>I<EAF3C0EA3300A2123B121B12 +1A120EA3120CA2126C127812300A0E80880B>I E /Fb 36 121 df<EB0FF0EB7FFC3801 +F80E3803E01F48485AEA0F80A2141E140C91C7FCA4B6FCA2380F801FB2397FF0FFE0A21B +237FA21F>12 D<1238127C12FEA3127C123807077C8610>46 D<13181378EA01F812FFA2 +1201B3A7387FFFE0A213207C9F1C>49 D<EA03FCEA0FFF383C1FC0387007E0007C13F0EA +FE0314F8A21301127CEA3803120014F0A2EB07E014C0EB0F80EB1F00133E13385BEBE018 +EA01C0EA0380EA0700000E1338380FFFF05A5A5AB5FCA215207D9F1C>I<13FE3807FFC0 +380F07E0381E03F0123FEB81F8A3EA1F0314F0120014E0EB07C0EB1F803801FE007F3800 +07C0EB01F014F8EB00FCA2003C13FE127EB4FCA314FCEA7E01007813F8381E07F0380FFF +C03801FE0017207E9F1C>I<14E013011303A21307130F131FA21337137713E7EA01C713 +87EA03071207120E120C12181238127012E0B6FCA2380007E0A790B5FCA218207E9F1C> +I<D903FE138090381FFF819038FF01E33901F8003FD803E0131F4848130F48481307121F +48C71203A2481401127EA200FE91C7FCA8127EED0180127F7E15036C6C1400120F6C6C13 +06D803F05B6C6C13386CB413F090381FFFC0D903FEC7FC21227DA128>67 +D<B612FCA23807F000153C151C150C150EA21506140CA31500141C143CEBFFFCA2EBF03C +141C140CA21503A214001506A3150EA2151E153EEC01FCB6FCA220227EA125>69 +D<D903FE134090391FFFC0C090387F00F1D801F8133F4848130FD807C01307000F140348 +5A48C71201A2481400127EA200FE1500A791380FFFFC127E007F9038001FC0A27EA26C7E +6C7E6C7E6C7ED801FC133F39007F80E790381FFFC30103130026227DA12C>71 +D<B53883FFFEA23A07F0001FC0AD90B6FCA29038F0001FAFB53883FFFEA227227EA12C> +I<B512C0A2D807F0C7FCB31518A41538A21570A215F014011407B6FCA21D227EA122>76 +D<D8FFF0EC0FFF6D5C000716E0D806FC1437A3017E1467A26D14C7A290391F800187A290 +390FC00307A3903807E006A2903803F00CA2903801F818A3903800FC30A2EC7E60A2EC3F +C0A2EC1F80A3EC0F00D8FFF091B5FC140630227EA135>I<D8FFF8EB1FFE7F0007EC00C0 +7FEA06FF6D7E6D7E6D7E130F806D7E6D7E6D7E130080EC7F80EC3FC0EC1FE0EC0FF01407 +15F8EC03FCEC01FEEC00FF157FA2153F151F150F15071503A2D8FFF01301150027227EA1 +2C>I<B6FC15E03907F007F0EC01FC1400157EA2157FA5157EA215FC1401EC07F090B512 +E0150001F0C7FCADB57EA220227EA126>80 D<3801FE023807FF86381F01FE383C007E00 +7C131E0078130EA200F81306A27E1400B4FC13E06CB4FC14C06C13F06C13F86C13FC0003 +13FEEA003F1303EB007F143FA200C0131FA36C131EA26C133C12FCB413F838C7FFE00080 +138018227DA11F>83 D<B5EB0FFEA2D807F0EB00C0A26C6CEB0180A26D1303000115007F +000014067F6D5BA2EC801C013F1318ECC038011F133014E0010F5BA26D6C5AA214F90103 +5B14FD6DB4C7FCA26D5AA3147CA21438A227227FA12A>86 D<B53A0FFFF00FFEA2260FF0 +0090C712E000076E14C0A26C6C90393F800180A26D14C00001EE0300A26D496C5A000002 +6F1306A2017F9038C7F00CA2028113F8013F01835BA29139C301FC38011F153016FE9026 +0FE6005BA202FEEBFFE06D486D5AA26D486D5AA36D486DC7FCA36D48130EA237227FA13A +>I<EA0FFC383FFF80387E07C0EB03E0130114F0123C1200A2133FEA03FDEA1FC1EA3F01 +127E12FCA4EA7E02EB0CF8381FF87F3807E03F18167E951B>97 D<EBFF80000713E0380F +83F0EA1F03123E127E387C01E090C7FC12FCA6127C127EA2003E13186C1330380FC06038 +07FFC0C6130015167E9519>99 D<EB01FEA2EB003EABEA01FC3807FFBE380F81FE381F00 +7E003E133E127E127C12FCA8127CA26C137E6C13FE380F83BE3907FF3FC0EA01FC1A237E +A21F>I<13FE3807FF80380F87C0381E01E0003E13F0EA7C0014F812FCA2B5FCA200FCC7 +FCA3127CA2127E003E13186C1330380FC0703803FFC0C6130015167E951A>I<3801FE0F +3907FFBF80380F87C7381F03E7391E01E000003E7FA5001E5BEA1F03380F87C0EBFF80D8 +09FEC7FC0018C8FCA2121C381FFFE06C13F86C13FE001F7F383C003F48EB0F80481307A4 +0078EB0F006C131E001F137C6CB45A000113C019217F951C>103 +D<B4FCA2121FABEB07E0EB1FF8EB307CEB403CEB803EA21300AE39FFE1FFC0A21A237EA2 +1F>I<121C123E127FA3123E121CC7FCA7B4FCA2121FB2EAFFE0A20B247EA310>I<B4FCA2 +121FABECFF80A2EC38001460495A495A49C7FC130E5B137E13FF13CFEB0F806D7E6D7E13 +01806D7E147C143C39FFE0FFC0A21A237EA21E>107 D<B4FCA2121FB3ADEAFFE0A20B23 +7EA210>I<3AFF07F007F090391FFC1FFC3A1F303E303E01401340496C487EA201001300 +AE3BFFE0FFE0FFE0A22B167E9530>I<38FF07E0EB1FF8381F307CEB403CEB803EA21300 +AE39FFE1FFC0A21A167E951F>I<13FE3807FFC0380F83E0381E00F0003E13F848137CA3 +00FC137EA7007C137CA26C13F8381F01F0380F83E03807FFC03800FE0017167E951C>I< +38FF0FE0EB3FF8381FE07CEB803E497E1580A2EC0FC0A8EC1F80A29038803F00EBC03EEB +E0FCEB3FF8EB0FC090C8FCA8EAFFE0A21A207E951F>I<EAFE1FEB3FC0381E67E013C713 +87A2381F83C090C7FCADEAFFF0A213167E9517>114 D<EA0FF3EA3FFFEA781FEA6007EA +E003A212F000FCC7FCEA7FE013F8EA3FFEEA0FFF120138000F80EAC007130312E0A238F0 +0700EAFC0EEAEFFCEAC7F011167E9516>I<487EA41203A21207A2120F123FB5FCA2EA0F +80ABEB8180A5EB8300EA07C3EA03FEEA00F811207F9F16>I<38FF01FEA2381F003EAF14 +7E14FE380F81BE3907FF3FC0EA01FC1A167E951F>I<39FFE01FE0A2391F800700000F13 +06EBC00E0007130C13E000035BA26C6C5AA26C6C5AA2EB7CC0A2137F6D5AA26DC7FCA213 +0EA21B167F951E>I<39FFE07FC0A2390F801C006C6C5A6C6C5AEBF0606C6C5A3800F980 +137F6DC7FC7F80497E1337EB63E0EBC1F03801C0F848487E3807007E000E133E39FF80FF +E0A21B167F951E>120 D E /Fc 33 101 df<001FB6FC4815C04815E0A216F0A390380F +FC0F397E07F807EA7C030078EBF003A23A7001E001E012E0A212C015006D5AA4C7FCA791 +C7FCB11660A824357E9B28>0 D<000FB612FE003FEDFF805A17C0B8FC178001C3138190 +39007C007F4801F0EB3F00485B49487F007C49131EEA780391C7FCA21306161C49140CEB +0FFCECFFC015F015FC4913FEEDFF8C02F913DC3A381E000FFC0110130390C8FC163C161C +160493C7FCB11218A62A367E9B2E>I<0003B612FC001F15FF5A17805AA2381FE03F3A07 +800FF87F3A0E0007E03F120C001C02C01300001801037F5AA2007014801260EA7F80EAFF +F813FE01FF141E14C314E314FB387800FFC7123F141F140F14071403140114001500160E +B11606A529367D9B2E>I<001FB512C04814F05AB6FCA215C090C8FC12FC5A5AA25AABEA +FFF8EBFFC014F814FF158015E015F0A239FC003FF8C71203EC00FC153C15041E237E9B22 +>I<90380FFFF0017F13FF48B612804815005DC614F8010013806EC7FC143EA2147E147F +4A7E497FD8E00F7F007FB57E6C487F9038E03FFC391F800FFEEBC007000F6D7E6D7E0007 +6D13806D137FA26C6C133F6D1400A26C7E6C6C137E6D6C5A6DB45A010713C021217E9B25 +>I<0107B5FC013F14C05BA3011F1400010113C06D6CC7FC143E143C141C1418141E9038 +03FFE0013F13FC90B61280000315E04815F04815F8261FFC1C13FCD83FC0EB1FFE903800 +1803007C14000078153F161F48013C130FA3147E0070136F007801C7130E3A3E03C3801E +3A1FFF81E03C3A07FE00FFF8D801F8EB3FF028237E9B2C>I<B512FC14FFA414FC00E0C8 +FCA6B512FE80A414FC00E0C8FCA7B512C014F814FE80158001C013C039E0000FE0C71201 +EC006015101C237E9B20>I<EB7FC03801FFF000077F5A5A5AEA3C07EA7803387001F0EA +E0006C5BEAF80100FC5B397C03FFC0D8780713E0C64813F05B4913F8EB7E07EBF801EBF0 +00485A157813FE6D1338A249133000001470137890C7126015E0A2EC01C0A2EC0380EC07 +005C140E141E5C5CA25C495A495A13075C49C7FC131E5B5B5B485A48C8FC1D367E9B21> +I<381FFFFC007F13FFB6FCA314FC90C8FC12F85A7EA27E7E7E13C0EBFFC014F014FCA280 +80EAFE0FEAE001C7EA7F80143F141F140FA21407A51500A35C140EA2141EA2141C143C14 +381478147014F05C495AA2495AA249C7FC130613045B19387E9B1D>I<48B512C0000714 +F0A24814F8A3EBFC03EB8001EA1F00001E1300A3003EEB01F0003F13031380391FC00770 +EBF018EBFFF06C13C06C13803801FE00EA007C13785B1201485A48481330EA0FF0EA1FFC +48B4FC481380B512E014F0380003F8EB00FC143E140FEC07B0EC03F014011400A21570A3 +1D2D7E9B21>I<0007B512F04814FC485CA25D15C001FCC8FC13E05B6CC9FC120E121E12 +1C5AEA3FFF4813E014F814FEB6FC8181D8F8077FC77F143FEC0FF814036E7E1400157E15 +3E153F81A2ED0F80A21507A2ED03C0A3150116E0A21500A31660A223307E9B27>I<9038 +1FFFF8137F90B5FC15F05A15E0D8001F1380903807C00013036D7E130014703801FFF000 +077F001F7F487FEB1FFFD878031380EA70004814C0147F15E014EFECC7F0127038300183 +383C0781391F1F01F83807FC00EA01F0C81278A31538A51518A91508A41D337E9B21>I< +9039FFFE03F80003140F4815F014FCA202F013E06CEB0007EA01FCD803F013034914C048 +5A5B48C7FC120E121E001C1401A25AEA3FFEEBFFC04813F014FC14FEB6128015C0D80001 +13E09038001FF0EC03F81400157D153F151F150F150715011500164025257E9B29>I<D8 +03FFEB0FC0000F9038C01FF04813E048EC3FF84813C0000F018013F03803FE0013F04848 +14E049137F4913FB3A0F0001E3C0000EEB078348EB0F01141C48133814F0387001E0387E +07C0397FFF8000A2B57E14F86C13FE80D8001F13C09038007FE0EC07F9EC01FDEC007F15 +1F150F1507150315011500164025257E9B29>I<017FB5FC48B612C0A24815E0A3913800 +7FC001F8131FD807E0130F5B49130790C7FC120EA2120C001CEC03801218EA3F8013F848 +B4FC14C014F0B512FC14FEECFF83D8F80113C3C7EA1FF3EC07FBEC01FF80157F153F151F +150F150715031501150023267E9B27>I<0003B513E0000FEC03F814FE16FC02FC13F86C +EBE0013803FE006C4813001200137C133C01FE14782607FF8013704813E04813F84813FE +487F1580D87C1F13C0D8F00FEBE0309038077FF800E0EB0FFC90380303FE913800FFB001 +06EB3FF000F0141FD8700E1307D87C3C1303D83FF813016C481300D803C01470C9123016 +1026217D9B2B>I<16F81507150F16F016E0ED1F80ED1C0015101518A290B512F85A5A5A +A215E0C70030C7FCA214381478147C14FE497E5B010F7FD8F07F7F397FE07FE09038001F +F06C6C6C7E001F1307EBC003000F6D7EEBE0000007147C7F15386C7E7F6C6C5B6C7E9038 +7F81E090383FFF80D907FEC7FC252B7EA529>I<167FED03FFED07FE150F16FC16F01600 +1508150C150E010FB5FC013F14805B90B6FC160015F8010390C7FCEB00FC14781470A214 +301438143C903803FFC0013F13FC48B6FC4815C0000F15E0261FF8F313F03A3FC0307FF8 +903900200FFC007EEB00030078140000F8153E480110131E1438160E1478007013FC2678 +01CC131C26380386133C261E070313783A0FFE01C1F03A03F800FFC0282D7EA52C>I<ED +1F8015FF5C4A13005D15F815C00206C7FC140E141FB67EA2815DA24AC7FC00E0C9FCA6B5 +12FE6E7EA44AC7FC00E0C9FCA7B57E14F814FF81819038E01FE000FCC7FC212A7EA525> +I<D9FFF8133E00079039FE01FFC0121F481680A24880D9007E140000FC013E7F48131E48 +010E137E480106133EA2161C5AA41618A30204131C1260A20020151EC648B6FC010F1580 +5B491500A25B9138F0007FD93F80133E6DC7121E131E131C160E13185BA21370A2136013 +E0EBFFF8ECFF804814F015FEEDFFCE2600FC3F13FE9038C0000790C71201ED003E160E2A +357D9B2F>I<90381FFFE090B512F8488048804880EBF801390FC0003F90C7EA1F80001E +140F001C14075AEB03FE393007FF8F4913EF4913FF00601500EB3C0FEB380301305B1401 +EAE018131CEB0E03903807FFBF396001FC1F90C7FC1270ED0F8012301238A26C1407A212 +1E7E6D13036C7E6C7EEA01F86C7E133FEB0F8090C7FC16C0A61501A522367E9B26>I<00 +07B512E04814F8A215FCA21203C8121CA60007B512FC5AA41203C8121CA5EB07E090B5FC +000714FC121F127FB6FC143F387FC000003CC7121C1E207E9B22>I<EB7FFF0003B512C0 +48805A48805AEB8007387E0001007C13004814705A15305AA31570156015E0EC07C0EC7F +E0396003FFF8010F13FE007080491480003015C016E02638000113F000189038001FF800 +081407C8EA03FC1501ED00FE167E163E161FA2160F1607A21603160228297E9B2C>I<00 +1E90391FC001F8267F807F130712FF01C013801380023F14F00100EB000380127E007C90 +380F8001127815C0913807E0000070804A7E810078804A7E4AEB8070007C4913C0007E90 +B512E03A3F87FC1FF0903AFFF807F860ECF0036C9038E000FC167E6C49133F6C49EB1FE0 +D801FEC7120FD80038140790C8FC1603A21601A21600A2176017202D277D9B32>I<90B5 +7E000714F0485C5A485C4AC7FC000F1380D801FEC8FC6C5A137C133C7F7FEB7F803807FF +E0001F13FC007F13FF81B612E08101007F00F0EB0FFC0080EB01FEC8127FED1F80ED07C0 +1503ED01E0150016701630161024207D9B29>I<2601FFF013F000079038FC03FC001F14 +014813FEA2481400138038FE007E48011E13785A48010E1338A35AA2021E1318143F3960 +01FF80010713C04913E0D8701F13F04913FC003014FEEC03FF903978007F98D81840EB1F +D80008C7EA07F8C812031501150016781638160826217E9B2B>I<92380FFF80033F13C0 +92B512E05C4A14F05C91380FF07FED801F91381E000F0218EB07E05C1603142014601440 +A314C06E1307A200E06D130F12FC007F01B8131FD9C08E133D3A3FE18780F13A1FF183FF +C13B03F980FE01C0D8007D1300131F130F0107140013031301130091C8FCB3A32C377E9B +30>I<2601FFFC133E000701FFEBFF80485BA2485B5CC66CC7130001FE806D147E6E133E +4813E06E133C487F4801FE131C80D80F011380391C007FC00018EB1FE0003EEB0FF0397F +C007F89038F001FC9038F800FE486C137E01FF133FED0F9C91388007DC3A003FC003FC90 +380FE001010313006D6C137CD90070133C0218130C29207E9B2E>I<48B512E0000714FC +5AA34814F001FCC8FC13E0138090C9FC121E5A0038EB1FF00030EB7FFC007890B5FCD87F +01148013C126FFFBF313C09038FFC07FEC803FEC001FEC800FC61407131F903807C00313 +03903801E001130014701410EC0003A216801507A3ED0F00A3151EA2151C153C15381578 +157015F05D14015D4A5A0206C7FC22347E9A26>I<003E903A1FFF8007C0267F807F9038 +F01FF000FF15E0A216C0496C1380913A07FE000FE0007E495A4A6C1307003C804A13804A +EBC003003803E013C0001801E013F0903901C03FF89138F00FFC903903F803FE00109038 +FE00FF6EEB7F810018ED1FC19238800FE101001407001C90390FC001F10203EB00F9001E +0101147C260F8000143E9026F00780131F90B5140F6C160792C7FC6C491403C613F8D93F +C0140190C9FCA334247D9B3A>I<3801FFFC4813FFA35C6C13F8D8003EC8FC131E130E13 +06A20003B5EA80F048EC83FC5AED03FE4813FE14F80007EB80013800FE00017CEB00FC13 +3C013E147C7F3801FFC0000701F81378001F01FE133848EBFF8015C0D87F1F13E0D87E07 +13F0397C03BFF800F8EB87FCEC81FE0078EB807FED3FB89138000FD86C48EB07F8D83E0F +1303D81FFE13016C481300D803F81478C91238A31618A2272E7E9B2B>39 +D<48B612F8000F15FE5A4815FFA39038F07FFD3A1FC01FF07F3A0F000FE03F001E903807 +C01F121C00181303160F12381230A2383FC001D87FFC140713FF14C114F1B512FD14FFEB +007F0060130FC700071303140314011400A21500A71607A3160F161E0030153E001E157C +D81FC0EB01F8D80FFEEB1FE001BFB51280D807C1EBF0006C6CC7121ED801F814FCD8007C +EB07F090393F803FC06DB51200010713F8010113C028377E9B2C>82 +D<0003B512FC5AA2485CA215E001C0C8FC90C9FC120E5A1218EC0FE048EB3FFC0020EBFF +FE003C80D87F811480EBE1F19039FBC07FC09038FF803FB5130F12F3D8003F1307010F13 +03EB03C001011301130014401400A31680A21503A216005DA2D80FE01306EA1FFC48B45B +481380ECC01CECE018000313F039001FF838903803FC301300EC7E60EC3EE0EC0FC06E5A +22337E9B26>100 D E /Fd 18 128 df<1370EA03FE487E4813804813C0383F03E03878 +006012704813205A14607E14E0387003C0EA7C0F383FFF806C13006C5AEA03F813137E9A +17>0 D<1620ED01C0923807803092381F007015FE9026F80FFC13600007B54813E04891 +38E001C048EC000302F8EB07804890C7EA0F00D87FF05C90C8127E00F84A5A48EC07F800 +C0EC3FE000F0903803FFC0B7C7FC15FC6C14F06C14C06C49C8FC000313C02C177D9A31> +4 D<3803FFF8001F13FE5A487FA301C0C7FC003EC8FC123C1238A212301270EA7FE0B5FC +14C014F014FC80380001FF9038003F80EC0FC0EC03E0EC01F01400157815381518151C15 +0C90387FFFFC48B5FC4814FEA25AA2D80FF0C7FC138090C8FCA2EC0FC048EB3FF0903880 +FFF87F01F113FC13FB90B512FE000713C10001EB807E7E90383F003E6D131E7F7F6D130E +7F90C7120C151CA31538A215301570156015E015C0EC018015001F457D9B24>20 +D<0007B612F0003F15FC5AB7FCA2EA7FE39039007FFC3C007EEB3FF0003CEB1FE0003814 +C0EC0F80A21407003E1400EA3F80EBE00313F813FEEBFF8302E31318380007FBEB01FF6D +7E141F140391C7FCA6011FB512F0137F90B6FCA25AA2D803FCC8FC13E01380487E01F8EB +0FC0486CEB7FF09039FF01FFF8028713FC4890B5FC16FED8001F13E1010313800100EB00 +7E6E133E80020E131E14060202131C91C7FC163C16381678A216F0ED01E01503ED07C0ED +0F80ED1F00153C27437E9B2B>I<381FFFFC007F13FFB61280A215C0A2EB807F38FE001F +481307007C1303A215E0A2127E007F1307387D800F3878E03F90383FFFC07F0107138039 +7003FE00EB01F86D5A0030137880143E80EC3F80ECFFC0010313E05B011F13F05B49C7FC +EA31FCEA33F0EA37C0EA3F8090C8FC123E123C1238123012201C2C7D9B21>25 +D<003FB5FCB6FCA37E121FC7FC143F141F140FA2141FA2147FEB03FF90B5FC1203120F5A +5AA2EBF81F387FC003EB8000007EC7FC127CA21278A21270A612301238A21218121CA27E +A2120F7EA26C7EA26C7E12007F13607FA27F130818387D9B1D>I<0003B512F815FF1680 +7EA26C7EEB000714019138007F0081818181ED0380EC1FFF91B5FC13035B011F14C05B5B +9038FFFC0302E0C7FC4813804848C8FC5B485A5B485A5B5B121F90C9FC121E123E123CA2 +127C1278A21270A3126012E01260A21240A222317D9A27>I<380FFFF0003F13FC80A280 +120FC613F0EB3FC06DC7FCA2131E131CEB3FFF49138090B512C015E048EBE3F048EB0070 +48481338491318120FA2EA1FEC13C401861338EA3F039038018070393E00F1E0EC7FC000 +3CEB1F80007C90C7FC1278A31270A5126012E0AD1D357E9B21>I<000FB612E0003F8148 +81B7FCA33A3FC3F80078EA0F81EA1F00121E001C1378123C003815381470481330A21260 +12405AC7FCA516181438A2143C380FFFFE8003C0C7FC9038F007F09038C000F890C7123C +150E000E806F7EA36F7EA3000F1403A27F6D497E6D130F6D131F6D133F01FE137D90387F +FFF9010F13E101001300000E90C7138016E316F716FF1700A25E167C16781640000692C7 +FC120229417E9B2D>I<EA3FFCB512C014F014FC808013E09038801F80EB0007007EEB01 +C0A2007C130015401560A21520123CA2003E1460A2003F027013606D9038F003E09039C0 +01B00F3A3BE003103F2638F80E137FD93FFC13FF903A07F019FE0090C7EA1BE0ED1FC05E +93C7FC151E151C1518151092C8FCA31230B02B367D9B30>I<123812FEA4127C12300707 +7D9A0D>114 D<127812FEA9127E127CA5123C1238AB1218B3A707357D9B0D>I<DF01FC16 +78DF0FFF923807FF80073F01C04A13E096B56C91381E7FF0952701C03FF091383007F896 +26000FF891387803FC000F942603800392387C00FED87FF0716C6C167ED8FFFE932607E0 +00037E7FC66C6C70017C027F7FD93FE06F6C013C82D90FF870DC3F801380D903FE0301DA +1C401507D900FF7002E0EB1FC0DA7FC002006F130FDA1FF0033E6E13076E6C92C7D818FC +90C71300DA03FE187E6E6C6CDC307F5D9126007FE0047001C0140EDB3FF84C6C6C5CDB0F +FF922701C01FF81478030301F0DA038001FF495A902603C001D9FFC090260F00079039E0 +0FE020902701FC007F9028FFC1FC078390B5EAC0406DB4011F9127FFF01FE1ED00809126 +3FC0039227C03FF07FEBFC0391271FF8007F9028FE0077FC0F9038F00700DA07FE010790 +28E001E3FE00EB000E912601FF80C82603C1FF90C75A9126007FE0DB0F8001C0143CDB1F +F892273E003FF814F8DB03FFDA03F86DB4EB03E0030001F8D97FE001039038F83FC0040F +B6C890B5C7FC040002F8030F13F8DD01FCCEFC7B257E997F>I<0010130800FC137EA26C +137FA248137E0078133CC8FCA7131EEB3F80A2EB7FC0A6EB3F80A9131FA41400A57FA87F +A97FAA18447D9B1D>121 D<7E12601270123C6C147F3A1F8001FF806C6C4813C0D807E0 +14E03903F0070F3A01FC0001F06C6CEB00E0D97F801360D93FE013E090390FFF1FC00103 +EBFF800100EBFE00EC1FF824117E7E28>123 D<19C01801F00380180F181FF07F00EF03 +FFEF1FFE4CB45A01FC020F5B2607FF80017F13E048D9E001B55A48D9F80349C7FC48D9FE +0713F848D9FF1F138001F7D9BFFCC8FC3AF0007FFFE0C7001F90C9FCEC07FEEC03F8EC01 +E06E5A3A167E983E>125 D<EA07F8EA1FFF4813C04813F0B57E38F83FFE38C003FF9038 +007F806CEB1FC000F8EB07E000FE6D7E397FE000F8D83FFE137C6C48131E6C481307D803 +F0EB0180C9124022117D9427>I<EA0FE0EA3FF8EA7FFE6D7EB512E000077F38001FF8EB +01FEEB003FEC0F80EC07C0EC01E0EC00F01570151815041E107E9322>I +E /Fe 1 16 df<EA07E0EA1FF8EA3FFCEA7FFEA2B5FCA6EA7FFEA2EA3FFCEA1FF8EA07E0 +10107E9115>15 D E /Ff 61 125 df<126012F0AF12601200A4126012F0A21260041977 +9816>33 D<EA0387A6B512E0A338070E00A3EA0F1EEA0E1CA3B512E0A3381C3800A61319 +7F9816>35 D<38380180EA7C03EAFE07140012EE5B130E131EEAFE1C133CEA7C381238EA +0078137013F05BA212015B12035BEB8380380787C0EB0FE0EA0F0E120E121E121CA2EA3C +0F383807C03818038013207F9C16>37 D<EA03C0487E120FEA1EF0EA1C70A3EBF7E013E7 +121F380FC7005B130E121FEA3F1EEA7F9CEAF3BCEAE3F812E138E0F0E0A2EAF1F8EA7FFF +383F9FC0381F0F8013197F9816>I<12301278127C123C121CA3123C1238127812F012E0 +12C0060D789816>I<13E01201EA07C013005A121E5A123812781270A312F05AA77E1270 +A312781238123C7E7E7E13C0EA01E012000B217A9C16>I<12E07E127C121C121E7EEA07 +80120313C01201A313E01200A7120113C0A3120313801207EA0F00121E121C127C12F05A +0B217C9C16>I<EA0380A4EAE38EEAF39EEAFFFEEA3FF8EA0FE0A2EA3FF8EAFFFEEAF39E +EAE38EEA0380A40F127D9516>I<1238127C127EA2123E120E121E123C127C12F8126007 +0B798416>44 D<B51280A311037E8D16>I<127012F8A312700505788416>I<EB01801303 +130714005B130E131E131C133C13381378137013F05B12015BA212035B120790C7FC5A12 +0E121E121C123C12381278127012F05AA211207E9C16>I<127012F8A312701200A81270 +12F8A312700512789116>58 D<EA0FF0EA3FFE487E38F00F801303A2EA600738001F0013 +7E13F85B485A5BA45BC8FCA4487E487EA26C5A11197E9816>63 D<13E0487EA213B0A2EA +03B8A31318EA071CA5EA0E0EA2EA0FFEA2487EEA1C07A3387E0FC038FF1FE0387E0FC013 +197F9816>65 D<EA7FF8EAFFFE6C7EEA1C0714801303A4EB0700EA1FFF5BA2EA1C1FEB03 +8014C01301A41303EB0780EA7FFFB51200EA7FFC12197F9816>I<3801F180EA07FF5AEA +1F0FEA3C0712781303127000F0C7FC5AA77E387003801278A2EA3C07381F0F00EA0FFE6C +5AEA01F011197E9816>I<EA7FF8EAFFFE6C7EEA1C0FEB0780EB03C01301A214E01300A8 +EB01C0A21303EB0780130F387FFF00485AEA7FF81319809816>I<387FFFC0B5FC7EEA1C +01A490C7FCA2131CA2EA1FFCA3EA1C1CA290C7FC14E0A5EA7FFFB5FC7E13197F9816>I< +3801F180EA07FF5AEA1F0FEA3C0712781303127000F0C7FC5AA4EB1FC014E014C038F003 +801270EA7807A2EA3C0FEA1E1FEA0FFFEA07FBEA01F313197F9816>71 +D<387F07F038FF8FF8387F07F0381C01C0A7EA1FFFA3EA1C01A9387F07F038FF8FF8387F +07F01519809816>I<EA7FFCEAFFFEEA7FFCEA0380B3EA7FFCEAFFFEEA7FFC0F197D9816> +I<48B4FC4813806C1300EA001CB0126012F0137CB45A6C5AEA1FC011197E9816>I<387F +0FE038FF8FF0387F0FE0381C0780EB0F00131E131C133C5B5BEA1DE07F121F7F1338EA1E +3C131CEA1C1E7F7F14801303387F07E038FF8FF0387F07E01419809816>I<B47E7F5B00 +1CC7FCAE144014E0A4B5FCA313197F9816>I<38FC07E0EAFE0FA2383A0B80EA3B1BA513 +BBEA39B3A413F3EA38E3A21303A538FE0FE0A313197F9816>I<387E07F038FF0FF8387F +07F0381D81C0A313C1121C13E1A213611371A313311339A21319131D130DA3EA7F07EAFF +87EA7F031519809816>I<EA1FFC487E487EEA780F38F00780EAE003AEEAF007A238780F +00EA7FFF6C5A6C5A11197E9816>I<EA7FF8EAFFFE6C7E381C0F80130314C01301A31303 +1480130F381FFF005B13F8001CC7FCA7127F487E6CC7FC12197F9816>I<EA7FF0EAFFFC +6C7EEA1C0FEB07801303A41307EB0F00EA1FFE5B7FEA1C1F1307A414101438A2007F13F8 +38FF83F0387F01E01519809816>82 D<EA07E3EA1FFF127FEA781F487E487EA290C7FC7E +1278EA7F80EA1FF0EA07FCC67E130FEB07801303A212E0A2EAF00738F80F00EAFFFE5BEA +C7F011197E9816>I<387FFFE0B5FCA2EAE0E0A400001300AFEA07FC487E6C5A13197F98 +16>I<387F07F038FF8FF8387F07F0381C01C0B0EA1E03000E1380EA0F8F3807FF006C5A +EA00F81519809816>I<387E03F038FF07F8387E03F0383800E0A4381C01C0A3137113F9 +A213D9A2000C1380A3EA0DDD138DA338078F00A213071519809816>87 +D<38FE0FE0EAFF1FEAFE0F381C0700A2EA0E0EA26C5AA3EA03B8A2EA01F0A26C5AA8EA03 +F8487E6C5A13197F9816>89 D<387FFF80B5FCA238E007005B131E131CEA003C5B137013 +F0485A5B1203485A90C7FC5A381E0380121C123C12781270B5FCA311197E9816>I<12E0 +A27E127012781238123C121C121E120E120F7E7F12037F1201A27F12007F137013781338 +133C131C131E130E130F7F14801303130111207E9C16>92 D<EA1FE0EA7FF87FEA783EEA +301EEA000EA2EA03FE121FEA7E0E12F012E0A2EAF01EEAF83E387FFFE0EA3FE7EA0F8313 +127E9116>97 D<12FCA3121CA4137CEA1DFF001F1380EB07C0EA1E03381C01E0A21300A4 +1301001E13C01303381F078013FF381DFE00EA0C7813197F9816>I<EA03F8EA0FFE121F +EA3C1EEA780CEA700012F05AA47EEA70071278EA3E0FEA1FFEEA0FFCEA03F010127D9116 +>I<133FA31307A4EA03C7EA0FF7EA3FFFEA3C1F487EEA700712F012E0A412F05BEA781F +EA7C3F383FFFE0EA1FF7EA07C713197F9816>I<EA03F0EA0FFC487EEA3E1FEA78070070 +1380EAF003B5FCA300E0C7FC7E387003801278EA3E0F381FFF006C5AEA03F811127E9116 +>I<3803E3C0380FFFE05A381E3CC0383C1E00EA380EA3EA3C1E6C5AEA1FFC5BEA3BE000 +38C7FCA2EA1FFC13FF4813C0EA780338F001E0EAE000A3EAF001387C07C0383FFF80380F +FE00EA03F8131C7F9116>103 D<12FCA3121CA41378EA1DFEEA1FFF130FEA1E07A2121C +A938FF8FE0139F138F13197F9816>I<1203EA0780A2EA0300C7FCA4EAFF80A31203ACEA +FFFC13FE13FC0F1A7C9916>I<13301378A213301300A4EA0FF8121F120FEA0038B3EA60 +78EAF0F0EAFFE0EA7FC0EA3F800D237E9916>I<127E12FE127E120EA4EB7FE0A3EB0F00 +131E5B5B5BEA0FF8A213BC131EEA0E0E130FEB0780387F87F0EAFFCFEA7F871419809816 +>I<EA7FC012FF127F1201B3EA7FFFB512806C130011197E9816>I<38F9C38038FFEFC0EB +FFE0EA3E7CEA3C78EA3870AA38FE7CF8A31512809116>I<EAFC78EAFDFEB5FCEA1F0FEA +1E07A2121CA938FF8FE0139F138F13127F9116>I<EA03E0EA0FF8487EEA3C1E487EEA70 +0738E00380A5EAF00700701300EA780FEA3C1EEA1FFC6C5AEA03E011127E9116>I<EAFC +7CEAFDFFB51280381F07C0EA1E03381C01E0A21300A41301001E13C01303381F078013FF +381DFE00EA1C7890C7FCA6B47EA3131B7F9116>I<387F0FC038FF3FE0EA7F7F3807F040 +EBE0005B5BA290C7FCA7EA7FFC12FF127F13127F9116>114 D<EA0FECEA3FFC127FEAF0 +3CEAE01CA2EAF000EA7F80EA1FF0EA07FCEA003EEAE00EA212F0EAF81EEAFFFC13F8EAC7 +E00F127D9116>I<12035AA4EA7FFFB5FCA20007C7FCA75BEB0380A2130713873803FF00 +5BEA00F811177F9616>I<EAFC3FA3EA1C07AA5BEA1E1F381FFFE07EEA07C713127F9116> +I<38FF1FE0A338380380A4EA39F3A20019130013B3A3EA1DB71317EA1F1FEA0F1EEA0E0E +13127F9116>119 D<387F1FC0133F131F380F1E006C5AEA03B813F012016C5A12017FEA +03B8EA073C131CEA0E0E387F1FC038FF3FE0387F1FC013127F9116>I<387F1FC038FF9F +E0387F1FC0381C0700120E130EA212075BA2EA039CA21398EA01B8A2EA00F0A35BA3485A +1279127BEA7F8090C7FC123C131B7F9116>I<383FFFC05AA238700780EB0F00131EC65A +13F8485A485A485A48C7FC381E01C0123C1278B5FCA312127F9116>I<12E0B3AE032077 +9C16>124 D E /Fg 1 66 df<131CA2133EA2136FA2EBEF8013C700017F1383A2380301 +E013FF487FEA0600000E1378120C001C137C39FF01FF80A219147F931C>65 +D E /Fh 1 66 df<1330A21378A3139CA2EA019E130EA2EA0207A200061380EA07FFEA04 +03380801C0A2001813E0EA380038FE07FC16147F9319>65 D E /Fi +58 123 df<EB7E1F3901C1B180390303E3C0000713C3000EEBC180903801C000A6B512FC +380E01C0B0387F87FC1A1D809C18>11 D<137E3801C180EA0301380703C0120EEB018090 +C7FCA5B512C0EA0E01B0387F87F8151D809C17>I<126012F0A71260AD1200A5126012F0 +A21260041E7C9D0C>33 D<126012F012F812681208A31210A2122012401280050C7C9C0C +>39 D<1380EA0100120212065AA25AA25AA35AA412E0AC1260A47EA37EA27EA27E12027E +EA0080092A7C9E10>I<7E12407E12307EA27EA27EA37EA41380AC1300A41206A35AA25A +A25A12205A5A092A7E9E10>I<126012F0A212701210A41220A212401280040C7C830C> +44 D<126012F0A2126004047C830C>46 D<5A1207123F12C71207B3A5EAFFF80D1C7C9B +15>49 D<EA07C0EA1830EA201CEA400C130EEAF00F12F81307A21270EA000F130EA2131C +A213381370136013C0EA0180EA0300EA0601120C1218EA1002EA3FFE127F12FF101C7E9B +15>I<EA07E0EA1830EA201CA2EA781E130E131E1238EA001CA2131813301360EA07C0EA +0030131CA2130E130FA2127012F8A3EAF00EEA401C1220EA1830EA07C0101D7E9B15>I< +130CA2131C133CA2135C13DC139CEA011C120312021204120C1208121012301220124012 +C0B512C038001C00A73801FFC0121C7F9B15>I<126012F0A212601200AA126012F0A212 +6004127C910C>58 D<EA0FE0EA3038EA401CEAE00E12F0A3EA000C131C1330136013C013 +8012011300A6C7FCA51203EA0780A2EA03000F1D7E9C14>63 D<1306A3130FA3EB1780A2 +EB37C01323A2EB43E01341A2EB80F0A338010078A2EBFFF83802003CA3487FA2000C131F +80001E5BB4EBFFF01C1D7F9C1F>65 D<B512C0380F00788080140E140FA4140E141E5C14 +F8EBFFF0EB003C8080801580A5EC0F00A2141E1478B512E0191C7F9B1D>I<90381F8080 +EBE0613801801938070007000E13035A14015A00781300A2127000F01400A80070148012 +78A212386CEB0100A26C13026C5B380180083800E030EB1FC0191E7E9C1E>I<B512FC38 +0F003C140C1404A214061402A213011400A35B13FF13037FA3140113001402A31406A214 +0C143CB512FC181C7E9B1C>69 D<B512F8380F007814181408A2140C1404A213011400A3 +5B13FF13037FA490C7FCA8EAFFF8161C7E9B1B>I<EAFFF0EA0F00B3A8EAFFF00C1C7F9B +0F>73 D<3807FF8038007C00133CB3127012F8A21338EA7078EA4070EA30E0EA0F80111D +7F9B15>I<EAFFF8EA0F8090C7FCB01408A31418A2141014301470EB01F0B5FC151C7E9B +1A>76 D<B4EB1FF0390F8003809038C00100120BEA09E0EA08F0A21378133C133E131E13 +0F14811307EB03C1EB01E114F113001479147D143D141FA2808080121CB46C7E1C1C7F9B +1F>78 D<EB3F80EBE0E03803803848487E000E7F487F003C148000381303007814C0A200 +70130100F014E0A8007014C000781303A200381480003C1307001C14006C130E6C5B6C6C +5A3800E0E0EB3F801B1E7E9C20>I<B51280380F00E01478143C141C141EA5141C143C14 +7814E0EBFF8090C7FCACEAFFF0171C7E9B1C>I<B5FC380F01E0EB007880141C141EA414 +1C143C5CEB01E001FFC7FCEB01E0EB0070147880A61510A2141CA239FFF00E20C7EA03C0 +1C1D7E9B1F>82 D<3807E080EA1C19EA30051303EA600112E01300A36C13007E127CEA7F +C0EA3FF8EA1FFEEA07FFC61380130FEB07C0130313011280A300C01380A238E00300EAD0 +02EACC0CEA83F8121E7E9C17>I<007FB512C038700F010060130000401440A200C01420 +1280A300001400B1497E3803FFFC1B1C7F9B1E>I<39FFF01FF0390F000380EC0100B3A2 +6C1302138000035BEA01C03800E018EB7060EB0F801C1D7F9B1F>I<3AFFE1FFC0FF3A1F +003E003C001E013C13186C6D1310A32607801F1320A33A03C0278040A33A01E043C080A3 +3A00F081E100A39038F900F3017913F2A2017E137E013E137CA2013C133C011C1338A201 +18131801081310281D7F9B2B>87 D<39FFF07FC0390FC01E003807800CEBC00800035B6C +6C5A13F000005BEB7880137C013DC7FC133E7F7F80A2EB13C0EB23E01321EB40F0497E14 +783801007C00027F141E0006131F001F148039FF807FF01C1C7F9B1F>I<39FFF003FC39 +0F8001E00007EB00C06D13800003EB01006D5A000113026C6C5A13F8EB7808EB7C18EB3C +10EB3E20131F6D5A14C06D5AABEB7FF81E1C809B1F>I<1208121012201240A21280A312 +B012F812781230050C7D9C0C>96 D<EA1FC0EA3070EA78387F12301200A2EA01FCEA0F1C +12381270126000E01340A3EA603C38304E80381F870012127E9115>I<12FC121CAA137C +EA1D87381E0180381C00C014E014601470A6146014E014C0381E018038190700EA10FC14 +1D7F9C17>I<EA03F8EA0C0CEA181E1230EA700CEA600012E0A61260EA70021230EA1804 +EA0C18EA03E00F127F9112>I<EB1F801303AAEA03F3EA0E0BEA1807EA30031270126012 +E0A6126012701230EA1807EA0E1B3803E3F0141D7F9C17>I<EA07E0EA0C30EA1818EA30 +0CEA700EEA600612E0EAFFFEEAE000A41260EA70021230EA1804EA0C18EA03E00F127F91 +12>I<13F8EA018CEA071E1206EA0E0C1300A6EAFFE0EA0E00B0EA7FE00F1D809C0D>I<EB +03803807C4C0EA1C783838388038301800EA701CA4EA3018EA38386C5AEA27C00020C7FC +A21230EA3FF86CB4FC1480EA2003386001C0EAC000A33860018038300300EA1C0EEA07F8 +121C7F9215>I<12FC121CAA137C1387EA1D03001E1380121CAD38FF9FF0141D7F9C17>I< +1218123CA21218C7FCA712FC121CB0EAFF80091D7F9C0C>I<12FC121CAAEB0FE0EB0780 +EB06005B13105B5B13E0121DEA1E70EA1C781338133C131C7F130F148038FF9FE0131D7F +9C16>107 D<12FC121CB3A9EAFF80091D7F9C0C>I<39FC7E07E0391C838838391D019018 +001EEBE01C001C13C0AD3AFF8FF8FF8021127F9124>I<EAFC7CEA1C87EA1D03001E1380 +121CAD38FF9FF014127F9117>I<EA03F0EA0E1CEA1806487E00701380EA600100E013C0 +A600601380EA700300301300EA1806EA0E1CEA03F012127F9115>I<EAFC7CEA1D87381E +0180001C13C0EB00E0A21470A614E0A2EB01C0001E1380381D0700EA1CFC90C7FCA7B47E +141A7F9117>I<3803E080EA0E19EA1805EA3807EA7003A212E0A61270A2EA38071218EA +0E1BEA03E3EA0003A7EB1FF0141A7F9116>I<EAFCE0EA1D38EA1E78A2EA1C301300ACEA +FFC00D127F9110>I<EA1F90EA2070EA4030EAC010A212E0EAF800EA7F80EA3FE0EA0FF0 +EA00F8EA8038131812C0A2EAE010EAD060EA8FC00D127F9110>I<1204A4120CA2121C12 +3CEAFFE0EA1C00A91310A5120CEA0E20EA03C00C1A7F9910>I<38FC1F80EA1C03AD1307 +120CEA0E1B3803E3F014127F9117>I<38FF07E0383C0380381C0100A2EA0E02A2EA0F06 +EA0704A2EA0388A213C8EA01D0A2EA00E0A3134013127F9116>I<39FF3FC7E0393C0703 +C0001CEB01801500130B000E1382A21311000713C4A213203803A0E8A2EBC06800011370 +A2EB8030000013201B127F911E>I<38FF0FE0381E0700EA1C06EA0E046C5AEA039013B0 +EA01E012007F12011338EA021C1204EA0C0E487E003C138038FE1FF014127F9116>I<38 +FF07E0383C0380381C0100A2EA0E02A2EA0F06EA0704A2EA0388A213C8EA01D0A2EA00E0 +A31340A25BA212F000F1C7FC12F312661238131A7F9116>I<EA7FFCEA70381260EA4070 +13F013E0EA41C012031380EA0700EA0F04120E121CEA3C0CEA380812701338EAFFF80E12 +7F9112>I E /Fj 31 122 df<127812FCA61278A81230A41200A4127812FCA41278061D +7C9C0F>33 D<13201340EA0180120313001206120E5AA2123C1238A21278A312F85AA97E +1278A31238A2123C121CA27E12067E13801201EA004013200B297C9E13>40 +D<7E12401230123812187E120E7EA213801203A213C0A313E01201A9120313C0A31380A2 +12071300A2120E120C5A1238123012405A0B297D9E13>I<EAFFF8A40D04808A10>45 +D<127812FCA412781200A6127812FCA4127806127D910D>58 D<EB0380A2497EA3497EA2 +497E131BEB3BF81331A2EB60FCA2EBE0FEEBC07EA248487E90B5FC481480EB001F4814C0 +0006130FA248EB07E0A239FF803FFEA21F1C7E9B24>65 D<90381FE0209038FFF8E03803 +F80F3807C003380F800148C7FC123E1560127E127C00FC1400A8007C1460127E123E15C0 +7E390F8001803907C003003803F80E3800FFFCEB1FE01B1C7D9B22>67 +D<B6FCA2380FC01F1407801580A214C1A39038C1C00013C313FFA213C313C113C01560A2 +EC00E015C0A21401A21403EC0F80B6FCA21B1C7E9B1F>69 D<90380FF00890387FFE3839 +01FC07F83807E001390F80007848C7FC481438123E007E1418127C00FC1400A6EC7FFFA2 +007CEB01F8127E123E123F7EEA0F80EA07E03801FC0739007FFE7890380FF818201C7D9B +26>71 D<EAFFFCA2EA0FC0B3A6EAFFFCA20E1C7E9B12>73 D<EAFFFEA2EA0FC0AF1403A3 +1407A21406140E141E147EB512FEA2181C7E9B1D>76 D<EB3FE03801F07C3803C01E390F +800F80391F0007C0A2003EEB03E0007E14F0007C1301A200FC14F8A8007C14F0A2007E13 +03003E14E01307391F08C7C0390F906F803903D03E003801F87C39003FF808EB0018EC1C +18EC1FF8A2EC0FF0A2EC07E0EC03C01D247D9B24>81 D<007FB512E0A238781F81007013 +800060146000E0147000C01430A400001400B03807FFFEA21C1C7E9B21>84 +D<397FFE1FFEA23907F001803803F803000149C7FCEBFC066C6C5AEB7F1C6D5A14B0EB1F +E0130FA26D7E6D7E1307497EEB0CFEEB187EEB387F496C7E9038601FC013C000016D7E48 +486C7EEB00033AFFF01FFF80A2211C7F9B24>88 D<EA0FF8EA1C1E383E0F80130714C012 +1C1200137FEA07E7EA1F07123C127C12F8A3EA780B383E13F8EA0FE115127F9117>97 +D<B4FCA2121FA9EB3F80EBE1E0EB8070EB0078143CA2143EA6143CA21478EB8070381EC1 +E0381C3F00171D7F9C1B>I<EA03FCEA0E0EEA1C1F123C1278130E00F8C7FCA61278EB01 +80123C381C0300EA0E0EEA03F811127E9115>I<EB0FF0A21301A9EA01F9EA0F07EA1C03 +EA3C011278A212F8A61278A2123CEA1C03380F0FFEEA03F9171D7E9C1B>I<EA03FCEA0F +07381C0380383C01C0127814E012F8A2B5FC00F8C7FCA3127814607E6C13C0380F038038 +01FC0013127F9116>I<3803F0F0380E1F38EA3C0F3838073000781380A400381300EA3C +0FEA1E1CEA33F00030C7FCA3EA3FFF14C06C13E014F0387801F838F00078A30070137000 +7813F0381E03C03807FF00151B7F9118>103 D<121E123FA4121EC7FCA6127FA2121FAE +EAFFC0A20A1E7F9D0E>105 D<B4FCA2121FB3A7EAFFE0A20B1D7F9C0E>108 +D<39FF0FC07E903831E18F3A1F40F20780D980FC13C0A2EB00F8AB3AFFE7FF3FF8A22512 +7F9128>I<38FF0FC0EB31E0381F40F0EB80F8A21300AB38FFE7FFA218127F911B>I<EA01 +FC380F0780381C01C0003C13E0387800F0A200F813F8A6007813F0A2383C01E0381E03C0 +380F07803801FC0015127F9118>I<38FF3F80EBE1E0381F80F0EB0078147C143C143EA6 +143C147C1478EB80F0EBC1E0EB3F0090C7FCA6EAFFE0A2171A7F911B>I<EAFE3E134738 +1E8F80A3381F070090C7FCAAEAFFE0A211127F9114>114 D<EA1FD8EA3078EA601812E0 +A2EAF000EAFF80EA7FE013F0EA1FF8EA07FCEA007CEAC01CA212E01318EAF830EACFC00E +127E9113>I<1203A45AA25AA2EA3FFC12FFEA1F00A9130CA4EA0F08EA0798EA03F00E1A +7F9913>I<38FF07F8A2EA1F00AC1301120F380786FFEA01F818127F911B>I<38FFC1FCA2 +381F00601380000F13C0A23807C180A23803E300A213F7EA01F613FE6C5AA21378A21330 +A25B1270EAF8E05BEAF9800073C7FC123E161A7F9119>121 D E +/Fk 25 121 df<130E131E137EEA07FE12FFA212F81200B3ABB512FEA317277BA622>49 +D<EBFF80000713F04813FC381E03FE393800FF80007C133F00FE14C06C131F15E0140FA2 +127E003C131FC7FC15C0A2EC3F801500147E5C5C495A495AEB078049C7FC131E4913E013 +705B3901C001C0EA0380EA0600000FB5FC5A5A5AB61280A31B277DA622>I<EB7F803803 +FFF04813FC380F81FE381F007FEA3F80EC3F80A3121F1300C7EA7F00A2147E5C495AEB07 +F0EBFFC0A2EB01F8EB007E801580EC1FC0A215E0A2123C127EB4FCA215C0143F48148000 +7CEB7F00383F01FE6CB45A000713F0C613801B277DA622>I<140FA25C5C5C5C5BA2EB03 +BFEB073F130E131C133C1338137013E0EA01C0EA038012071300120E5A5A5A12F0B612F8 +A3C7EA7F00A890381FFFF8A31D277EA622>I<EC0780A24A7EA34A7EA24A7EA3EC77F8A2 +ECF7FC14E3A2903801C1FEA201037F1480A249486C7EA24980010E133FA2496D7EA2013F +B57EA39039700007F8A201F080491303000181491301A2000381D8FFFE013F13FCA32E29 +7EA833>65 D<B712E0A33903FC001FED07F01501A215001670A3913801C0781638A30203 +1300A2140F90B5FCA3EBFC0F1403A20201130EA3161C91C7FCA3163C1638167816F81501 +1503151FB712F0A327297EA82C>69 D<B712C0A33903FC003FED0FE015031501A21500A3 +16F0913801C070A316001403A2140F90B5FCA3EBFC0F1403A21401A491C8FCA9B512FCA3 +24297EA82A>I<B5D8F00FB5FCA3D803FCC7EA3FC0AF90B7FCA301FCC7123FB1B5D8F00F +B5FCA330297EA835>72 D<007FB71280A39039807F807FD87C00140F00781507A2007015 +0300F016C0A2481501A5C791C7FCB3A490B612C0A32A287EA72F>84 +D<3803FF80000F13F0381F01FC383F80FE147F801580EA1F00C7FCA4EB3FFF3801FC3FEA +0FE0EA1F80EA3F00127E5AA4145F007EEBDFC0393F839FFC381FFE0F3803FC031E1B7E9A +21>97 D<EB3FF03801FFFC3803F03E380FC07FEA1F80EA3F00A248133E007E90C7FCA212 +FEA7127EA2127F6CEB03801380001FEB0700380FE00E3803F83C3801FFF838003FC0191B +7E9A1E>99 D<EC7FF0A31407ACEB3F873801FFF73807F03F380FC00F381F8007EA3F00A2 +127EA312FEA8127EA27EA2381F800F380FC01F3907E07FFF3801FFE738007F87202A7EA9 +25>I<EB3FC03801FFF03807E07C48487E48487ED83F001380140F5A007E14C012FE1407 +A2B6FCA248C8FCA4127E127F6CEB01C01380001F1303390FC007803903F01F003800FFFC +EB3FE01A1B7E9A1F>I<1207EA1FC0EA3FE0A5EA1FC0EA0700C7FCA7EAFFE0A3120FB3A3 +EAFFFEA30F2B7EAA12>105 D<EAFFE0A3120FB3B2EAFFFEA30F2A7EA912>108 +D<26FFC07FEB1FC0903AC1FFC07FF0903AC307E0C1F8D80FC49038F101FC9039C803F200 +01D801FE7F01D05BA201E05BB03CFFFE3FFF8FFFE0A3331B7D9A38>I<38FFC07E9038C1 +FF809038C30FC0D80FC413E0EBC80701D813F013D0A213E0B039FFFE3FFFA3201B7D9A25 +>I<EB3FE03801FFFC3803F07E390FC01F80391F800FC0393F0007E0A2007EEB03F0A300 +FE14F8A8007E14F0A26CEB07E0A2391F800FC0390FC01F803907F07F003801FFFC38003F +E01D1B7E9A22>I<38FFE1FE9038EFFF809038FE0FE0390FF803F09038F001F801E013FC +140015FEA2157FA8157E15FEA215FC140101F013F89038F807F09038FC0FE09038EFFF80 +9038E1FC0001E0C7FCA9EAFFFEA320277E9A25>I<38FFC1F0EBC7FCEBC63E380FCC7F13 +D813D0A2EBF03EEBE000B0B5FCA3181B7F9A1B>114 D<3803FE30380FFFF0EA3E03EA78 +00127000F01370A27E00FE1300EAFFE06CB4FC14C06C13E06C13F0000713F8C6FCEB07FC +130000E0137C143C7E14387E6C137038FF01E038E7FFC000C11300161B7E9A1B>I<13E0 +A41201A31203A21207120F381FFFE0B5FCA2380FE000AD1470A73807F0E0000313C03801 +FF8038007F0014267FA51A>I<39FFE07FF0A3000F1307B2140FA2000713173903F067FF +3801FFC738007F87201B7D9A25>I<3BFFFC7FFC1FFCA33B0FE00FE001C02607F007EB03 +80A201F8EBF00700031600EC0FF801FC5C0001150EEC1FFC2600FE1C5B15FE9039FF387E +3C017F1438EC787F6D486C5A16F0ECE01F011F5CA26D486C5AA2EC800701075CA22E1B7F +9A31>119 D<39FFFC1FFEA33907F003803803F8079038FC0F003801FE1E00005BEB7F38 +14F86D5A6D5A130F806D7E130F497EEB3CFEEB38FFEB787F9038F03F803901E01FC0D803 +C013E0EB800F39FFF03FFFA3201B7F9A23>I E end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 300dpi +TeXDict begin +%%PaperSize: a4 +%%BeginPaperSize: a4 +a4 +%%EndPaperSize + +%%EndSetup +%%Page: 1 1 +1 0 bop 220 266 a Fk(1)67 b(Additional)25 b(F)-6 b(eatures)220 +373 y Fj(Q:)21 b Fi(There)13 b(are)f(no)o(w)g(already)g(t)o(w)o(o)f(L) +792 365 y Fh(A)810 373 y Fi(T)833 382 y(E)857 373 y(X)h(implem)o(en)o +(tations)d(of)j(the)g(Tib)q(etan)g(language.)324 423 +y(Wh)o(y)h(is)h(there)h(no)o(w)f(a)f(third)h(one?)220 +506 y Fj(A:)21 b Fi(Lik)o(e)d(other)g(t)o(yp)q(esetting)h(programs,)e +(the)i(ab)q(o)o(v)o(e)f(implem)o(en)o(tations)d(mak)o(e)i(use)i(of)324 +556 y(prede\014ned)e(ligatures)e(only)m(.)21 b(If)14 +b(y)o(ou)h(try)h(to)f(en)o(ter)h(pra)o(y)o(ers)g(con)o(taining)e +(Sanskrit)324 606 y(syllables)f(in)o(to)f(suc)o(h)i(a)g(system,)e(y)o +(ou)h(will)f(get)i(in)o(to)f(sev)o(ere)i(trouble.)j(Therefore,)c(I)324 +655 y(added)f(no)o(w)g(a)g(completely)f(new)h(transcript)h(prepro)q +(cessor)i(ha)o(ving)c(the)i(follo)o(wing)324 705 y(extra)g(features:) +220 788 y Fj(Compatibili)o(t)n(y:)k Fi(As)k(far)f(as)g(I)h(kno)o(w,)g +(it)f(supp)q(orts)h(all)e(con)o(trol)h(sequences)j(of)c(the)324 +838 y(ab)q(o)o(v)o(e)11 b(implemen)o(tations,)d(plus)k(the)g(A)o(CIP)g +(transcript.)18 b(If)11 b(y)o(ou)g(ha)o(v)o(e)h(y)o(et)g(another)324 +888 y(transcript,)20 b(y)o(ou)e(can)h(create)h(y)o(our)f(o)o(wn)f +(transcript)h(de\014nition)g(\014le,)g(hop)q(efully)324 +938 y(without)13 b(ha)o(ving)g(to)h(mo)q(dify)d(the)k(C)f(co)q(de.)220 +1021 y Fj(Inline)f(L)367 1012 y Fg(A)388 1021 y Fj(T)413 +1030 y(E)439 1021 y(X)j(commands:)j Fi(All)14 b(commands)f(that)i(do)g +(not)g(con)o(tain)f(spaces)i(or)f(suc)o(h)324 1071 y(can)f(b)q(e)g(t)o +(yp)q(ed)g(without)f(using)h(the)g(mo)q(de)f(switc)o(hing)g(c)o +(haracters\()p Ff(\045\045)p Fi(\).)19 b(Ev)o(en)14 b(the)324 +1120 y(tabbing)j(c)o(haracter)i(\()p Ff(&)p Fi(\))e(is)g(transparen)o +(t.)30 b(So)18 b(y)o(ou)f(can)h(easily)f(t)o(yp)q(eset)i(tabular)324 +1170 y(en)o(vironmen)o(ts)13 b(and)h(line)f(breaks.)220 +1253 y Fj(Generic)h(Ligatures:)k Fi(If)h(this)g(prepro)q(cessor)j +(encoun)o(ters)e(an)o(y)f(ligatures)g(whic)o(h)g(are)324 +1303 y(not)h(prede\014ned,)k(it)c(tries)h(to)f(comp)q(ose)g(them)g +(automatically)l(.)35 b(There)22 b(is)e(still)324 1353 +y(m)o(uc)o(h)12 b(w)o(ork)i(to)g(b)q(e)g(done)g(on)g(this:)374 +1436 y Fe(\017)20 b Fi(There)15 b(are)f(some)f(spacing)h(problems)f(to) +h(solv)o(e)g(on)f(L)1255 1427 y Fh(A)1273 1436 y Fi(T)1296 +1445 y(E)1320 1436 y(X)h(lev)o(el)374 1502 y Fe(\017)20 +b Fi(Adding)14 b(in)o(telligence)f(for)h(c)o(haracter)h(m)o(utations) +374 1569 y Fe(\017)20 b Fi(F)m(on)o(t)13 b(de\014nition)h(for)f(c)o +(haracter)j(fragmen)o(ts)374 1635 y Fe(\017)k Fi(F)m(on)o(t)13 +b(de\014nition)h(for)f(v)o(ertically)h(smaller)e(c)o(haracters)324 +1715 y(Esp)q(ecially)j(syllables)g(lik)o(e)g Fd(s)p Fc(\010)772 +1748 y Fd({)809 1715 y Fc(\010)809 1776 y(\010)809 1837 +y(\026)853 1715 y Fd(r)q Fc(\030)p Fd(s)160 b Fi(do)15 +b(not)h(lo)q(ok)e(v)o(ery)i(nice)g(and)f(need)324 1886 +y(to)q(o)f(m)o(uc)o(h)f(v)o(ertical)h(space.)20 b(But)14 +b(in)g(man)o(y)e(cases,)j(the)g(output)g(is)f(quite)g(readable)324 +1929 y(and)g(the)g(input)g(v)o(ery)g(simple)e(\(e.)19 +b(g.)39 b Ff(/tutt'a)21 b(ra/)p Fi(\).)220 2108 y Fk(2)67 +b(Ho)n(w)21 b(to)h(use)g(it)220 2249 y Fb(2.1)56 b(General)17 +b(Command)g(Line)h(Handling)220 2367 y Fi(In)d(fact,)f(it)h(is)f(v)o +(ery)h(similar)e(to)h(the)i(previous)f(implem)o(en)o(tations:)i(Y)m(ou) +d(ha)o(v)o(e)h(the)g(usual)220 2417 y(L)231 2408 y Fh(A)249 +2417 y Fi(T)272 2425 y(E)295 2417 y(X)g(pro)q(cedure)i(plus)d(an)g +(additional)f(prepro)q(cessor)k(program)c(b)q(et)o(w)o(een)j(editing)e +(and)220 2466 y(L)231 2458 y Fh(A)249 2466 y Fi(T)272 +2475 y(E)295 2466 y(Xing,)21 b(whic)o(h)f(in)o(terprets)h(a)f +(transcript)h(describ)q(ed)g(b)q(elo)o(w,)g(generating)f(Tib)q(etan)220 +2516 y(c)o(haracters)c(and)d(ligatures.)926 2831 y(1)p +eop +%%Page: 2 2 +2 1 bop 220 266 a Fi(There)15 b(is)f(some)f(extra)h(complication)e +(concerning)i(the)h(command)c(line)i(parameters:)253 +365 y Fa(STARTING)e(THIS)g(PROGRAM)253 390 y(---------------------)253 +415 y(In)g(order)g(to)g(translate)h(ACIP)f(to)g(LaTeX,)g(use)253 +465 y(ttt)g(acip.ttd)g(latex.ttd)h(input.tib)f(output.tex)253 +515 y(where)g(acip.ttd)34 b(is)11 b(the)g(input)22 b(transcript)11 +b(definition)g(file)253 540 y(.)55 b(latex.ttd)23 b(is)11 +b(the)g(output)g(transcript)g(definition)g(file)253 565 +y(.)55 b(input.tib)23 b(is)11 b(your)g(ACIP)g(input)g(text)253 +589 y(.)55 b(output.tex)12 b(is)f(the)g(output)g(file)g(to)g(be)g +(processed)g(by)h(latex)253 639 y(On)f(Linux,)g(you)g(will)h(enjoy)f +(the)g(feature)g(of)g(magic)g(line)g(support:)253 664 +y(In)g(your)g(input.tib)h(file,)f(add)g(the)g(following)g(two)g(lines)g +(at)h(the)253 689 y(VERY)f(TOP)g(\(replacing)h(the)f(respective)g +(filenames\):)253 739 y(#!/bin/sh)253 764 y(ttt)g(acip.ttd)g(latex.ttd) +h($0)f(output.tex;)g(latex)g(output;)g(exit)253 814 y(Due)g(to)g(the)g +(magic)h(line)f(at)g(the)g(top,)g(\(ba\)sh)g(will)g(think)g(that)h +(your)f(text)253 839 y(input.tib)g(is)g(a)g(shell)h(script,)f +(executing)g(the)g(2nd)g(line.)253 863 y +(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)253 +888 y(This)g(program)g(will)h(ignore)f(the)g(FIRST)g(AND)g(THE)g +(SECOND)253 913 y(line)g(if)g(the)g(FIRST)h(line)f(starts)g(with)g(#!) +253 938 y(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)253 +963 y(Do)g(not)g(put)g(anything,)h(even)f(not)g(comments)g(above)g +(these)g(lines.)253 988 y($0)g(is)g(automatically)h(replaced)f(by)g +(the)g(file)g(name)g(\(e.g.)g(input.tib\).)253 1038 y(Then)g(turn)g +(your)g(input.tib)h(file)f(into)g(an)g(executable)g(by)253 +1063 y(chmod)g(755)g(input.tib)253 1112 y(Now,)g(you)g(can)g(start)h +(this)f(program)g(by)g(entering)253 1137 y(input.tib)253 +1162 y(at)g(the)g(shell)g(command)h(prompt.)253 1212 +y(DOS)f(users,)g(please)h(write)f(an)g(apropriate)g(*.BAT)g(file)g +(\(without)h($0\).)253 1237 y(Windows)f(users)g(may)h(set)f(the)g +(command)g(line)g(options)g(as)g(program)h(properties.)220 +1395 y Fb(2.2)56 b(Whic)n(h)18 b(ttd)h(\014les)f(to)g(use)220 +1513 y Fi(A)o(t)11 b(presen)o(t,)i Ff(input.ttd)c Fi(and)i +Ff(acip.ttd)e Fi(can)i(b)q(e)h(used)g(as)f(input)g(transcript)h +(de\014nitions)220 1563 y(only)m(.)17 b(Use)d Ff(input.ttd)d +Fi(for)i(an)o(y)f(texts)j(supplied)e(b)o(y)g(Je\013)h(Spark)o(es)g(and) +f(Sam)e(Sirlin)h(and)220 1613 y(this)21 b(pac)o(k)n(age)f(\(ending)g +(in)h Ff(.tib)p Fi(\).)37 b Ff(acip.ttd)19 b Fi(only)h(for)g(A)o(CIP)h +(texts.)39 b(Y)m(ou)20 b(easily)220 1662 y(recognize)15 +b(them)e(b)o(y)h(their)g(ha)o(ving)f(an)g(UPPER)o(CASE)i(TRANSCRIPT.) +220 1754 y Ff(tex.ttd)f Fi(and)h Ff(latex.ttd)e Fi(are)i(the)h(output)f +(transcript)h(de\014nitions.)22 b(Use)16 b Ff(latex.ttd)220 +1803 y Fj(only)k Fi(for)g(A)o(CIP)h(texts.)41 b(It)21 +b(includes)g(a)g(do)q(cumen)o(t)f(pream)o(ble)g(and)h(p)q(ostam)o(ble)e +(for)220 1853 y(LaT)m(eX.)j(In)h(all)f(other)h(cases,)j(I)d(recommend)f +(y)o(ou)g(to)h(include)g(the)g(pream)o(ble)f(and)220 +1903 y(p)q(ostam)o(ble)13 b(in)o(to)g(the)h(source)h(\014le)f(and)g +(use)h Ff(tex.ttd)p Fi(.)220 2082 y Fk(3)67 b(T)-6 b(ranscription)220 +2223 y Fb(3.1)56 b(Note)220 2341 y Fi(The)15 b(upp)q(er)h(lines)f(sho)o +(w)f(the)i(transcript)f(used)h(b)o(y)e(Je\013)i(Spark)o(es)g(and)e(Sam) +f(Sirlin.)20 b(The)220 2391 y(lo)o(w)o(er)14 b(lines)g(sho)o(w)g(the)h +(A)o(CIP)g(transcription.)k(Please)c(note)g(the)g(di\013erence)h(mark)o +(ed)d(b)o(y)220 2440 y Fj(\(!\))p Fi(.)25 b(Of)17 b(course,)h +(punctuation)f(and)g(spacing)f(are)i(completely)d(di\013eren)o(t.)28 +b(F)m(or)16 b(L)1545 2432 y Fh(A)1563 2440 y Fi(T)1586 +2449 y(E)1609 2440 y(X,)220 2490 y(I)g(recommend)f(the)i(transcript)h +(in)e(the)h(upp)q(er)g(lines,)f(since)i(this)e(transcript)h +(de\014nition)220 2540 y(supp)q(orts)e(the)g(full)d(p)q(o)o(w)o(er)i +(of)g(the)g(ligature)g(generator.)926 2831 y(2)p eop +%%Page: 3 3 +3 2 bop 220 266 a Fb(3.2)56 b(Single)17 b(Characters)i(and)g(V)-5 +b(o)n(v)n(els)256 383 y Fc(\000)p Fd(r)70 b Fc(\001)p +Fd(r)79 b Fc(\002)p Fd(r)g Fc(\003)p Fd(r)256 444 y Ff(ka)71 +b(kha)83 b(ga)76 b(nga)256 493 y(KA)71 b(KHA)83 b(GA)76 +b(NGA)258 602 y Fc(\004)p Fd(r)c Fc(\005)p Fd(r)87 b +Fc(\006)p Fd(r)f Fc(\007)p Fd(r)256 663 y Ff(ca)71 b(cha)83 +b(ja)76 b(nya)256 713 y(CA)71 b(CHA)83 b(JA)76 b(NYA)262 +822 y Fc(\010)p Fd(r)82 b Fc(\011)p Fd(r)88 b Fc(\012)p +Fd(r)83 b Fc(\013)p Fd(r)256 885 y Ff(ta)71 b(tha)83 +b(da)k(na)256 935 y(TA)71 b(THA)83 b(DA)k(NA)256 1044 +y Fc(\014)p Fd(r)72 b Fc(\015)p Fd(r)84 b Fc(\016)p Fd(r)78 +b Fc(\017)p Fd(r)256 1094 y Ff(pa)71 b(pha)83 b(ba)k(ma)256 +1143 y(PA)71 b(PHA)83 b(BA)k(MA)256 1255 y Fc(\020)p +Fd(r)70 b Fc(\021)p Fd(r)84 b Fc(\022)p Fd(r)77 b Fc(\023)p +Fd(r)245 1316 y Ff(tsa)49 b(tsha)61 b(dza)76 b(wa)83 +b Fj(\(!\))245 1366 y Ff(TZA)60 b(TSA)72 b(DZA)k(WA)83 +b Fj(\(!\))257 1475 y Fc(\024)p Fd(r)77 b Fc(\025)p Fd(r)86 +b Fc(\026)p Fd(r)72 b Fc(\027)p Fd(r)245 1536 y Ff(zha)f(za)94 +b('a)87 b(ya)245 1586 y(ZHA)71 b(ZA)94 b('A)87 b(YA)256 +1695 y Fc(\030)p Fd(r)71 b Fc(\031)p Fd(r)79 b Fc(\032)p +Fd(r)72 b Fc(\033)p Fd(r)256 1758 y Ff(ra)82 b(la)h(sha)76 +b(sa)256 1808 y(RA)82 b(LA)h(SHA)76 b(SA)383 1917 y Fc(\034)p +Fd(r)h Fc(\035)p Fd(r)382 1977 y Ff(ha)105 b(a)382 2027 +y(HA)g(A)247 2215 y Fc(\035)p Fd(r)375 2187 y(~)366 2215 +y Fc(\035)14 b Fd(r)46 b Fc(\035)504 2224 y Fd({)583 +2215 y(r)641 2187 y(\177)636 2215 y Fc(\035)14 b Fd(r)764 +2187 y(})767 2215 y Fc(\035)f Fd(r)927 2187 y(\000)914 +2215 y Fc(\035)h Fd(r)57 b Fc(\035)1069 2252 y(\026)1142 +2215 y Fd(r)267 2303 y Ff(a)104 b(i)116 b(u)109 b(e)g(o)126 +b(*)116 b(aa)267 2353 y(A)104 b(I)116 b(U)109 b(E)g(O)262 +2521 y Fd(\032r)82 b(\031r)88 b(\033r)83 b(\034r)77 b(\036r)89 +b(\035r)245 2594 y Ff(txa)49 b(thxa)61 b(dxa)k(nxa)54 +b(shxa)49 b(kshxa)926 2831 y Fi(3)p eop +%%Page: 4 4 +4 3 bop 220 266 a Fb(3.3)56 b(Punctuation)18 b(Marks)h(and)g(Spacing)g +(Con)n(trol)249 383 y Fd(s)55 b(y)k(r)49 b Fi(suppress`)p +Fd(r)p Fi(')i(shad)14 b(space)62 b Fd(tr)51 b(\000)1156 +393 y Fj(-)1152 420 y Fd(\000)245 459 y Ff(/)i(!)g(,)134 +b(#)219 b(|)136 b(\\swasti)49 b(:)245 509 y(,)705 b(*)21 +b(\(?\))220 731 y Fk(4)67 b(Examples)220 871 y Fb(4.1)56 +b(Explicit)16 b(Ligature)i(Con)n(trol)247 974 y Fd(~)245 +1002 y Fc(R)c(\013)p Fd(r)40 b Fc(\002)446 974 y Fd(~)435 +1002 y Fc(\027\013)p Fd(r)g Fc(R\033)p Fd(r)g Fc(\002\027\033)p +Fd(r)k Fc(\012)p Fd(\024r)78 b Fc(\012)1079 1053 y Fd(\024)1118 +1002 y(r)248 1130 y Ff(gyin)64 b(g-yin)g(gyas)70 b(g-yas)c(ddha)49 +b(-ddha)220 1281 y Fb(4.2)56 b(Generic)17 b(Ligatures)264 +1390 y Fd(\000)242 1415 y(})245 1443 y Fc(\035)28 b Fd(r)40 +b Fc(\017)p Fd(r)483 1415 y(~)487 1443 y(\034)14 b(r)59 +b Fc(\014)652 1408 y Fd(\177)647 1443 y Fc(\012)647 1494 +y(\017)690 1443 y Fd(r)773 1408 y(\000)753 1443 y Fc(\034)753 +1497 y(\026)753 1513 y Fd({)839 1443 y(r)905 1408 y(~)903 +1443 y Fc(d)903 1497 y(\026)975 1443 y Fd(\000)979 1453 +y Fj(-)975 1480 y Fd(\000)1092 1390 y(\000)1070 1415 +y(})1072 1443 y Fc(\035)28 b Fd(r)p Fc(\017)p Fd(r)1230 +1415 y(~)1227 1443 y(\034r)p Fc(\014)1319 1408 y Fd(\177)1314 +1443 y Fc(\012)1314 1494 y(\017)1357 1443 y Fd(r)1382 +1408 y(\000)1370 1443 y Fc(\034)1370 1497 y(\026)1370 +1513 y Fd({)1414 1443 y(r)1435 1408 y(~)1427 1443 y Fc(d)1427 +1497 y(\026)1471 1443 y Fd(\000)1475 1453 y Fj(-)1471 +1480 y Fd(\000)268 1567 y Ff(o*)73 b(ma)50 b(nxi)g(padme)f(h'u*)h +(hr'i:|)e Fi(Y)m(et)15 b(another)f(spacing)g(bug!)249 +1681 y Fc(\013)p Fd(r)328 1653 y(})338 1681 y Fc(\017)g +Fd(r)40 b Fc(\002)449 1707 y Fd({)522 1681 y(r)g Fc(\030)573 +1686 y Fd({)643 1681 y(r)50 b Fc(\016\034)745 1734 y +Fd(\004)794 1681 y(\000)798 1691 y Fj(-)794 1718 y Fd(\000)1142 +1681 y Fc(\013)p Fd(r)1185 1653 y(})1188 1681 y Fc(\017)p +Fd(r)p Fc(\002)1245 1707 y Fd({)1290 1681 y(r)p Fc(\030)1301 +1686 y Fd({)1343 1681 y(r)p Fc(\016\034)1395 1734 y Fd(\004)1444 +1681 y(\000)1449 1691 y Fj(-)1444 1718 y Fd(\000)245 +1768 y Ff(na)57 b(mo)75 b(gu)80 b(ru)63 b(bhya:|)249 +1882 y Fc(\013)p Fd(r)328 1854 y(})338 1882 y Fc(\017)14 +b Fd(r)51 b Fc(\016)456 1894 y Fd({)526 1882 y Fc(\012)526 +1933 y Fd(\024)565 1882 y(r)h Fc(\027)p Fd(s)445 b Fc(\013)p +Fd(r)1181 1854 y(})1184 1882 y Fc(\017)p Fd(r)p Fc(\016)1237 +1894 y Fd({)1279 1882 y Fc(\012)1279 1933 y Fd(\024)1318 +1882 y(r)p Fc(\027)p Fd(s)245 2009 y Ff(na)57 b(mo)h(buddha)49 +b(ya/)249 2123 y Fc(\013)p Fd(r)328 2095 y(})338 2123 +y Fc(\017)14 b Fd(r)75 b(\024)p Fc(')519 2170 y(\026)563 +2123 y Fd(r)h Fc(\027)p Fd(s)383 b Fc(\013)p Fd(r)1141 +2095 y(})1144 2123 y Fc(\017)p Fd(r\024)p Fc(')1236 2170 +y(\026)1280 2123 y Fd(r)p Fc(\027)p Fd(s)245 2221 y Ff(na)57 +b(mo)h(dharm'a)48 b(ya/)249 2334 y Fc(\013)p Fd(r)328 +2306 y(})338 2334 y Fc(\017)14 b Fd(r)70 b Fc(\033\003)524 +2371 y Fd(\025)567 2334 y(r)i Fc(\027)p Fd(s)374 b Fc(\013)p +Fd(r)1132 2306 y(})1135 2334 y Fc(\017)p Fd(r)p Fc(\033\003)1237 +2371 y Fd(\025)1280 2334 y(r)p Fc(\027)p Fd(s)245 2448 +y Ff(na)57 b(mo)h(sanggha)48 b(ya/)245 2588 y Fd(s)277 +2535 y(\000)262 2560 y(})258 2588 y Fc(\035)p Fd(r)40 +b Fc(\035)382 2625 y(\026)468 2588 y Fd(\000)473 2599 +y Fj(-)468 2626 y Fd(\000)566 2554 y(\000)546 2588 y +Fc(\034)546 2642 y(\026)546 2658 y Fd({)632 2588 y(s)473 +b(s)1151 2535 y(\000)1135 2560 y(})1131 2588 y Fc(\035)p +Fd(r)p Fc(\035)1216 2625 y(\026)1260 2588 y Fd(\000)1264 +2599 y Fj(-)1260 2626 y Fd(\000)1296 2554 y(\000)1283 +2588 y Fc(\034)1283 2642 y(\026)1283 2658 y Fd({)1327 +2588 y(s)249 2712 y Ff(/o*)82 b(aa:)c(h'u*/)926 2831 +y Fi(4)p eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF diff --git a/language/tibetan/steiner/tttintro.tib b/language/tibetan/steiner/tttintro.tib new file mode 100644 index 0000000000..c2fe4dcf90 --- /dev/null +++ b/language/tibetan/steiner/tttintro.tib @@ -0,0 +1,243 @@ +#!/bin/sh +ttt input.ttd tex.ttd $0 test.tex; latex test; rm test.tex; exit + +\documentclass[a4paper]{article} +\begin{document} + +\parindent=0pt +\parskip=10pt +\sloppy + +\section{Additional Features} +\begin{description} +\item[Q:] There are now already two \LaTeX\ implementations of the Tibetan language. + Why is there now a third one? +\item[A:] Like other typesetting programs, the above implementations make use of predefined + ligatures only. If you try to enter prayers containing Sanskrit syllables into + such a system, you will get into severe trouble. Therefore, I added now a completely new + transcript preprocessor having the following extra features: +\item[Compatibility:] As far as I know, it supports all control sequences of the above + implementations, plus the ACIP transcript. If you have yet another transcript, you can + create your own transcript definition file, hopefully without having to modify the C code. +\item[Inline \LaTeX\ commands:] All commands that do not contain spaces or such can be + typed without using the mode switching characters({\tt \%\%}). Even the tabbing character + ({\verb|&|}) is transparent. So you can easily typeset tabular environments and line breaks. +\item[Generic Ligatures:] If this preprocessor encounters any ligatures which are not predefined, + it tries to compose them automatically. There is still much work to be done on this: + \begin{itemize} + \item There are some spacing problems to solve on \LaTeX\ level + \item Adding intelligence for character mutations + \item Font definition for character fragments + \item Font definition for vertically smaller characters + \end{itemize} + Especially syllables like %% /tutt'a ra/ %% \ do not look very nice and need too much vertical + space. But in many cases, the output is quite readable and the input very simple + (e. g. {\verb| /tutt'a ra/|}). + + +\end{description} + + +\section{How to use it} +\subsection{General Command Line Handling} +In fact, it is very similar to the previous implementations: +You have the usual \LaTeX\ procedure plus an additional preprocessor program +between editing and \LaTeX ing, which interprets a transcript described below, +generating Tibetan characters and ligatures. + +\pagebreak + +There is some extra complication concerning the command line parameters: +{\tiny\begin{verbatim} + STARTING THIS PROGRAM + --------------------- + In order to translate ACIP to LaTeX, use + + ttt acip.ttd latex.ttd input.tib output.tex + + where acip.ttd is the input transcript definition file + . latex.ttd is the output transcript definition file + . input.tib is your ACIP input text + . output.tex is the output file to be processed by latex + + On Linux, you will enjoy the feature of magic line support: + In your input.tib file, add the following two lines at the + VERY TOP (replacing the respective filenames): + + #!/bin/sh + ttt acip.ttd latex.ttd $0 output.tex; latex output; exit + + Due to the magic line at the top, (ba)sh will think that your text + input.tib is a shell script, executing the 2nd line. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + This program will ignore the FIRST AND THE SECOND + line if the FIRST line starts with #! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + Do not put anything, even not comments above these lines. + $0 is automatically replaced by the file name (e.g. input.tib). + + Then turn your input.tib file into an executable by + chmod 755 input.tib + + Now, you can start this program by entering + input.tib + at the shell command prompt. + + DOS users, please write an apropriate *.BAT file (without $0). + Windows users may set the command line options as program properties. +\end{verbatim}} + +\subsection{Which ttd files to use} + +At present, {\tt input.ttd} and {\tt acip.ttd} can be used as input transcript definitions +only. Use {\tt input.ttd} for any texts supplied by Jeff Sparkes and Sam Sirlin and this +package (ending in {\tt .tib}). {\tt acip.ttd} only for ACIP texts. You easily recognize +them by their having an UPPERCASE TRANSCRIPT. + +{\tt tex.ttd} and {\tt latex.ttd} are the output transcript definitions. Use {\tt latex.ttd} +{\bf only} for ACIP texts. It includes a document preamble and postamble for LaTeX. In +all other cases, I recommend you to include the preamble and postamble into the source file +and use {\tt tex.ttd}. + +\section{Transcription} +\subsection{Note} +The upper lines show the transcript used by Jeff Sparkes and Sam Sirlin. +The lower lines show the ACIP transcription. Please note the difference marked by {\bf(!)}. +Of course, punctuation and spacing are completely different. +For \LaTeX, I recommend the transcript in the upper lines, since this transcript definition +supports the full power of the ligature generator. + +\subsection{Single Characters and Vovels} + +%% + +\begin{tabular}{ccccccc} + +ka & kha & ga & nga \\* +\tt{ka} & \tt{kha} & \tt{ga} & \tt{nga} \\* +\tt{KA} & \tt{KHA} & \tt{GA} & \tt{NGA} \\[0.5cm] + +ca & cha & ja & nya \\* +\tt{ca} & \tt{cha} & \tt{ja} & \tt{nya} \\* +\tt{CA} & \tt{CHA} & \tt{JA} & \tt{NYA} \\[0.5cm] + +ta & tha & da & na \\* +\tt{ta} & \tt{tha} & \tt{da} & \tt{na} \\* +\tt{TA} & \tt{THA} & \tt{DA} & \tt{NA} \\[0.5cm] + +pa & pha & ba & ma \\* +\tt{pa} & \tt{pha} & \tt{ba} & \tt{ma} \\* +\tt{PA} & \tt{PHA} & \tt{BA} & \tt{MA} \\[0.5cm] + +tsa & tsha & dza & wa \\* +\tt{tsa} & \tt{tsha} & \tt{dza} & \tt{wa} & \tt{\bf(!)}\\* +\tt{TZA} & \tt{TSA} & \tt{DZA} & \tt{WA} & \tt{\bf(!)} \\[0.5cm] + +zha & za & 'a & ya \\* +\tt{zha} & \tt{za} & \tt{'a} & \tt{ya} \\* +\tt{ZHA} & \tt{ZA} & \tt{'A} & \tt{YA} \\[0.5cm] + +ra & la & sha & sa \\* +\tt{ra} & \tt{la} & \tt{sha} & \tt{sa} \\* +\tt{RA} & \tt{LA} & \tt{SHA} & \tt{SA} \\[0.5cm] + + & ha & a \\* + & \tt{ha} & \tt{a} \\* + & \tt{HA} & \tt{A} \\[1cm] + +a & i & u & e & o & * & aa \\ +\tt{a} & \tt{i} & \tt{u} & \tt{e} & \tt{o} & \tt{*} & \tt{aa} \\* +\tt{A} & \tt{I} & \tt{U} & \tt{E} & \tt{O} \\[1cm] + +txa & thxa & dxa & nxa & shxa & kshxa \\* +\tt{txa} & \tt{thxa} & \tt{dxa} & \tt{nxa} & \tt{shxa} & \tt{kshxa} \\ + +\end{tabular} + +%% + +\subsection{Punctuation Marks and Spacing Control} + +%% +\begin{tabular}{ccccccc} +/ & ! & , & \rm{suppress`} ,\rm{'} & \rm{shad~space} & \swasti & : \\* +\tt{/} & \tt{!} & \tt{,} & \tt{\#} & \tt{|} & \verb|\swasti| & \tt{:} \\* +\tt{,} & & & & & \tt{*~(?)} \\[0.5cm] + +\end{tabular} +%% + +% \subsection{Combined Letters or Ligatures} +% %% +% \begin{tabular}{cccccc} +% na & mo & gu & ru & bhya:| & na mo gu ru bhya:| \\* +% \tt{na} & \tt{mo} & \tt{gu} & \tt{ru} & \verb#bhya:|# +% \end{tabular} +% + +%% + +\section{Examples} +\subsection{Explicit Ligature Control} +\begin{tabular}{ccccccl} %% +gyin & g-yin & gyas & g-yas & ddha & -ddha \\* %% +\tt{gyin} & \tt{g-yin} & \tt{gyas} & \tt{g-yas} & \tt{ddha} & \tt{-ddha}\\ +\end{tabular} + +\subsection{Generic Ligatures} +%% +\begin{tabular}{ccccccl} +o* & ma & nxi & padme & h'u* & hr'i:| & o* ma nxi padme h'u* hr'i:| \\* +\tt{o*} & \tt{ma} & \tt{nxi} & \tt{padme} & \tt{h'u*} & \verb#hr'i:|# +& \rm{Yet~another~spacing~bug!} +\end{tabular} + +% \begin{center} +% /o* ma nxi padme h'u* hr'i:| +% \rm{Cheap~workaround} +% \end{center} + +\begin{tabular}{cccccr} +na & mo & gu & ru & bhya:| & na mo gu ru bhya:| \\* +\tt{na} & \tt{mo} & \tt{gu} & \tt{ru} & \verb#bhya:|# & \hspace*{5cm} +\end{tabular} + +\begin{tabular}{ccccr} +na & mo & buddha & ya/ & na mo buddha ya/ \\* +\tt{na} & \tt{mo} & \tt{buddha} & \tt{ya/} & \hspace*{5.5cm} +\end{tabular} + +\begin{tabular}{ccccr} +na & mo & dharm'a & ya/ & na mo dharm'a ya/ \\* +\tt{na} & \tt{mo} & \tt{dharm'a} & \tt{ya/} & \hspace*{5cm} +\end{tabular} + +\begin{tabular}{ccccr} +na & mo & sanggha & ya/ & na mo sanggha ya/ \\* +\tt{na} & \tt{mo} & \tt{sanggha} & \tt{ya/} & \hspace*{5cm} +\end{tabular} + + +\begin{tabular}{ccccr} +/o* & aa: & h'u*/ & & /o* aa: h'u*/ \\* +\tt{/o*} & \tt{aa:} & \tt{h'u*/} & & \hspace*{5cm} +\end{tabular} + + +%% + +\end{document} + + + + + + + + + + + + + + |