dnl Diese Datei enthält die Maße der Buchstaben. dnl Es gibt folgende Maßangaben: dnl dnl lol------lor dnl dnl ol or dnl dnl bl-------br dnl dnl ul ur dnl dnl lul------lur dnl dnl UL UR dnl dnl LUL------LUR dnl dnl lo?: Ausdehnung auf der oberen Hilfslinie nach links und rechts dnl lo?: Ausdehnung zwischen Grundlinie und oberer Hilfslinie nlur. dnl b?: Ausdehnung auf der Grundlinie nlur. dnl u?: Ausdehnung zwischen Grundlinie und erster unterer Hilfslinie nlur. dnl lu?: Ausdehnung auf erster unterer Hilfslinie nlur. dnl U?: Ausdehnung zwischen erster und zweiter unterer Hilfslinie nlur. dnl LU?: Ausdehnung auf zweiter unterer Grundlinie dnl dnl Jedes Zeichen fängt mit einer Kategoriebezeichnung an. Diese kann sein: dnl o, oo, u, uu, U, UU, b oder B. Diese gibt an, wo das Zeichen überhaupt gezeichnet dnl wird. Davor hängen die folgenden Daten ab. dnl dnl Die Reihenfolge (abhängig von der Kategorie) der Daten ist: dnl o: lol ol bl lor or br dnl oo: lol ol lor or dnl u: bl ul lul br ur lur dnl uu: ul lul ur lur dnl U: bl ul lul UL LUL br ur lur UR LUR dnl UU: UL LUL UR LUR dnl b: lol ol bl ul lul lor or br ur lur dnl B: lol ol bl ul lul UL LUL lor or br ur lur UR LUR dnl Alle Angaben sind in 1/4-Breite des fuchischen Abstandshalters angegeben. dnl dnl Jedes Zeichen fängt mit ,char' an, dann folgt der Name, die Kategorie dnl und vier Definitionen der vier Formen für normale, linke, rechte und dnl beidseitige Anbindung. Diese fangen jeweils mit dem ASCII-Code an, falls dnl sie existieren und enthalten dann die Maße oder bestehen nur aus ,none', dnl falls es die Form nicht gibt. Statt der ASCII-Nummer kann auch das Zeichen dnl selbst hingetippt werden, mit einem \ davor. dnl dnl Das Format hat sich noch verändert. Diese Datei verwendet alle Features, dnl Daher ist sie die beste Dokumentation für ihr Format. dnl dnl Eines noch: Zeilenumbrüche werden genau wie Leerzeichen behandelt. dnl dnl Verarbeitungsstufen: dnl---------------------- dnl An den Stufen steht jeweils, welche Bitbreite die Zeichen haben oder dnl ob die Breite in dem Schritt verändert wird. dnl Eingabetext (8) -> dnl changetext-Verarbeitung (8->16) -> dnl Entscheidung, was Fuchisch ist und was nicht (16->16) dnl | | dnl norm.| Fuch.\-> prelig-Verarbeitung (16->16) -> dnl Text | combinechars-, lbox-, rbox-Verarbeitung (16) -> dnl | Einfügen von Abstandsstücken, lig-Verarbeitung (16) -> dnl | translate-Verarbeitung (16->8) -> dnl \ wbox-Verarbeitung (8) -> dnl \------> Ausgabetext (8) dnl dnl einige m4-Makros: dnl Kotz: m4 läßt hinter define keine Leerzeichen zu! define(`exclparen', `512') define(`parenexcl', `513') define(`colonparen', `514') define(`parencolon', `515') define(`asterparen', `516') define(`parenaster', `517') define(`questparen', `518') define(`parenquest', `519') define(`dashparen', `520') define(`parendash', `521') define(`exclbracket',`522') define(`bracketexcl',`523') define(`endl', `13') define(`replace', `-1') dnl Die folgenden, falls mal das lbox-Kommando verbessert wird: define(`lboxif',`$1') define(`lboxdef',`$1') define(`lboxuse',`$1') dnl später: dnl define(`lboxif',`') dnl define(`lboxdef',`-2 $1 -2') dnl define(`lboxuse',`$1') fuchon "\fuch" end fuchoff "\nofuch" end dnl Definition der TeX-Sequenzen für die Bindestriche: dash 1/4 "0" dash 1/2 "1" dash 1 "-" dash 2 "2" dash 4 "3" dnl Das folgende definiert = als Zeichen, mit dem fuchische Buchstaben ohne dnl Kontrolle aneinandergeklebt werden können. dnl Es ist zusätzlich noch `translate \= becomes end' nötig. gluechar \= dnl Mit den in combinechars definierten Klammern kann eine Folge von Zeichen dnl zu einem einzigen Zeichen zusammengefaßt werden, um als ein einziges dnl Zeichen behandelt zu werden. Dabei muß hinter der Öffnungsklammer zunächst dnl die Zusammensetzrichtung angegeben werden, d.h L oder R. dnl Beispiel: dnl dnl würde als ein einziges Zeichen behandelt, daß die Breite von a besitzt an dnl das ohne Abstandshalter b, c und d angeklebt würden. Die Überstände dnl nach links wären mit denen von a identisch, die nach rechts würden aus dnl b, c und d berechnet. Diese Klammerung läßt sich schachteln, z.B. dnl fg> hätte die Breite von c, die Überstande würde jeweils aus dnl ab und defg bestimmt. dnl combinechars benutzt implizit auch translate. Der für combinechars dnl reservierte Bereich ist 256 bis 511. Dem Benutzer steht der Bereich dnl 512 bis 1023 frei zur Verfügung. dnl WARNUNG: Da man in TeX keine lokalen Boxen deklarieren kann, ist eine dnl Schachtelung höchstwahrscheinlich wg. TeX nicht möglich. dnl Die dritte Möglichkeit, Zeichen zu einem neuen zusammenzubauen ist B dnl für ,both', wo das neue Zeichen aus den alten Zeichen besteht, die dnl einfach aneinander gesetzt werden. dnl Die Ligaturen werden durch das Verbinden von Buchstaben korrekt übernommen. dnl bei R und L werden die Ligaturen von dem Zeichen übernommen, das auch die dnl Breite des neuen Zeichens bestimmt, d.h. bei L vom rechtesten, bei R vom dnl linkesten. Bei B wird die linksseitige Ligatur vom linkesten Zeichen dnl übernommen, die rechtsseitige vom rechtesten. dnl !!!!!!!!!!!!!!! dnl !!! ACHTUNG: !! dnl !!!!!!!!!!!!!!! dnl Bei der B-Kombination werden von den inneren Buchstaben nur die Breiten dnl zur Berechnung des neuen Zeichens herangezogen, d.h. wenn innere dnl Buchstaben an Stellen undurchlässig sind, an denen die zwei äußeren das dnl nicht sind, so werden diese Undurchlässigkeiten nicht berücksichtigt. dnl Im Fuchischen wird die B-Ligatur nur für Bas und Zas benutzt, aber dnl wer weiß, was noch kommt. Bitte dringenst beachten! combinechars \< \> dnl Folgende Ligaturen werden /vor/ dem restlichen Parsen erzeugt. Dadurch dnl sind die neuen Zeichen problemlos als normale Zeichen aneinanderreihbar. dnl Format: altes_Zeichen* `becomes' neues_Zeichen* end dnl Unter den neuen Zeichen muß irgendwo ein Token `.' sein, das angibt, dnl an welcher Stelle das Auflösen der Ligaturen weitergeführt werden soll. dnl Maximal sind jeweils 100 alte und neue Zeichen erlaubt. dnl Es wird jeweils die längste gefundene Altzeichenfolge ersetzt. dnl Beispiel: dnl prelig "aa" becomes "x" . "aax" end dnl ist eine unendliche Rekursion. Aber dnl prelig "aa" becomes "xaa" . end dnl ist keine unendliche Rekursion. dnl prelig "aa" becomes "x" . "baa" end dnl ist auch eine unendliche Rekursion. dnl Die Regeln werden von oben nach unten untersucht. Obere werden also dnl schneller gefunden. dnl prelig "°" becomes "" . end prelig "0" becomes "e" . end prelig "1" becomes "l" . end prelig "2" becomes "s" . end prelig "3" becomes "n" . end prelig "4" becomes "i" . end prelig "5" becomes "d" . end prelig "6" becomes "m" . end prelig "7" becomes "h" . end prelig "8" becomes "g" . end prelig "9" becomes "r" . end dnl prelig "E" becomes "o" . end dnl prelig "+" becomes "f" . end dnl prelig "-" becomes "G" . end dnl prelig "," becomes "y" . end dnl ulos-Ligaturen: prelig \u \u becomes "" end prelig "R>u" becomes "S" . "R>" end dnl alos-Ligaturen: prelig \a \a becomes "" end prelig "T>a" becomes "9" . "T>" end dnl ling-Ligaturen: prelig \N \N becomes "" end prelig "M>N" becomes "Z" . "M>" end dnl Gel-Ligaturen: prelig \G \G becomes "" end prelig "H>G" becomes "W" . "H>" end dnl xas-Ligaturen: prelig \x \x becomes "" end prelig "X>x" becomes "Z" . "X>" end dnl bas-Ligaturen: prelig \b \b becomes "" end prelig "CD>b" becomes "CP" . "CD>" end dnl zas-Ligaturen: prelig \z \z becomes "" end prelig "JK>z" becomes "JQ" . "JK>" end prelig "!(" becomes exclparen . end prelig ")!" becomes parenexcl . end prelig ":(" becomes colonparen . end prelig "):" becomes parencolon . end prelig "*(" becomes asterparen . end prelig ")*" becomes parenaster . end prelig "?(" becomes questparen . end prelig ")?" becomes parenquest . end prelig "-(" becomes dashparen . end prelig ")-" becomes parendash . end prelig "![" becomes exclbracket . end prelig "]!" becomes bracketexcl . end dnl changetext-Befehl: dnl Dieser wirkt wie der prelig-Befehl, aber auch auf normalem Text, d.h. dnl nicht nur auf fuchischen. In Kommentaren wirkt er nicht. dnl changetext "\begin{document}" becomes dnl "\newbox\FuchLBox" endl dnl "\newbox\FuchLWidth" endl dnl "\def\FuchLeftBox#1{%" endl dnl "\setbox\FuchLBox\hbox{#1}%" endl dnl "\FuchLWidth=\wd\FuchLBox%" endl dnl "\hbox to0pt{\hskip-\FuchLWidth\copy\FuchLBox}" endl endl dnl "\begin{document}" . dnl end dnl Die folgenden werden ganz am Ende ersetzt. Bis jetzt ist als Eingabe dnl nur ein Zeichen erlaubt. translate "=" becomes "" . end translate exclparen becomes "!(" . end translate parenexcl becomes ")!" . end translate colonparen becomes ":(" . end translate parencolon becomes "):" . end translate asterparen becomes "*(" . end translate parenaster becomes ")*" . end translate questparen becomes "?(" . end translate parenquest becomes ")?" . end translate dashparen becomes "-(" . end translate parendash becomes ")-" . end translate exclbracket becomes "!\char91{}" . end translate bracketexcl becomes "\char93!" . end dnl auch für Bereiche möglich, -1 wird durch die Zahl ersetzt: translate 128 255 becomes "\char" -1 "{}" . end dnl Ligaturen: dnl definiert einen zwischen die beiden zu druckenden String. lig "hf" kern "\kern-0.08em{}" end lig "hd" kern "\kern-0.08em{}" end lig "hb" kern "\kern-0.08em{}" end lig "fh" kern "\kern-0.08em{}" end lig "dh" kern "\kern-0.08em{}" end lig "bh" kern "\kern-0.08em{}" end dnl Box-Befehl: dnl ('') dnl Dieser Befehl wird ganz am Ende um jedes fuchische Wort gesetzt. Der dnl String muß 8-bittige Zeichen enthalten, -1 ist die Einfügeposition, die dnl aber direkt beim Lesen in `%s' verändert wird. D.h. `%s' ist auch gut. wbox "\wmbox{"replace"}" end dnl lbox,rbox-Befehl: dnl Dieser Befehl ist der TeX-Befehl, der eine Box von der aktuellen dnl Position aus nach links/rechts in den Text einfügt, ohne eine Breite dnl zu haben. Der String ist 16-bittig und unterliegt den translate- dnl Übersetzungen! Bei -1 werden die Zeichen ein- dnl gefügt. lbox "\FuchLeftBox{"replace"}" end rbox "\FuchRightBox{"replace"}" end bbox replace end char sel o \s 21 -6 -4 0 -6 -4 0 128 17 -2 0 0 -6 -4 0 129 17 -6 -4 0 -2 0 0 130 14 -2 0 0 -2 0 0 char las u \l 8 0 -4 -4 0 -4 -4 131 4 0 0 0 0 -4 -4 132 4 0 -4 -4 0 0 0 none char elos o \e 8 -4 -4 0 -4 -4 0 134 4 0 0 0 -4 -4 0 135 4 -4 -4 0 0 0 0 none char ilos o \i 8 2 -4 0 2 -4 0 137 4 6 0 0 2 -4 0 138 4 2 -4 0 6 0 0 none char gel u \g 8 0 -4 2 0 -4 2 140 4 0 0 6 0 -4 2 141 4 0 -2 2 0 0 6 none char nel o \n 12 0 1 0 0 1 0 none none none char fas U \f 22 0 -4 -4 -4 -6 0 -4 -4 -4 -6 146 18 0 0 0 0 -1 0 -4 -4 -4 -6 147 18 0 -4 -4 -4 -6 0 0 0 0 -1 148 14 0 0 0 0 -1 0 0 0 0 -1 char rel U \r 12 0 0 1 2 -1 0 0 1 2 -1 none none none char mas u \m 22 0 -4 -6 0 -4 -6 152 18 0 0 -2 0 -4 -6 153 18 0 -4 -6 0 0 -2 154 14 0 0 -2 0 0 -2 char ulos u \u 7 0 -6 5 0 0 -5 155 0 0 0 11 0 0 -5 none none char ulosd u \U 7 0 -6 3 0 0 0 \4 0 0 0 9 0 0 0 none none char uloszw uu \S 14 0 0 0 0 none none none char ulosend uu \R 14 0 0 0 0 none none none char olos u \o 21 0 -4 -6 0 0 0 158 17 0 0 0 0 0 0 159 14 0 -4 -6 0 7 7 160 10 0 0 0 0 7 7 char alos o \a 7 5 -6 0 -2 0 -1 161 0 12 0 0 -2 0 0 none none char alosd o \A 7 3 -6 0 0 0 -1 \5 0 12 0 0 0 0 0 none none char aloszw oo \9 14 0 0 0 0 none none none char alosend oo \T 14 0 0 0 0 none none none char cas u \c 21 0 0 0 0 -4 -6 164 14 0 7 7 0 -4 -6 165 17 0 0 0 0 0 -1 166 10 0 7 7 0 0 -1 char jel u \j 15 0 -4 2 0 -4 2 167 11 0 0 6 0 -4 2 168 11 0 -4 2 0 0 6 169 7 0 0 6 0 0 6 char das U \d 8 0 -4 -4 -4 -4 0 -4 -4 -4 -4 170 4 0 0 0 0 0 0 -4 -4 -4 -4 171 4 0 -4 -4 -4 -4 0 0 0 0 0 none char ling U \N 7 -2 0 1 2 -1 0 0 0 -8 5 none 174 1 0 0 1 2 -1 0 4 0 -2 11 none char lingd U \M 7 -2 0 1 6 -1 0 0 0 -8 3 none \6 1 0 0 1 6 -1 0 4 0 -2 8 none char lingzw UU \Z 14 0 0 0 0 none none none char lingend UU \Y 14 0 0 0 0 none none none char zas U \z 8 0 -4 -4 3 3 0 -4 -4 3 3 188 4 0 0 0 7 7 0 -4 -4 3 3 189 4 0 -4 -4 3 3 0 0 0 7 7 none char zasl U \I 8 0 -4 -4 3 3 0 0 0 0 0 \L 4 0 0 0 7 7 0 0 0 0 0 none none char zasr U \K 8 0 0 0 0 0 0 -4 -4 3 3 none \O 4 0 0 0 0 0 0 0 0 7 7 none char zasmid UU \J 8 0 0 0 0 none none none char zasdash UU \Q 4 0 0 0 0 none none none char has u \h 12 0 1 -1 0 1 -1 none none none char ghel u \G 7 -1 0 -2 0 -6 5 none 183 0 0 0 -2 0 1 11 none char gheld u \H 7 -1 6 0 0 -6 3 none \7 0 0 6 0 0 1 10 none char ghelzw UU \W 14 0 0 0 0 none none none char ghelend UU \V 14 0 0 0 0 none none none char xas U \x 7 -1 0 0 0 -2 0 -7 -7 -6 5 none 186 0 0 0 0 0 -2 0 0 0 1 11 none char xasd U \X 7 -1 0 0 6 0 0 -7 -7 -6 3 none \8 0 0 0 0 6 0 0 0 0 1 10 none char bas u \b 8 0 3 3 0 3 3 176 4 0 7 7 0 3 3 177 4 0 3 3 0 7 7 none char basl u \B 8 0 3 3 0 0 0 \E 4 0 7 7 0 0 0 none none char basr u \D 8 0 0 0 0 3 3 none \F 4 0 0 0 0 7 7 none char basmid uu \C 8 0 0 0 0 none none none char basdash uu \P 4 0 0 0 0 none none none char ylos U \y 12 0 0 0 1 0 0 0 0 1 0 none none none startchar songdigh B \( 12 0 0 0 0 0 0 0 -12 -12 0 -8 -10 0 0 none none none startchar songdigh2 B exclparen 15 0 0 0 0 0 0 0 -15 -15 0 -8 -6 0 0 none none none endchar sandigh B \) 12 -12 -12 0 -8 -10 0 0 0 0 0 0 0 0 0 none none none endchar sandigh2 B parenexcl 15 -15 -15 0 -8 -6 0 0 0 0 0 0 0 0 0 none none none startchar flungdigh B \[ 19 0 0 0 0 0 0 0 -5 -2 0 -2 -2 -2 -6 none none none startchar flungdigh2 B exclbracket 19 0 0 0 0 0 0 0 -5 -2 0 -2 -2 -2 -6 none none none endchar flungsandigh B \] 19 -5 -2 0 -2 -2 -2 -6 0 0 0 0 0 0 0 none none none endchar flungsandigh2 B bracketexcl 19 -5 -2 0 -2 -2 -2 -6 0 0 0 0 0 0 0 none none none startchar fursandigh B colonparen 19 0 0 0 0 0 0 0 -5 -2 0 -1 0 0 -6 none none none endchar furdigh B parencolon 19 -5 -2 0 -1 0 0 -6 0 0 0 0 0 0 0 none none none startchar buldigh B dashparen 16 0 0 0 0 0 0 0 -1 -1 0 -16 -16 -16 -16 none none none endchar bulsandigh B parendash 16 -1 -1 0 -16 -16 -16 -16 0 0 0 0 0 0 0 none none none startchar gahdigh B asterparen 19 -6 -4 0 -3 -6 -19 -19 0 0 0 0 0 0 0 none none none endchar gahsandigh B parenaster 19 0 0 0 0 0 0 0 -6 -4 0 -3 -6 -19 -19 none none none startchar reserve\( B questparen 19 0 0 0 0 0 0 0 -4 -2 0 -6 -16 0 0 none none none endchar reserve\) B parenquest 19 -4 -2 0 -6 -16 0 0 0 0 0 0 0 0 0 none none none