summaryrefslogtreecommitdiff
path: root/binfilter/bf_sw/source/filter/sw6
diff options
context:
space:
mode:
Diffstat (limited to 'binfilter/bf_sw/source/filter/sw6')
-rw-r--r--binfilter/bf_sw/source/filter/sw6/makefile.mk63
-rw-r--r--binfilter/bf_sw/source/filter/sw6/sw6file.hxx451
-rw-r--r--binfilter/bf_sw/source/filter/sw6/sw6par.hxx213
-rw-r--r--binfilter/bf_sw/source/filter/sw6/sw_sw6file.cxx442
-rw-r--r--binfilter/bf_sw/source/filter/sw6/sw_sw6par.cxx5596
5 files changed, 6765 insertions, 0 deletions
diff --git a/binfilter/bf_sw/source/filter/sw6/makefile.mk b/binfilter/bf_sw/source/filter/sw6/makefile.mk
new file mode 100644
index 000000000000..cce08fa7e1e5
--- /dev/null
+++ b/binfilter/bf_sw/source/filter/sw6/makefile.mk
@@ -0,0 +1,63 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+EXTERNAL_WARNINGS_NOT_ERRORS := TRUE
+
+PRJ=..$/..$/..$/..
+BFPRJ=..$/..$/..
+
+PRJNAME=binfilter
+TARGET=sw_sw6
+
+#GEN_HID=TRUE
+#GEN_HID_OTHER=TRUE
+NO_HIDS=TRUE
+
+# --- Settings -----------------------------------------------------
+
+#.INCLUDE : $(PRJ)$/inc$/swpre.mk
+.INCLUDE : $(PRJ)$/inc$/bf_sw$/swpre.mk
+.INCLUDE : settings.mk
+#.INCLUDE : $(PRJ)$/inc$/sw.mk
+.INCLUDE : $(PRJ)$/inc$/bf_sw$/sw.mk
+
+INC+= -I$(PRJ)$/inc$/bf_sw
+# --- Files --------------------------------------------------------
+
+CXXFILES = \
+ sw_sw6file.cxx \
+ sw_sw6par.cxx
+
+
+SLOFILES = \
+ $(SLO)$/sw_sw6file.obj \
+ $(SLO)$/sw_sw6par.obj
+
+# --- Tagets -------------------------------------------------------
+
+.INCLUDE : target.mk
+
diff --git a/binfilter/bf_sw/source/filter/sw6/sw6file.hxx b/binfilter/bf_sw/source/filter/sw6/sw6file.hxx
new file mode 100644
index 000000000000..70523ce7105d
--- /dev/null
+++ b/binfilter/bf_sw/source/filter/sw6/sw6file.hxx
@@ -0,0 +1,451 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SW6FILE_HXX
+#define _SW6FILE_HXX
+
+#include <stdlib.h>
+
+#include <tools/string.hxx>
+
+#include <tools/stream.hxx>
+
+#include "swtypes.hxx"
+#include "swerror.h"
+namespace binfilter {
+
+class SwCharFmt;
+class SwTxtFmtColl;
+
+
+#define TWIPINCH 1440 // Wieviele Twips per Inch
+
+#define NVERSION '6' // Neue Versionsnummer
+#define AVERSION '5' // Alte Versionsnummer
+
+#define KFEND "\7"
+#define NOTENEND "\14"
+#define MLDBOOJAJA "JA"
+#define MLDBOONEIN "NEIN"
+#define DOKUKENN ".\\\\\\ WRITER # \\\\\\"
+#define DOKUKENNE ".\\\\\\ WRITER #E \\\\\\"
+#define LAYOUTKENN ".\\\\\\ LAYOUT # \\\\\\"
+#define LAYOUTKENNE ".\\\\\\ LAYOUT #E \\\\\\"
+
+#define MAXALAY 64 // Maximalanzahl Absatzlays
+#define MAXSLAY 32 // Maximalanzahl Seitenlays
+#define MAXBLAY 16 // Maximalanzahl Fontuebersetzungen
+#define MAXTAB 32 // Maximale Anzahl Tabulatoren
+#define MAXGLIED 5 // Wieviele Gliederungsebenen
+
+// Art der Nummerierung einer automatisch zu erzeugenden
+// Zahl wie z.B. Seitenummer, Gliedernummer etc.
+
+enum NUMMERIERNG {
+ Arabisch,Roemisch,Grossbuch,Kleinbuch,Bullets
+};
+
+// Alle Steuerzeichen die vorkommen
+
+enum CTRLS {
+ PrGraf, // ^@ Praefix fuer Grafiksteuerzeichen
+ InhKenn, // ^A Zeichen fuer Inhaltsvz.-Kennzeichnung, ingnore
+ IdxKenn, // ^B Zeichen fuer Indexvz.-Kennzeichnung, ignore
+ PrtPause, // ^C Zeichen fuer Druckunterbrechung, ignore
+ PrSoftSp, // ^D Zeichen Praefix Softspace
+ SoftSp, // ^E Soft-Leerzeichen, ' '
+ HardSp, // ^F Hartspace (wird nicht umbrochen) ,' '
+ NewCol, // ^G Neue Spalte, ignore
+ BackSpc, // ^H Backspace-Steuerzeichen
+ TabZch, // ^I Tabulatorzeichen, Pfeil
+ NewLine, // ^J Neue Zeile
+ SoftK, // ^K Zeichen fuer k-c-Austausch bei Trennung, 'k'
+ NewPage, // ^L Neue Seite, ignore
+ NewPara, // ^M Neuer Absatz
+ PrSForm, // ^N Praefix harte Formatierung Seite
+ PrAForm, // ^O Praefix harte Formatierung Absatz
+ HTrenn, // ^P Hartes Trennzeichen (wird nicht umbrochen), '-'
+ PrMerker, // ^Q Versteckter Text fuer Merker
+ PrPrFix, // ^R Praefix-Praefix fuer spaetere Erweiterungen
+ SoftAdd, // ^S Zusatz-Zeichen Trennung von "Schiff-fahrt"
+ PrKomm, // ^T Praefix Textkommando
+ ParaGraf, // ^U Zeichen welches fuer Paragraf-Zeichen
+ PrGlied, // ^V Praefix fuer Gliederungsnummer
+ PrHidd, // ^W Praefix fuer Hidden Text
+ PrAttr, // ^X Praefix Attribut
+ PrSize, // ^Y Praefix Fontsize
+ NewText, // ^Z Textende
+ PrUser, // ^[ Praefix fuer User-Controlzeichen
+ PrFnote, // ^\ Praefix fuer Fussnotenkennzeichnung
+ PrEnote, // ^] Praefix fuer Endnotenkennzeichnung
+ PrFont, // ^^ Praefix Font
+ STrenn // ^_ Weiches Trennzeichen, '-' nur Zeilenende
+};
+
+// Fuers harte Seitenformat, 2. Steuerzeichen nach PrSForm
+
+enum AFORMTYP {
+ AF_Res, // Nichts
+ AF_Ein, // Einrueckung Twips
+ AF_Lks, // Linker Rand Twips
+ AF_Rts, // Rechter Rand Twips
+ AF_AbAb, // Absatzabstand Twips
+ AF_Form, // Absatzformat Enum
+ AF_SpAb, // Spaltenabstand Twips
+ AF_SpAn, // Spaltenanzahl Byte
+ AF_SAbs, // Spaltenabsatz Bool
+ AF_Auto, // Durchschuss Bool
+ AF_ZlAb, // Zeilenabstand Twips
+ AF_Glied, // Gliederungslay Enum
+ AF_Tab, // Tabulator alt Struct
+ AF_TabN, // Tabulator neu Struct
+ AF_Zus // Zusammenhalten
+};
+
+// Fuers harte Absatzformat, 2. Steuerzeichen nach PrAForm
+
+enum SFORMTYP {
+ SF_Res,SF_KoAb,SF_FuAb,SF_Lks,SF_Rts,SF_Obn,SF_Unt,
+ SF_SpAb,SF_Guel,SF_SpAn,SF_KoTx,SF_FuTx
+};
+
+// Art den Rahmen in Layouts oder harter Formatierung
+// Dies sind eigentlich Bitflags mit (1 << Frm_xxx)
+
+enum FRMARTEN {
+ Frm_Lks,Frm_Rts,Frm_Obn,Frm_Unt,Frm_Frm,MaxFRMARTEN
+};
+
+// Bitflags Grafikrand
+
+struct GRAFFRAM {
+ int NoFrame:1; // Kein Rahmen
+ int Einfach:1; // Einfacher Rahmen
+ int Doppelt:1; // Doppelter Rahmen
+};
+
+// Bitflags Grafik
+
+struct GRAFFLAG {
+ int DoppelDruck:1; // Doppelt drucken
+ int InversDruck:1; // Invers drucken
+ int KeineGraust:1; // Keine Graustufen
+ int Kompatibel :1; // Kompatibel (siehe GRAFDESC)
+ int SGFHeller :1; // Grafik aufhellen (f. Laserdrucker)
+ int SGFBlkWhite:1; // Schwarz/Weiss erzwingen
+ int SGFRawform :1; // Wenn Grafik mit 256 Farben
+ int SGFFormel :1; // Wenn es eine Formel ist
+};
+
+// Ausrichtung einer Grafik
+
+enum GBUNDTYP {
+ G_Nicht,G_Links,G_Rechts,G_Zent
+};
+
+// Format einer Grafik (Je nach Treiber)
+
+enum GRAFSTAT {
+ NoGraf,Pic,Pcx,Hpgl,Img,Msp,Tiff,Dxf,Lot,Usr,Sgf
+};
+
+// Writer Grafikdescribtor, steht direkt in der Textzeile
+// Aus Kompatibilitaetsgruenden wird die Liniendicke nicht im GrafDesc
+// aufgefuehrt. Wenn Bit3(Flags)=1 dann steht die Liniendicke hinter
+// Name/UsrT als Wort im Grafdesc drin. LPos enthaelt evt. auch LWdt.
+
+struct GRAFDESC {
+ SwTwips Hoch; // Hoehe Grafik in Twips
+ SwTwips Breit; // Breite Grafik in Twips
+ SwTwips Rand; // Breite/Hoehe des Randes (zusaetzlich)
+ BYTE Rahm; // 1=Kein Rahmen, 2=Einfach, 3=Doppelt
+ GBUNDTYP Bund; // Nichtbuendig, Links, Rechts, Zent
+ GRAFSTAT Form; // Datenformat, welcher Treiber
+ BYTE Flag; // Bits:0=Dopp, 1=Invs, 2=NoGrau, Bit3=Kompatibel
+ String Name; // Enthaelt den Grafiknamen
+};
+
+// Ein Bitarray fuer Attribute, von denen die wichtigsten
+// mal festgelegt wurden. Sonstige Attributte gibts nicht
+
+enum ATTRBITS {
+ Nix0,Fett,Kursiv,Unter,DUnter,Durch,DDurch,
+ Hoch,Tief,Nix1,Outl,Shad,OutShad,Invs,Hoch2,
+ Hoch4,Gross2,Gross4,Nix2,Nix3,Nix4,FRot,
+ FBlau,FMag,FGelb,FOrange,FGruen,FCyan,
+ ATTRBITS_END
+};
+
+typedef long ATTRS;
+
+// Schluesselbuchstaben und Anmerkung fuer Layouts
+
+struct RKEY {
+ String Key; // Tastenschluessel zum rufen
+ String Remark; // Anmerkungen des Benutzers
+};
+
+// Art der Tabs in Layouts oder harter Formatierung
+
+enum TABARTEN {
+ Tab_L,Tab_R,Tab_Z,Tab_D,Tab_LF,Tab_RF
+};
+
+// Ein Tabulator
+
+struct TABU {
+ TABARTEN TabArt; // Art des Tabulators
+ SwTwips TabPos; // Position Tab
+ sal_Char TabZch; // Fuellzeichen, #0 oder Spc fuer nix
+};
+
+// Ein Bereichslayout
+
+struct BLAY:RKEY {
+ SwCharFmt *pCharFmt; // Zeiger auf Fertige FmtColl zum Uebergeben
+
+ short BFNum; // Nummer des Fonts
+ short BFSiz; // Hoehe des Fonts in Halbpunkt
+ BOOL bTran; // Sollen Zeichen uebersetzt werden?
+ ATTRS BAttr; // Welches Attribut anschalten
+};
+
+// Art der Formatierung in Layouts oder harter Formatierung. Tab-
+// satz ist eine Satzform die nie in einer Datei stehen sollte.
+
+enum SATZTYP {
+ BlockSatz,LinksSatz,RechtsSatz,ZentrSatz,
+ AustrSatz,UnformSatz,SperrSatz,TabSatz
+};
+
+// Ein Absatzlayout
+
+struct ALAY:RKEY {
+ SwTxtFmtColl *pFmtColl; // Zeiger auf Fertige FmtColl zum Uebergeben
+
+ short ABlay; // Welche Fontuebersetz, 0=Hart
+ short AFNum; // Nummer des Fonts
+ short AFSiz; // Hoehe des Fonts in Halbpunkt
+ BOOL bTran; // Sollen Zeichen uebersetzt werden?
+ ATTRS AAttr; // Welches Attribut anschalten
+ SwTwips Einzug; // Absatzeinzug in Spalten
+ SwTwips LRand; // Einrueckung lks in Spalten
+ SwTwips RRand; // Einrueckung rts in Spalten
+ SwTwips ORand; // Abstand vom Vorherg. Abs.
+ SwTwips SpaltAbst; // Abstand zw. den Spalten
+ BOOL SpTrenn; // Spaltentrenn
+ short SpAnzahl; // Wenn SpAbsatz>Spaltenzahl
+ BOOL SpAbsatz; // Ist Spaltenabsatz?
+ BOOL AutoZlAb; // Durchschuss oder Zlabstand
+ short ZlAbstand; // Zeilenabstand in Pt
+ short GliedLay; // 0=Nein, sonst Gliederebene
+ SATZTYP FormatFlg; // Format: Block,Rts/Lks,Zen,Unf.
+ SwTwips FrmAbst; // Abstand der Linien vom Absatz
+ SwTwips FrmWdth; // Strichstaerke Linien vom Absatz
+ short FrmArt; // Was fuer Linien, BitArray
+ short LinLTyp; // Gpm-Linienart
+ short LinRTyp; // Gpm-Rasterart
+ BOOL Zusammen; // Absatz zusammenhalten
+ short MaxTabs; // Wieviel gueltige Tabs
+ TABU Tabs[MAXTAB]; // Tabulatoren in Spalten
+};
+
+// Ein Seitenlayout
+
+struct SLAY:RKEY {
+ short Follow; // Merker fuer Follow-Layout
+ short Gueltig; // 0=alle,1=ung.,2=gerade S.,3=1.Seite
+ SwTwips KopfHoch; // Wieviel Zeilenhoehe Kopftext
+ SwTwips FussHoch; // Wieviel Zeilenhoehe Fusstext
+ SwTwips KopfAbst; // Abstand Kopftext
+ SwTwips FussAbst; // Abstand Fusstext
+ SwTwips LRand; // Textrand links
+ SwTwips RRand; // Textrand rechts
+ SwTwips ORand; // Textrand oben
+ SwTwips URand; // Textrand unten
+ SwTwips SpaltAbst; // Abstand zw. den Spalten
+ BOOL SpTrenn; // Spaltentrenner
+ short SpAnzahl; // Spaltenzahl Slayout
+ short KopfTNum; // Nummer harter KopfText, 0=Weicher
+ short FussTNum; // Nummer harter Fusstext, 0=Weicher
+ long FussText; // Weicher Kopftext
+ long KopfText; // Weicher Kopftext
+};
+
+struct KOFU:RKEY {
+ long KFText; // Dateipos fuer Kopf oder Fusstexte
+};
+
+// Describtor eines Gesamt Layouts des Writers V5.0-V6.0
+
+struct LAYDESC {
+ BOOL FNotenFlg; // True=Dokumentweise
+ BOOL FNotenLin; // Soll Fussnotenstrich?
+ BOOL ANotenFlg; // Sollen Anmerkungen gedruckt?
+ SATZTYP FNotSForm; // Notenstrich (1=Lks,2=Rts,3=Zent)
+ short FNotSPerc; // Notenstrich-Prozente
+ SwTwips FNotURand; // Unterer Rand Fussnoten
+ short NumAlay; // Wieviele Alays?
+ short NumSlay; // Wieviele Slays?
+ short NumBlay; // Wieviele Fontuebersetzungen
+ short NumKopf; // Wieviele Kopftexte
+ short NumFuss; // Wieviele Fusstexte
+ long LastLayTm; // Vergleichsdatum Lay-Datei, 0=Kein Datum
+ long FNotenLink; // Zeiger auf Fussnotenzeilen
+ long ANotenLink; // Zeiger auf Anmerkungen
+ long ENotenLink; // Zeiger auf Endnotenzeilen
+ SwTwips SpTrennWd; // Strichstaerke Spaltentrenner Twips
+ SwTwips PapierLen; // . Papierlaenge
+ SwTwips PapierBrt; // . Papierbreite
+ NUMMERIERNG FNotenForm; // Wie FNotennummern?
+ NUMMERIERNG ENotenForm; // Wie ENotennummern?
+ NUMMERIERNG SeitenForm; // Wie Seitennummern?
+ NUMMERIERNG GliedForm[MAXGLIED]; // Wie Gliedernummern?
+ ALAY *FileAlay[MAXALAY]; // Alle Alays eines Textes
+ SLAY *FileSlay[MAXSLAY]; // Alle Slays eines Textes
+ BLAY *FileBlay[MAXBLAY]; // Alle Fontuebersetzungen
+ KOFU *HartKopf[MAXSLAY]; // Halter fuer den Kopftext
+ KOFU *HartFuss[MAXSLAY]; // Halter fuer den Fusstext
+
+ void DelLayout(BOOL GLay,BOOL Kopf,BOOL Fuss);
+
+ LAYDESC(void):NumAlay(0),NumSlay(0),
+ NumBlay(0),NumKopf(0),NumFuss(0) {}
+ ~LAYDESC(void) {DelLayout(TRUE,TRUE,TRUE);}
+};
+
+class Sw6Stack
+{
+
+private:
+
+ struct DATA {
+ DATA *pNext;
+ size_t nSize;
+ } *pData;
+ void Clr(void);
+
+public:
+
+ Sw6Stack(void):pData(NULL){};
+ ~Sw6Stack(void){Clear();};
+ BOOL Push(void *pSrce,size_t nMaxSize);
+ BOOL Get(void *pDest,size_t nMaxSize,size_t *pnSize=NULL);
+ BOOL Pop(void *pDest,size_t nMaxSize,size_t *pnSize=NULL);
+ void Clear(void);
+};
+
+class Sw6File
+{
+
+private:
+
+ struct STAT
+ {
+ BOOL bEof; // TRUE wenn CtrlZ gelesen...
+ BOOL bErr; // Errorstatus ausgegeben?
+ BOOL bTrs; // Soll OEM->eDfltCharSet?
+ } aSta;
+
+ struct BUFFR
+ {
+ size_t nMax; // Wieviele Byte im Puffer gltig
+ size_t nSiz; // GrӇe des Puffers in pBuf
+ size_t nIdx; // Leseindex, wandert bis nMax
+ sal_Char *pBuf; // Zeiger auf Eingabepuffer
+ BUFFR(void):nMax(0),nSiz(0),nIdx(0),pBuf(NULL){};
+ ~BUFFR(void){DELETEZ(pBuf);};
+ };
+
+ BUFFR aBuf; // Buffer fuer Eingabe
+ BUFFR aPwd; // 2. Buffer wenn Passwort aktiv
+
+ size_t nCtr; // Bei Ctrls: Max Anzahl der Zchn
+ SvStream *pInp; // Eingabesteam schon geoeffnet //$ istream
+ Sw6Stack aStk; // Fuer PushStat und PopStat
+
+ short nLev; // Zur Begrenzung des Stacks
+ BYTE nBit; // 8 Bits fuer ReadBit
+ BYTE nOvl; // Overflow des Stacks?
+
+ struct NODE
+ {
+ NODE *pLks; // Linker Zweig
+ NODE *pRts; // Rechter Zweig
+ BOOL bAst; // Ast oder Blatt?
+ BYTE cZch; // Falls !bAst dann Zeicheninhalt
+ } aNode;
+
+ BOOL FlushPhys(short nAnz,BUFFR &rBuf);
+ BOOL Flush(short nAnz); // Sorgt f. nAnz chars bei pBuf[nIdx]
+
+ BYTE ReadBit(BUFFR &rBuf); // Lese ein Bit ein
+ void ReadTree(NODE *pNode); // Lese den Huffman-Baum
+ void DelTree(NODE **ppNode); // L”schen des Baums
+
+protected:
+
+ BOOL ActivatePass(void);
+
+ ULONG *pErr; // Zeiger auf Errornummer
+ // virtual muss nicht mehr sein, es gibt nur noch den Parser!
+ virtual size_t PutRest(String &rStr,sal_Char *pCtrl) = 0;
+ /*virtual*/ void PushStat(long nFPos); // Merke des Status
+ /*virtual*/ void PopStat(void); // Wiederherstellen Status
+
+public:
+
+ void SetTrans(BOOL bOn){aSta.bTrs=bOn;} // OEM-Translation Ein/Aus
+ BOOL IsTrans() const { return aSta.bTrs;} // OEM-Translation Ein/Aus
+ BOOL Eof(void) const; // Gibt TRUE zurck wenn End of File
+ long Tell(void) const; // Gibt die Fileposition zurck
+ void Seek(const long lWhere); // Sucht zu einer Fileposition
+ BOOL TestCtrl(sal_Char cZch); // Spezial:Test auf Ende Extratext
+ BOOL FileOk(void) // FALSE und 1*Error() wenn Fehler
+ {
+ if (!aSta.bErr && pInp->GetError() != SVSTREAM_OK)
+ {
+ *pErr = ERR_SW6_INPUT_FILE;
+ aSta.bErr=TRUE;
+ }
+ return !aSta.bErr;
+ }
+ BOOL ReadLn(String &rStr); // Lese eine PC-Zeile ein (CR/LF)
+
+ Sw6File( // ctor
+ SvStream &rInp, // Input-Stream, mu?offen sein //$ istream
+ size_t nBufSize, // Lesepuffer-Groesse, mu?>0 sein
+ size_t nCtrSize, // Maximale L„nge Ctrl-Zeichenkette
+ ULONG *pErrno ); // Optionale Fehlernummer
+ ~Sw6File(void); // dtor
+};
+
+
+} //namespace binfilter
+#endif // _SW6FILE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/binfilter/bf_sw/source/filter/sw6/sw6par.hxx b/binfilter/bf_sw/source/filter/sw6/sw6par.hxx
new file mode 100644
index 000000000000..2530af17d6b6
--- /dev/null
+++ b/binfilter/bf_sw/source/filter/sw6/sw6par.hxx
@@ -0,0 +1,213 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef _SW6PAR_HXX
+#define _SW6PAR_HXX
+
+
+#include <tools/string.hxx>
+#include <vcl/vclenum.hxx>
+#include <bf_svx/svxenum.hxx>
+
+
+#include <toxe.hxx>
+#include <sw6file.hxx>
+namespace binfilter {
+
+class SfxPoolItem;
+
+class SwDoc;
+class SwPaM;
+class SwNodeIndex;
+class SvxTabStopItem;
+
+class SwFmt;
+
+// Enthaelt die Dokument-Info. Groesse des Structs muss genau
+// stimmen, wird beim Einlesen als Record verwendet...
+
+struct DOCINFOTYPE {
+ String Autor; // String fuer Autorennamen
+ String Kateg; // Kategorie zum Suchen
+ String Thema[4]; // Thematik-String
+ String Keys[4]; // Allerlei Schluesselworte
+};
+
+// Die Funktion ReadLn filtert alle harten Formatsteuerzeichen
+// raus und legt sie in einer Verketteten Liste ab. Diese Liste
+// kann man nach ReadLn dann durchgehen und bearbeiten.
+
+struct HFORM {
+ HFORM *pNxt; // Naechste Info
+ USHORT nOfs; // Offset des Textes wo Info gueltig
+ USHORT nXtd; // Gemerkter Addierer bei Druckzchn
+ BYTE cDat[256]; // Daten fuer diese Info
+};
+
+
+class Sw6Layout:public Sw6File
+{
+
+private:
+ const String *pMyName; // Mein Filename fuer Dateirefs
+
+ struct MYSTAT
+ {
+ BYTE cFrst; // Falls nur CtrlL oder CtrlG
+ short nAlay; // Status der Layouts bei ReadLn
+ BOOL bSlay; // Soll neues Slay gesetzt werden?
+ short nSLft; // Nummern fr linke Seitenlayouts
+ short nSRgt; // dto. fr rechtes Seiten
+ short nSFst; // Erstseitenlayout
+ short nBlay;
+ short nKopf;
+ short nFuss;
+ USHORT nPage; // Pagenummer fuer Gerade/Ungerade
+ short nAddo; // Adder fuer HFORM-nOfs
+ HFORM *pFrmt; // Fuer harte Forminfo aus ReadLn
+ MYSTAT (void):
+ cFrst('\0'),nAlay(0),bSlay(FALSE),
+ nSLft(0),nSRgt(0),nSFst(0),
+ nBlay(0),nKopf(0),nFuss(0),
+ nPage(0),nAddo(0),pFrmt(NULL){}
+ } aSta;
+
+ BOOL Glieder[5]; // Welche Giederebenen genutzt
+
+ Sw6Stack aStk; // Stack fuer Push/Popstat
+ LAYDESC *pLay; // Halter fuer Gesamtlayout
+ DOCINFOTYPE *pDocInfo; // Allgemeine Dokument-Info
+ USHORT nLastFontMatch;
+
+
+ BOOL ReadBool(void);
+ void DelHForm(void);
+ void AddHForm(const sal_Char *pCtrl,short nPos,short nAnz,short nAdd=0);
+ short ZchnZahl(sal_Char Ch1,sal_Char Ch2) const;
+
+ sal_Char UpCaseOEM(sal_Char c) const;
+ void AddXForm(sal_Char cLead,ByteString &rTmp,String &rStr);
+
+ void ScanLayoutB(short &rnLay,BLAY *pKey[],const sal_Char c1,
+ const sal_Char c2,const short nAnz) const;
+ void ScanLayoutA(short &rnLay,ALAY *pKey[],const sal_Char c1,
+ const sal_Char c2,const short nAnz) const;
+ void ScanLayoutS(short &rnLay,SLAY *pKey[],const sal_Char c1,
+ const sal_Char c2,const short nAnz) const;
+ void ScanLayoutKF(short &rnLay,KOFU *pKey[],const sal_Char c1,
+ const sal_Char c2,const short nAnz) const;
+ BOOL ScanKreuz(const sal_Char *pPatt,const sal_Char *pOrig,size_t &rIgnr,sal_Char *pPara=NULL);
+ BOOL TextBefehl(const sal_Char *pPatt,const sal_Char *pOrig);
+
+ SvxAdjust TransAdj(SATZTYP eForm);
+ SfxPoolItem *TransAtt(ATTRBITS eAttr,BOOL bEin,SwTwips nSiz);
+ void TransFnt(short nFnt,FontFamily &rFam,FontPitch &rPit,CharSet &rSet,String &rNam);
+ BOOL TransFSA(SwFmt &rFmt, short nFnt, short nSiz, ATTRS nAtt);
+
+ void InsertTOX(SwDoc &rDoc,SwPaM &rPaM,USHORT nLen,HFORM *pTmp,TOXTypes eTyp);
+ void InsertTab(USHORT nTab,TABU &rTab,SvxTabStopItem &rTabs,SwTwips nKor);
+ void InsertExtra(SwDoc &rDoc,SwPaM &rPaM,const SwNodeIndex &rWohin,long lFPos,sal_Char *pcAKey=NULL);
+ BOOL InsertNote(SwDoc &rDoc,SwPaM &rPaM,USHORT nNote,BOOL bFuss);
+ void InsertAttr(SwDoc &rDoc,SwPaM &rPaM,ATTRBITS eAttr,BOOL bEin,SwTwips nSiz);
+ void InsertAForm(SwDoc &rDoc,SwPaM &rPaM,BYTE *pCtrl);
+ void SetFollow(short nVon,short nNach,SwDoc &rDoc);
+
+ // virtual muss nicht mehr sein, es gibt nur noch den Parser!
+ virtual size_t PutRest(String &rStr,sal_Char *pCtrl);
+ /*virtual*/ void PushStat(long nFPos);
+ /*virtual*/ void PopStat(void);
+
+protected:
+
+ long lLin; // Mitlaufende Zeilenzahl (in ReadLn++)
+
+ void SetSlay(SwDoc &rDoc,SwPaM &rPaM);
+ BOOL TstSlay(void) {return aSta.bSlay;}
+
+public:
+
+ /*virtual*/ BOOL ReadLn(String &rStr);
+
+ enum Bereich {Kopf,Fuss,FNot,ENot,ANot,Text};
+
+ void MerkeNoten(Bereich eNot);
+ void SetGpmFile(const String& rGpm);
+ void SetAlayTrans(void);
+ void ResetLay(SwDoc &rDoc);
+ void SetDocInfo(DOCINFOTYPE *pInfo) {pDocInfo=pInfo;}
+ BOOL IgnExtra(BOOL bNote,short nAnzl=0,SwTwips *plHoch=NULL);
+ BOOL LeseKoFu(BOOL Kopf);
+ BOOL LeseLayInfo(BOOL Konv);
+
+ SwTxtFmtColl *GetAlay(void); // Holt die gerade gueltige FmtColl
+ void InsertLayouts(SwDoc &rDoc,SwPaM*);
+ BOOL InsertLine(SwDoc &rDoc,SwPaM &rPam,String &rStg,BOOL bLast=FALSE);
+
+ BOOL Sw6LayoutOk(void)
+ {
+ return (pLay!=NULL);
+ }
+ Sw6Layout(SvStream &rInp, ULONG *pErrno, const String *pFileName=NULL); //$ istream
+ ~Sw6Layout(void);
+};
+
+// Gesamter Describtor einer Datei
+
+struct DATEIDESC {
+ String LayName; // Layoutdateiname
+ String PassWord; // Passwort fuer Datei
+ DOCINFOTYPE DocInfo; // Allgemeine Dokument-Info
+};
+
+// einige Forward-Deklaratioen
+class SwPaM;
+class SwDoc;
+class SwSw6Parser:private Sw6Layout
+{
+
+private:
+ DATEIDESC *pDat; // Dateidescribtor
+ SwPaM *pPaM; // WriterG-Einfuegepos
+ SwDoc *pDoc; // WriterG-Dokumentzugriff
+ BOOL bNew; // Darf es was neues sein?
+
+ BOOL Ueberlese(const long Blk);
+ BOOL ReadDocInfo(void);
+
+public:
+ BOOL CallParser(void);
+
+ SwSw6Parser(SwDoc *pSwDoc,const SwPaM &rSwPaM,SvStream *pIstream,
+ BOOL bNewDoc, ULONG * pErrno, const String *pFileName );
+ ~SwSw6Parser(void);
+};
+
+
+} //namespace binfilter
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/binfilter/bf_sw/source/filter/sw6/sw_sw6file.cxx b/binfilter/bf_sw/source/filter/sw6/sw_sw6file.cxx
new file mode 100644
index 000000000000..a48807fd58f7
--- /dev/null
+++ b/binfilter/bf_sw/source/filter/sw6/sw_sw6file.cxx
@@ -0,0 +1,442 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifdef _MSC_VER
+#pragma hdrstop
+#endif
+
+#include <string.h>
+#include "errhdl.hxx"
+
+#include "sw6file.hxx"
+namespace binfilter {
+
+
+// --- LAYDESC ---
+
+void LAYDESC::DelLayout(BOOL GLay,BOOL Kopf,BOOL Fuss)
+{
+ short Idx;
+
+ if (GLay)
+ {
+ for (Idx=0; Idx<NumAlay; Idx++)
+ if (FileAlay[Idx])
+ DELETEZ(FileAlay[Idx]);
+ NumAlay=0;
+ for (Idx=0; Idx<NumSlay; Idx++)
+ if (FileSlay[Idx])
+ DELETEZ(FileSlay[Idx]);
+ NumSlay=0;
+ for (Idx=0; Idx<NumBlay; Idx++)
+ if (FileBlay[Idx])
+ DELETEZ(FileBlay[Idx]);
+ NumBlay=0;
+ }
+ if (Kopf)
+ {
+ for (Idx=0; Idx<NumKopf; Idx++)
+ if (HartKopf[Idx])
+ DELETEZ(HartKopf[Idx]);
+ NumKopf=0;
+ }
+ if (Fuss)
+ {
+ for (Idx=0; Idx<NumFuss; Idx++)
+ if (HartFuss[Idx])
+ DELETEZ(HartFuss[Idx]);
+ NumFuss=0;
+ }
+}
+
+// --- Sw6Stack ---
+
+void Sw6Stack::Clr(void)
+// loescht oberstes Element
+{
+ DATA *pOld=pData;
+ pData=pData->pNext;
+ delete (sal_Char *)pOld;
+}
+
+BOOL Sw6Stack::Push(void *pSrce,size_t nMaxSize)
+// Kopiert ein Element auf den Stack drauf
+{
+ if (pSrce && nMaxSize)
+ {
+ DATA *pOld=pData;
+ if ((pData=(DATA *)new // Hole neues Element und falls
+ sal_Char[sizeof(*pData)+ // dies ok war, stelle auf Stack
+ nMaxSize])!=NULL)
+ {
+ pData->pNext=pOld;
+ pData->nSize=nMaxSize;
+ register sal_Char *q=(sal_Char *)pSrce;
+ register sal_Char *p=(sal_Char *)pData+sizeof(*pData);
+ while (nMaxSize--) *p++=*q++;
+ return TRUE;
+ }
+ else pData=pOld;
+ }
+ return FALSE;
+}
+
+BOOL Sw6Stack::Get(void *pDest,size_t nMaxSize,size_t *pnSize)
+// Kopiert Element nach *pDest mit maximal nMaxSize
+// Bytes. *pnSize enthaelt dann tatsaechliche Anzahl
+{
+ if (pDest && nMaxSize && pData)
+ {
+ if (pnSize) *pnSize=pData->nSize;
+ if (nMaxSize>pData->nSize) nMaxSize=pData->nSize;
+ register sal_Char *p=(sal_Char *)pDest;
+ register sal_Char *q=(sal_Char *)pData+sizeof(*pData);
+ while (nMaxSize--) *p++=*q++;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+BOOL Sw6Stack::Pop(void *pDest,size_t nMaxSize,size_t *pnSize)
+// Holt Element nach *pDest und loescht es vom Stack
+{
+ if (Get(pDest,nMaxSize,pnSize))
+ {
+ Clr();
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void Sw6Stack::Clear(void)
+// Loescht den Stack komplett
+{
+ while (pData) Clr();
+}
+
+// --- Sw6File ---
+
+void Sw6File::PushStat(long nFPos)
+// Merke des Status
+{
+ long nPos=nFPos;
+
+ if (nPos>=0)
+ {
+ nPos=Tell();
+ Seek(nFPos);
+ }
+ aStk.Push(&nPos,sizeof(nPos));
+ aStk.Push(&aSta,sizeof(aSta));
+}
+
+void Sw6File::PopStat(void)
+// Wiederherstellen Status
+{
+ long nPos;
+ aStk.Pop(&aSta,sizeof(aSta));
+ aStk.Pop(&nPos,sizeof(nPos));
+
+ if (nPos>=0) Seek(nPos);
+}
+
+BOOL Sw6File::FlushPhys(short nAnz, BUFFR &rBuf)
+// Holt immer nAnz Zeichen nach pStr[nIdx], egal wie der Puf-
+// ferstand aus ist. Aufruf mit nAnz==0 dient zum Input-Flush
+{
+ if (rBuf.nIdx+nAnz>=rBuf.nMax)
+ {
+ ASSERT(rBuf.nIdx<=rBuf.nMax,"Sw6-Datei ist wohl defekt");
+
+ if (rBuf.nMax<rBuf.nIdx)
+ {
+ rBuf.nMax=rBuf.nIdx; // Datei war Schrott...
+ }
+ memmove(rBuf.pBuf,
+ &rBuf.pBuf[rBuf.nIdx], // Gewnschte Zeichen runter-
+ nAnz=rBuf.nMax-rBuf.nIdx); // schieben und Rest dazulesen
+ rBuf.nIdx=0; // Leseindex im Puffer auf 0
+
+ //$ pInp->clear(pInp->rdstate()&~ios::eofbit); // Kein EOF
+ pInp->ResetError();
+ ULONG lGCount = pInp->Read(&rBuf.pBuf[nAnz],rBuf.nSiz-nAnz);
+ rBuf.pBuf[rBuf.nMax=nAnz+lGCount]='\x1A';
+ if (!FileOk()) return FALSE;
+ if (rBuf.nMax<rBuf.nSiz-nAnz) // Nicht alles gelesen?
+ {
+ //$ pInp->clear(pInp->rdstate() & ~ios::failbit); // Kein Fail-Bit
+ pInp->ResetError();
+ }
+ }
+ return TRUE;
+}
+
+BOOL Sw6File::Flush(short nAnz)
+{
+ if (aPwd.pBuf)
+ {
+ if (aBuf.nIdx+nAnz>=aBuf.nMax)
+ {
+ memmove(aBuf.pBuf,
+ &aBuf.pBuf[aBuf.nIdx],
+ nAnz=aBuf.nMax-aBuf.nIdx);
+ aBuf.nIdx=0;
+ for (aBuf.nMax=0; aBuf.nMax<
+ aBuf.nSiz-nAnz; aBuf.nMax++)
+ {
+ NODE *pNode=&aNode;
+ while (pNode->bAst)
+ {
+ pNode=(ReadBit(aPwd)==0)?
+ pNode->pLks:pNode->pRts;
+ }
+ aBuf.pBuf[nAnz+aBuf.nMax]=pNode->cZch;
+ if (aPwd.nMax==0)
+ {
+ break; // Nothalt fuer EOF
+ }
+ }
+ }
+ return TRUE;
+ }
+ else return FlushPhys(nAnz,aBuf);
+}
+
+BOOL Sw6File::Eof(void) const
+// Gibt TRUE zurck wenn End of File erreicht
+{
+ return aBuf.pBuf?aBuf.pBuf[aBuf.nIdx]=='\x1A':pInp->IsEof();
+}
+
+long Sw6File::Tell(void) const
+// Gibt die Fileposition zurck
+{
+ return pInp->Tell()+aBuf.nIdx-aBuf.nMax;
+}
+
+void Sw6File::Seek(const long lWhere)
+// Sucht zu einer Fileposition
+{
+ pInp->Seek(lWhere);
+ aBuf.nIdx=aBuf.nMax=0;
+ Flush(0);
+}
+
+
+BYTE Sw6File::ReadBit(BUFFR &rBuf)
+// Lese genau 1 Bit ein
+{
+ BYTE nRet = (nBit&0x80) !=0 ;
+ nBit=(nBit&0x7f)<<1;
+
+ if (nBit==0)
+ {
+ FlushPhys(1,rBuf);
+ nBit=rBuf.pBuf[rBuf.nIdx];
+ nRet=(nBit&0x80)!=0;
+ nBit=((nBit&0x7f)<<1)+1;
+ rBuf.nIdx++;
+ }
+ return nRet;
+}
+
+void Sw6File::DelTree(NODE **ppNode)
+{
+ if (*ppNode)
+ {
+ DelTree(&(*ppNode)->pLks);
+ DelTree(&(*ppNode)->pRts);
+ delete *ppNode;
+ }
+}
+
+void Sw6File::ReadTree(NODE *pNode)
+{
+ if (nLev<256 && nOvl==0)
+ {
+ nLev++;
+ if (ReadBit(aBuf)==0)
+ {
+ pNode->pLks=new NODE;
+ pNode->pRts=new NODE;
+ pNode->bAst=TRUE;
+ if (pNode->pLks && pNode->pRts)
+ {
+ ReadTree(pNode->pLks);
+ ReadTree(pNode->pRts);
+ }
+ else nOvl=2;
+ }
+ else
+ {
+ pNode->pLks=NULL;
+ pNode->pRts=NULL;
+ pNode->bAst=FALSE;
+ pNode->cZch=0;
+ for (USHORT n=0; n<8; n++)
+ {
+ pNode->cZch=(pNode->
+ cZch<<1)+ReadBit(aBuf);
+ }
+ }
+ nLev--;
+ }
+ else nOvl=1;
+}
+
+BOOL Sw6File::ActivatePass(void)
+// Lese Codebaum und setze ReadLn um
+{
+ Flush(3);
+ if (aBuf.pBuf[aBuf.nIdx+0]==NewPara &&
+ aBuf.pBuf[aBuf.nIdx+1]==NewLine &&
+ aBuf.pBuf[aBuf.nIdx+2]==NewText)
+ { // Es werden CR/LF/EOF erwartet
+ aBuf.nIdx+=3;
+ nBit=0;
+ nLev=0;
+ nOvl=0;
+ ReadTree(&aNode);
+ nBit=0; // Fuers Lesen nochmal Reset Bitlesen
+ if (nOvl==0)
+ {
+ aPwd.nMax=aBuf.nMax;
+ aPwd.nSiz=aBuf.nSiz;
+ aPwd.nIdx=aBuf.nIdx;
+ aPwd.pBuf=aBuf.pBuf;
+ aBuf.nMax=0;
+ aBuf.nIdx=0;
+ if ((aBuf.pBuf=new sal_Char[aBuf.nSiz+1])==NULL)
+ {
+ aBuf.nMax=aPwd.nMax;
+ aBuf.nSiz=aPwd.nSiz;
+ aBuf.nIdx=aPwd.nIdx;
+ aBuf.pBuf=aPwd.pBuf;
+ aPwd.pBuf=NULL;
+ }
+ else return Flush(0);
+ }
+ }
+ return FALSE;
+}
+
+BOOL Sw6File::TestCtrl(sal_Char cZch)
+// Spezial:Test auf Ende Extratext
+// ob cZch und ^M^J gleich kommen!
+{
+ Flush(3); // Teste die naechsten 3 Zchn
+ return aBuf.pBuf[aBuf.nIdx+0]==cZch &&
+ aBuf.pBuf[aBuf.nIdx+1]==NewPara &&
+ aBuf.pBuf[aBuf.nIdx+2]==NewLine;
+}
+
+
+BOOL Sw6File::ReadLn(String &rStr)
+// Lese eine PC-Zeile ein (CR/LF)
+{
+ rStr.Erase(); // String ist leer
+ while (FileOk()) // Solange kein Fehler auftrat
+ {
+ register BYTE *p = (BYTE *)&aBuf.pBuf[aBuf.nIdx], *pStt = p;
+ while (*p>'#' || *p>=' ' && *p<'#')
+ p++;
+
+ xub_StrLen nAsc = p - pStt;
+ if( nAsc )
+ {
+ rtl_TextEncoding eEnc = aSta.bTrs ? RTL_TEXTENCODING_IBM_850
+ : gsl_getSystemTextEncoding();
+ rStr += String( (sal_Char*)pStt, nAsc, eEnc );
+
+ aBuf.nIdx += nAsc;
+ }
+ switch (aBuf.pBuf[aBuf.nIdx])
+ {
+ case NewPara:
+ aBuf.nIdx++; // NewPara annehmen
+ Flush(1); // Sicherstellen das 1 Zchn da ist
+ if (aBuf.pBuf[aBuf.nIdx]==NewLine)
+ {
+ aBuf.nIdx++;
+ return TRUE;
+ }
+ break;
+ case NewLine:
+ aBuf.nIdx++; // Zeichen annehmen
+ Flush(0); // Einfach ignorieren
+ break;
+ case NewText:
+ if (aBuf.nIdx<aBuf.nMax)
+ { // Eof bleibt im Puffer
+ return TRUE; // erhalten und liefert
+ } // ab hier Leerzeilen
+ Flush(0);
+ break;
+ default:
+ Flush(nCtr); // Test ob es nCtr Zeichen gibt
+ aBuf.nIdx+=PutRest( // Zchn annehmen, Ignore Anzahl Zchn
+ rStr,&aBuf.pBuf[aBuf.nIdx]);
+ } // switch
+ } // while
+ return FALSE;
+}
+
+
+Sw6File::Sw6File( SvStream &rInp, size_t nBufSize, size_t nCtrSize,
+ ULONG *pErrno )
+// ctor, allokiert Puffer und merkt sich den
+// offenen Stream, von dem der Input kommt.
+{
+ pInp=&rInp;
+ pErr = pErrno;
+ nCtr=nCtrSize;
+ aSta.bErr=FALSE;
+ aSta.bTrs=FALSE;
+ aSta.bEof=pInp->IsEof();
+ aBuf.nSiz=nBufSize;
+ if (aBuf.nSiz && aBuf.nSiz> // Puffergr”áe==0 unzul„ssig
+ nCtr && (aBuf.pBuf=new // nSiz<Ctrl-SSize ebenfalls
+ sal_Char[aBuf.nSiz+1])!=NULL)
+ {
+ Flush(0); // Lese nun den Puffer voll
+ }
+ aNode.bAst=TRUE;
+ aNode.pLks=NULL;
+ aNode.pRts=NULL;
+}
+
+Sw6File::~Sw6File(void)
+// dtor, gibt den Filepuffer wieder frei
+{
+ DelTree(&aNode.pLks);
+ DelTree(&aNode.pRts);
+}
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/binfilter/bf_sw/source/filter/sw6/sw_sw6par.cxx b/binfilter/bf_sw/source/filter/sw6/sw_sw6par.cxx
new file mode 100644
index 000000000000..47d7ed7fc0d8
--- /dev/null
+++ b/binfilter/bf_sw/source/filter/sw6/sw_sw6par.cxx
@@ -0,0 +1,5596 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifdef _MSC_VER
+#pragma hdrstop
+#endif
+
+#define ITEMID_BOXINFO SID_ATTR_BORDER_INNER
+#include <hintids.hxx>
+
+#include <bf_svtools/pathoptions.hxx>
+#include <bf_svtools/fstathelper.hxx>
+#include <bf_svtools/urihelper.hxx>
+#include <bf_sfx2/docinf.hxx>
+#include <bf_sfx2/app.hxx>
+#include <bf_svx/boxitem.hxx>
+#include <bf_svx/fontitem.hxx>
+#include <bf_svx/lrspitem.hxx>
+#include <bf_svx/ulspitem.hxx>
+#include <bf_svx/brkitem.hxx>
+#include <bf_svx/lspcitem.hxx>
+#include <bf_svx/adjitem.hxx>
+#include <bf_svx/spltitem.hxx>
+#include <bf_svx/brshitem.hxx>
+#include <bf_svx/tstpitem.hxx>
+#include <bf_svx/fhgtitem.hxx>
+#include <bf_svx/wghtitem.hxx>
+#include <bf_svx/postitem.hxx>
+#include <bf_svx/udlnitem.hxx>
+#include <bf_svx/crsditem.hxx>
+#include <bf_svx/escpitem.hxx>
+#include <bf_svx/cntritem.hxx>
+#include <bf_svx/shdditem.hxx>
+#include <bf_svx/colritem.hxx>
+
+
+#include <fmtpdsc.hxx>
+#include <fmtftn.hxx>
+#include <txtftn.hxx>
+#include <fmtfld.hxx>
+#include <fmtfsize.hxx>
+#include <fmthdft.hxx>
+#include <fmtcntnt.hxx>
+#include <fmtcntnt.hxx>
+#include <fmtfsize.hxx>
+#include <fmtornt.hxx>
+#include <fmthbsh.hxx>
+#include <fchrfmt.hxx>
+#include <frmatr.hxx>
+#include <charatr.hxx>
+#include <ftninfo.hxx>
+#include <charfmt.hxx>
+#include <pam.hxx>
+#include <doc.hxx>
+#include <ndtxt.hxx>
+#include <fldbas.hxx>
+#include <paratr.hxx>
+#include <docufld.hxx>
+#include <flddat.hxx>
+#include <dbfld.hxx>
+#include <fmtcol.hxx>
+#include <linetype.hxx>
+#include <pagedesc.hxx>
+#include <fltini.hxx>
+#include <poolfmt.hxx>
+
+#ifdef __BORLANDC__
+ #pragma warn -lvc
+#endif
+
+#include <sw6par.hxx>
+#include <tox.hxx>
+#include <SwStyleNameMapper.hxx>
+#include "bf_so3/staticbaseurl.hxx"
+#include "linetype.hxx"
+namespace binfilter {
+
+#ifdef __BORLANDC__
+ #pragma warn +lvc
+#endif
+
+
+
+// Globals ******************************************************************
+
+ static const SwLineType __FAR_DATA aLineTypeArr[] =
+ {
+ // In Out Dist
+ LIN_0, LIN_1, LIN_0, // Einfache Linien
+ LIN_0, LIN_2, LIN_0,
+ LIN_0, LIN_3, LIN_0,
+ LIN_0, LIN_5, LIN_0,
+ LIN_1, LIN_1, LIN_2, // Doppelte Linien
+ LIN_2, LIN_2, LIN_2, // Doppelte Linien
+ LIN_3, LIN_3, LIN_3,
+ LIN_3, LIN_2, LIN_2,
+ LIN_2, LIN_3, LIN_2,
+ LIN_4, LIN_3, LIN_3,
+ LIN_3, LIN_4, LIN_3
+ };
+
+
+// **************************************************************************
+
+
+
+ const SwLineType& GetLineType(USHORT nIdx)
+ {
+ return aLineTypeArr[nIdx];
+ }
+
+
+
+#define SW6_MATCH_FONTNAMES_CNT 558
+static const sal_Char* aFontNames[ SW6_MATCH_FONTNAMES_CNT ] = {
+ /* 0 */ "Draft",
+ /* 1 */ "Courier",
+ /* 2 */ "Courier PS",
+ /* 3 */ "LinePrtR8",
+ /* 4 */ "CourierR8",
+ /* 5 */ "Pica",
+ /* 6 */ "OCR-B",
+ /* 7 */ "OCR-A",
+ /* 8 */ "Emphasis",
+ /* 9 */ "Kana",
+ /* 10 */ "Hebrew",
+ /* 11 */ "Elite",
+ /* 12 */ "Prestige",
+ /* 13 */ "Script",
+ /* 14 */ "Letter_Gothic",
+ /* 15 */ "Narrator",
+ /* 16 */ "Titan",
+ /* 17 */ "Bold_PS",
+ /* 18 */ "Cubic_PS",
+ /* 19 */ "Trend_PS",
+ /* 20 */ "Roman_PS",
+ /* 21 */ "Script_PS",
+ /* 22 */ "Gothic_PS",
+ /* 23 */ "Gothic",
+ /* 24 */ "Gothic PS",
+ /* 25 */ "Prestige PS",
+ /* 26 */ "Prestige_NLQ",
+ /* 27 */ "Quadro",
+ /* 28 */ "Gothik",
+ /* 29 */ "Prestige_PS",
+ /* 30 */ "Sans Serif",
+ /* 31 */ "Symbol",
+ /* 32 */ "Roman",
+ /* 33 */ "Super Grande",
+ /* 34 */ "Brougham",
+ /* 35 */ "Sans Serif PS",
+ /* 36 */ "Script PS",
+ /* 37 */ "Quadro PS",
+ /* 38 */ "Roman PS",
+ /* 39 */ "Super Grande PS",
+ /* 40 */ "Brougham PS",
+ /* 41 */ "Quadro_NLQ",
+ /* 42 */ "Gothik_NLQ",
+ /* 43 */ "Anelia_PS",
+ /* 44 */ "Quadro_PS",
+ /* 45 */ "Brougham_PS",
+ /* 46 */ "Letter Gothik",
+ /* 47 */ "Bother Helvetica PS",
+ /* 48 */ "PS Schrift",
+ /* 49 */ "Brother Times Roman PS",
+ /* 50 */ "Brougham12",
+ /* 51 */ "PS LQ",
+ /* 52 */ "OCR-B_LQ401",
+ /* 53 */ "Gothik_LQ401",
+ /* 54 */ "Gothik_LQ400",
+ /* 55 */ "Brougham_LQ400",
+ /* 56 */ "Anelia_PS_LQ400/401",
+ /* 57 */ "OCR-B_LQ_401",
+ /* 58 */ "Gothik_LQ_400",
+ /* 59 */ "Gothik_LQ_401",
+ /* 60 */ "Brougham_LQ_400",
+ /* 61 */ "Letter Gothic",
+ /* 62 */ "Sans Serif II",
+ /* 63 */ "BR-02H",
+ /* 64 */ "Roman II",
+ /* 65 */ "BR-01T",
+ /* 66 */ "BR-03B",
+ /* 67 */ "Br-01T",
+ /* 68 */ "Br-02H",
+ /* 69 */ "Line Printer",
+ /* 70 */ "Lori PS",
+ /* 71 */ "Br-01T bold",
+ /* 72 */ "Br-01T italic",
+ /* 73 */ "Br-02H bold",
+ /* 74 */ "Br-02H italic",
+ /* 75 */ "BR-01H",
+ /* 76 */ "Letter GothicIBM",
+ /* 77 */ "BroughamIBM",
+ /* 78 */ "Mars8",
+ /* 79 */ "BR-11U (Univers)",
+ /* 80 */ "BR01-T (CG Times)",
+ /* 81 */ "LetterGothicIBM",
+ /* 82 */ "LetterGothic",
+ /* 83 */ "PrestigeElite",
+ /* 84 */ "HELVETICA",
+ /* 85 */ "Helvetica",
+ /* 86 */ "BrotherHelv",
+ /* 87 */ "TimesRoman",
+ /* 88 */ "BrotherTimes",
+ /* 89 */ "AneliaPSIBM",
+ /* 90 */ "LoriPSIBM",
+ /* 91 */ "LineDrawU",
+ /* 92 */ "Anelia PS",
+ /* 93 */ "Orator",
+ /* 94 */ "OratorS",
+ /* 95 */ "Typenrad",
+ /* 96 */ "Pica_NLQ",
+ /* 97 */ "Pica_PS",
+ /* 98 */ "Pica_NLQ_PS",
+ /* 99 */ "OCR",
+ /* 100 */ "Italic",
+ /* 101 */ "Courier_PS",
+ /* 102 */ "Kassettenschrift",
+ /* 103 */ "Letter Gothic PS",
+ /* 104 */ "Courier_LQ",
+ /* 105 */ "Prestige_Elite",
+ /* 106 */ "LQ",
+ /* 107 */ "NLQ_PS",
+ /* 108 */ "LQ Display",
+ /* 109 */ "Display PS",
+ /* 110 */ "Times Roman",
+ /* 111 */ "Times Roman PS",
+ /* 112 */ "CourierIBM",
+ /* 113 */ "LetterGothik",
+ /* 114 */ "Quality",
+ /* 115 */ "NLQ",
+ /* 116 */ "Pica10",
+ /* 117 */ "High-SpeedDraft",
+ /* 118 */ "Scientific DQ Cart",
+ /* 119 */ "Scientific LQ Cart",
+ /* 120 */ "Scientific CQ Cart",
+ /* 121 */ "Compression",
+ /* 122 */ "Courier10",
+ /* 123 */ "PrestigeElite12",
+ /* 124 */ "Correspondence",
+ /* 125 */ "Letter Gothic LQ Cart",
+ /* 126 */ "Draft PS",
+ /* 127 */ "Pica10 PS",
+ /* 128 */ "High-SpeedDraft PS",
+ /* 129 */ "Compression PS",
+ /* 130 */ "Boldface PS",
+ /* 131 */ "Courier10 PS",
+ /* 132 */ "PrestigeElite12 PS",
+ /* 133 */ "Correspondence PS",
+ /* 134 */ "Proportional",
+ /* 135 */ "SansSerif",
+ /* 136 */ "SansSerif PS",
+ /* 137 */ "Roman NLQ PS",
+ /* 138 */ "Draft_NLQ",
+ /* 139 */ "Draft_PS",
+ /* 140 */ "Script LQ",
+ /* 141 */ "OCR B",
+ /* 142 */ "Script C PS",
+ /* 143 */ " OratorS",
+ /* 144 */ "Sans Serif H",
+ /* 145 */ "Roman T",
+ /* 146 */ "High-Speed Draft",
+ /* 147 */ "Scientific DQ",
+ /* 148 */ "Scientific LQ",
+ /* 149 */ "Scientific CQ",
+ /* 150 */ "Prestige Elite",
+ /* 151 */ "Old English",
+ /* 152 */ "Humanist",
+ /* 153 */ "Dutch",
+ /* 154 */ "High-Speed Draft PS",
+ /* 155 */ "Prestige Elite PS",
+ /* 156 */ "Humanist PS",
+ /* 157 */ "Dutch PS",
+ /* 158 */ "Tile",
+ /* 159 */ "Primus",
+ /* 160 */ "Title PS",
+ /* 161 */ "Fontkassette",
+ /* 162 */ "EDP_Resident",
+ /* 163 */ "Courier_Resident",
+ /* 164 */ "Courier_Download",
+ /* 165 */ "LegalCourier_Download",
+ /* 166 */ "LetterGothic_Download",
+ /* 167 */ "Prestige_Download",
+ /* 168 */ "LegalPrestige_Download",
+ /* 169 */ "HelvPS_Download",
+ /* 170 */ "CourierPS_Resident",
+ /* 171 */ "TMS_RomanPS_Download",
+ /* 172 */ "Legal EDP 13",
+ /* 173 */ "Courier_Outline",
+ /* 174 */ "SansSerif_Outline",
+ /* 175 */ "Roman_Outline",
+ /* 176 */ "Symbol_Outline",
+ /* 177 */ "Univers",
+ /* 178 */ "Atlantic",
+ /* 179 */ "Sans",
+ /* 180 */ "Challenge",
+ /* 181 */ "Sans Condensed",
+ /* 182 */ "Classico",
+ /* 183 */ "Milano",
+ /* 184 */ "Office",
+ /* 185 */ "Pentagon",
+ /* 186 */ "Avanti",
+ /* 187 */ "Classic",
+ /* 188 */ "Finish",
+ /* 189 */ "Hilton",
+ /* 190 */ "Ovetti",
+ /* 191 */ "Progress",
+ /* 192 */ "Westcoast",
+ /* 193 */ "Calculator",
+ /* 194 */ "Cescendo",
+ /* 195 */ "Console",
+ /* 196 */ "Funky",
+ /* 197 */ "NEWYORK",
+ /* 198 */ "Nova",
+ /* 199 */ "Paisley",
+ /* 200 */ "Shanghai",
+ /* 201 */ "Skyline",
+ /* 202 */ "Speed",
+ /* 203 */ "XPRESS",
+ /* 204 */ "CG Times",
+ /* 205 */ "PS Roman",
+ /* 206 */ "Booklet",
+ /* 207 */ "Centuri",
+ /* 208 */ "Paltus",
+ /* 209 */ "Tapir",
+ /* 210 */ "Greek",
+ /* 211 */ "Cyrillian",
+ /* 212 */ "WingDings",
+ /* 213 */ "LinePrtIBM",
+ /* 214 */ "Univers Condensed",
+ /* 215 */ "Arial",
+ /* 216 */ "Antique Olive",
+ /* 217 */ "Times New",
+ /* 218 */ "Garamond",
+ /* 219 */ "CG Omega",
+ /* 220 */ "Coronet",
+ /* 221 */ "Marigold",
+ /* 222 */ "Clarendon Condensed",
+ /* 223 */ "Albertus",
+ /* 224 */ "Wingdings",
+ /* 225 */ "SansCondensed",
+ /* 226 */ "PS-Roman",
+ /* 227 */ "Courier 6",
+ /* 228 */ "Courier 12",
+ /* 229 */ "Presentation 7 Cart_M",
+ /* 230 */ "Presentation 8 Cart_M",
+ /* 231 */ "Presentation 9 Cart_M",
+ /* 232 */ "Presentation 14 Cart_M",
+ /* 233 */ "Presentation 16 Cart_M",
+ /* 234 */ "Presentation 18 Cart_M",
+ /* 235 */ "CG Triumvirate Cart_CB",
+ /* 236 */ "CG Triumvirate Bold Cart_CB",
+ /* 237 */ "Prestige 5 Cart_B",
+ /* 238 */ "Prestige 7 Cart_B",
+ /* 239 */ "Prestige 10 Cart_B",
+ /* 240 */ "Letter Gothic 6",
+ /* 241 */ "Letter Gothic 12",
+ /* 242 */ "Letter Gothic 12 Cart_C",
+ /* 243 */ "Courier 24 Cart_L",
+ /* 244 */ "Letter Gothic 6 Cart_L",
+ /* 245 */ "Letter Gothic 7 Cart_M",
+ /* 246 */ "Letter Gothic 9.5 Cart_C",
+ /* 247 */ "Letter Gothic 12 Cart_L",
+ /* 248 */ "Letter Gothic 14 Cart_M",
+ /* 249 */ "Letter Gothic 19 Cart_L",
+ /* 250 */ "Letter Gothic 24 Cart_L",
+ /* 251 */ "CG Century Cart_CB",
+ /* 252 */ "Helvetica Cart_G",
+ /* 253 */ "Helvetica Cart_H",
+ /* 254 */ "Helvetica Cart_J",
+ /* 255 */ "Helvetica Cart_T",
+ /* 256 */ "Helvetica Cart_V",
+ /* 257 */ "Brush Cart_CE",
+ /* 258 */ "Dom Casual Cart_CD",
+ /* 259 */ "Times Roman Cart_R",
+ /* 260 */ "Garamond Antiqua Cart_CC",
+ /* 261 */ "Garamond Halbfett Cart_CC",
+ /* 262 */ "Times Roman Cart_U",
+ /* 263 */ "Letter2 Gothic 14 Cart_M",
+ /* 264 */ "Helvetica Softfont",
+ /* 265 */ "Times Roman Softfont",
+ /* 266 */ "Helv_AD/AF",
+ /* 267 */ "TmsRmn_AD/AF",
+ /* 268 */ "TimesNewRoman",
+ /* 269 */ "PS",
+ /* 270 */ "Font",
+ /* 271 */ "Pica_D",
+ /* 272 */ "Proportional_LQ",
+ /* 273 */ "HelveticaBold",
+ /* 274 */ "Times",
+ /* 275 */ "LinePrinter",
+ /* 276 */ "Courier_Footnote",
+ /* 277 */ "Courier Footnote",
+ /* 278 */ "ARIAL",
+ /* 279 */ "ARIAL Narrow",
+ /* 280 */ "ITC Avant Garde",
+ /* 281 */ "ITC Bookman",
+ /* 282 */ "Century Schoolbook",
+ /* 283 */ "Zapf Calligraphic",
+ /* 284 */ "ITC Zapf Chancery",
+ /* 285 */ "Sans Serif LQ",
+ /* 286 */ "Orator gro\xE1",
+ /* 287 */ "Orator klein",
+ /* 288 */ "Courier LQ",
+ /* 289 */ "Sans Serif NLQ PS",
+ /* 290 */ "Courier NLQ PS",
+ /* 291 */ "Sans_Serif_LQ",
+ /* 292 */ "San_Serif_NLQ_PS",
+ /* 293 */ "Courier_NLQ_PS",
+ /* 294 */ "LQ San Serif",
+ /* 295 */ "Optimo",
+ /* 296 */ "LQ Helvetica",
+ /* 297 */ "LQ Orator I",
+ /* 298 */ "Code 39",
+ /* 299 */ "LQ Orator II",
+ /* 300 */ "LQ OCR-B",
+ /* 301 */ "LQ OCR-A",
+ /* 302 */ "LQ Script",
+ /* 303 */ "LQ Courier",
+ /* 304 */ "LQ Prestige",
+ /* 305 */ "LQ Letter Gothic",
+ /* 306 */ "LQ Times Roman",
+ /* 307 */ "LQ TW Light",
+ /* 308 */ "Cinema",
+ /* 309 */ "LQ Blippo",
+ /* 310 */ "PS San Serif",
+ /* 311 */ "PS Helvetica",
+ /* 312 */ "PS Orator I",
+ /* 313 */ "PS Orator II",
+ /* 314 */ "PS Courier",
+ /* 315 */ "PS Prestige",
+ /* 316 */ "PS Letter Gothic",
+ /* 317 */ "PS Times Roman",
+ /* 318 */ "PS TW Light",
+ /* 319 */ "PS Blippo",
+ /* 320 */ "S.Bern",
+ /* 321 */ "S.Roman",
+ /* 322 */ "S.Bern PS",
+ /* 323 */ "Orator PS",
+ /* 324 */ "S.Roman PS",
+ /* 325 */ "HQ",
+ /* 326 */ "Elite_D",
+ /* 327 */ "Schrift-Art 1",
+ /* 328 */ "Schrift-Art 2",
+ /* 329 */ "Schrift-Art 3",
+ /* 330 */ "Schrift-Art 4",
+ /* 331 */ "Schrift-Art 5",
+ /* 332 */ "Draft Gothik",
+ /* 333 */ "Quick Gothik",
+ /* 334 */ "Prestige Elite WP",
+ /* 335 */ "Helvette PS",
+ /* 336 */ "Bold PS",
+ /* 337 */ "Times PS",
+ /* 338 */ "Souvenier",
+ /* 339 */ "Superfocus",
+ /* 340 */ "LQ PS",
+ /* 341 */ "Ext.Font",
+ /* 342 */ "Pica LQ",
+ /* 343 */ "Pica HD",
+ /* 344 */ "Elite LQ",
+ /* 345 */ "Elite HD",
+ /* 346 */ "PS HD",
+ /* 347 */ "Draft_Gothik",
+ /* 348 */ "Fast Focus 10",
+ /* 349 */ "Fast Focus 12",
+ /* 350 */ "Pr._Elite",
+ /* 351 */ "ITC_Souvenir",
+ /* 352 */ "LQ Font Cartridges",
+ /* 353 */ "Pica/Draft",
+ /* 354 */ "Pica_HS",
+ /* 355 */ "PS_LQ",
+ /* 356 */ "PS_LQ(hoch/tief)",
+ /* 357 */ "OCR B 702",
+ /* 358 */ "OCR A 702",
+ /* 359 */ "Bar Code 39 702",
+ /* 360 */ "UPC / EAN 702",
+ /* 361 */ "Super Focus 707",
+ /* 362 */ "Helvette ASCII 701",
+ /* 363 */ "Helvette Greek-Math 701",
+ /* 364 */ "Prestige Pica 708",
+ /* 365 */ "Letter Gothic 703",
+ /* 366 */ "Letter Gothic 707",
+ /* 367 */ "Letter Gothic 14 P. 703",
+ /* 368 */ "ITC Souvenir",
+ /* 369 */ "Times ASCII 701",
+ /* 370 */ "Times Greek-Math 701",
+ /* 371 */ "Helvette PS 18 P. 705",
+ /* 372 */ "Helvette PS 24 P. 705",
+ /* 373 */ "Bold Italic PS 708",
+ /* 374 */ "Times PS 18 P. 704",
+ /* 375 */ "Times PS 24 P. 704",
+ /* 376 */ "ITC Bookman 10 P. 706",
+ /* 377 */ "ITC Bookman 18 P. 706",
+ /* 378 */ "ITC Bookman 24 P. 706",
+ /* 379 */ "Helvetica PS",
+ /* 380 */ "Helvetica PS Scale",
+ /* 381 */ "Times PS Scale",
+ /* 382 */ "Helvette_PS",
+ /* 383 */ "Times_PS",
+ /* 384 */ "NLQ##",
+ /* 385 */ "HS_Draft",
+ /* 386 */ "Helvette",
+ /* 387 */ "Prestige Cart",
+ /* 388 */ "Letter Gothic Cart",
+ /* 389 */ "Schrift Cart",
+ /* 390 */ "Hevette PS",
+ /* 391 */ "Fontkassette LQ",
+ /* 392 */ "Courier_LQ_PS",
+ /* 393 */ "Utility",
+ /* 394 */ "Gothik_LQ",
+ /* 395 */ "Helvette_LQ",
+ /* 396 */ "Bold_LQ",
+ /* 397 */ "Prestige_LQ",
+ /* 398 */ "Roman_LQ",
+ /* 399 */ "Gothik_PS",
+ /* 400 */ "Draft HS",
+ /* 401 */ "Helvette LQ",
+ /* 402 */ "OCR-B Cassette",
+ /* 403 */ "OCR-A Cassette",
+ /* 404 */ "Roman LQ",
+ /* 405 */ "Prestige LQ",
+ /* 406 */ "Letter Gothic LQ",
+ /* 407 */ "Helvette LQ PS",
+ /* 408 */ "Courier LQ PS",
+ /* 409 */ "Roman LQ PS",
+ /* 410 */ "Prestige LQ PS",
+ /* 411 */ "Letter Gothic LQ PS",
+ /* 412 */ "Cassettenschrift",
+ /* 413 */ "Draft_HS",
+ /* 414 */ "Fontkassette_LQ",
+ /* 415 */ "HelveticaBold_S2",
+ /* 416 */ "TimesRoman_S2",
+ /* 417 */ "LinePrinterIBM",
+ /* 418 */ "Helvetic",
+ /* 419 */ "TimesRomanCompr.",
+ /* 420 */ "LinePrinterR8",
+ /* 421 */ "Pica NLQ",
+ /* 422 */ "Proportional LQ",
+ /* 423 */ "Letter Gothic 6",
+ /* 424 */ "Letter Gothic 12",
+ /* 425 */ "Letter Gothic 4\xAC",
+ /* 426 */ "Letter Gothic 9\xAB",
+ /* 427 */ "Times Nordic Cart E",
+ /* 428 */ "Courier Cart 1",
+ /* 429 */ "Prestige Elite Cart 1",
+ /* 430 */ "Letter Gothic Cart 6",
+ /* 431 */ "Prestige Elite Cart 7",
+ /* 432 */ "ARIAL R8 Cart 2",
+ /* 433 */ "ARIAL R8 Cart 5",
+ /* 434 */ "ARIAL R8 Cart 8",
+ /* 435 */ "ARIAL R8",
+ /* 436 */ "Dutch R8 Cart 3",
+ /* 437 */ "Dutch R8 Cart 5",
+ /* 438 */ "Dutch R8 Cart 8",
+ /* 439 */ "Dutch R8",
+ /* 440 */ "Century 702",
+ /* 441 */ "NLQ PS",
+ /* 442 */ "Elite NLQ",
+ /* 443 */ "Pica PS",
+ /* 444 */ "Pica PS NLQ",
+ /* 445 */ "Datenschrift",
+ /* 446 */ "Font Card",
+ /* 447 */ "BOLD",
+ /* 448 */ "BOLD PS",
+ /* 449 */ "Outline",
+ /* 450 */ "Century",
+ /* 451 */ "Letter_Gothic_PS",
+ /* 452 */ "Typenrad PS",
+ /* 453 */ "IC-Font",
+ /* 454 */ "Hoch-Tief-Schrift",
+ /* 455 */ "Roman Script",
+ /* 456 */ "Roman Script PS",
+ /* 457 */ "Font 3",
+ /* 458 */ "Font 1",
+ /* 459 */ "Font 2",
+ /* 460 */ "Font 3 PS",
+ /* 461 */ "Font 1 PS",
+ /* 462 */ "Font 2 PS",
+ /* 463 */ "Helvetica-Narrow",
+ /* 464 */ "AvantGarde-Book",
+ /* 465 */ "Times-Roman",
+ /* 466 */ "Bookman-Light",
+ /* 467 */ "NewCentury-SchlbkRoman",
+ /* 468 */ "Palatino-Roman",
+ /* 469 */ "ZapfChancery-MediumItalic",
+ /* 470 */ "P_LQ",
+ /* 471 */ "P_NLQ",
+ /* 472 */ "Elite_LQ",
+ /* 473 */ "Elite_NLQ",
+ /* 474 */ "Corpora_LQ",
+ /* 475 */ "Corpora_NLQ",
+ /* 476 */ "Cubic_PS_LQ",
+ /* 477 */ "Cubic_PS_NLQ",
+ /* 478 */ "Cubic_Mini_PS_LQ",
+ /* 479 */ "Cubic_Mini_PS_NLQ",
+ /* 480 */ "S.Helv",
+ /* 481 */ "S.Helvetica",
+ /* 482 */ "S.Helvetica PS",
+ /* 483 */ "Gothic 12",
+ /* 484 */ "TW-Light",
+ /* 485 */ "San Serif PS",
+ /* 486 */ "TW-Light PS",
+ /* 487 */ "Cinema PS",
+ /* 488 */ "Orator_gro\xE1",
+ /* 489 */ "Orator_klein",
+ /* 490 */ "Orator_LQ",
+ /* 491 */ "Script_LQ",
+ /* 492 */ "OPTIONAL_LQ *",
+ /* 493 */ "Orator_PS",
+ /* 494 */ "OPTIONAL_PS *",
+ /* 495 */ "GothicR8",
+ /* 496 */ "Helvet",
+ /* 497 */ "TimesIBM",
+ /* 498 */ "PS_NLQ",
+ /* 499 */ "Draft Hoch",
+ /* 500 */ "LQ Roman",
+ /* 501 */ "LQ H-GOTHIC",
+ /* 502 */ "LQ Roman PS",
+ /* 503 */ "LQ Orator",
+ /* 504 */ "LQ Optimo",
+ /* 505 */ "LQ Courier Hoch",
+ /* 506 */ "SLQ Times Roman",
+ /* 507 */ "LQ TW-Light",
+ /* 508 */ "SLQ TW-Light",
+ /* 509 */ "Cassetten-Schrift",
+ /* 510 */ "LQ Greek",
+ /* 511 */ "LQ Cinema",
+ /* 512 */ "LQ Helvetica PS",
+ /* 513 */ "LQ Orator PS",
+ /* 514 */ "LQ Optimo PS",
+ /* 515 */ "LQ Courier PS",
+ /* 516 */ "LQ Pestige PS",
+ /* 517 */ "LQ Letter Gothic PS",
+ /* 518 */ "LQ Times Roman PS",
+ /* 519 */ "SLQ Times Roman PS",
+ /* 520 */ "LQ TW-Light PS",
+ /* 521 */ "SLQ TW-Light PS",
+ /* 522 */ "LQ Cinema PS",
+ /* 523 */ "LQ Blippo PS",
+ /* 524 */ "LQ Bar Code 39",
+ /* 525 */ "SLQ Script",
+ /* 526 */ "LQ Orane (Optimo)",
+ /* 527 */ "SLQ Roman",
+ /* 528 */ "LQ H-Gothic (Helvet)",
+ /* 529 */ "LQ Sanserif",
+ /* 530 */ "LQ H-Gothic (Helvet) PS",
+ /* 531 */ "LQ Orane (Optimo) PS",
+ /* 532 */ "LQ Prestige PS",
+ /* 533 */ "SLQ Roman PS",
+ /* 534 */ "LQ Sanserif PS",
+ /* 535 */ "LQ Times-Roman",
+ /* 536 */ "SLQ Times-Roman",
+ /* 537 */ "PS Sanserif",
+ /* 538 */ "PS Script",
+ /* 539 */ "PS Times-Roman",
+ /* 540 */ "PS TW-Light",
+ /* 541 */ "Optionaler Font",
+ /* 542 */ "PrestigeElite PS",
+ /* 543 */ "Kleinschrift",
+ /* 544 */ "Schnellschrift",
+ /* 545 */ "Font_4",
+ /* 546 */ "Font_5",
+ /* 547 */ "Font_6",
+ /* 548 */ "Font_7",
+ /* 549 */ "Deutsch mit Serifen",
+ /* 550 */ "IBM mit Serifen",
+ /* 551 */ "German Courier 10 (B8156-01)",
+ /* 552 */ "Deutsch ohne Serifen",
+ /* 553 */ "IBM ohne Serifen",
+ /* 554 */ "Deutsch mit Serifen PS",
+ /* 555 */ "IBM mit Serifen PS",
+ /* 556 */ "Deutsch ohne Serifen PS",
+ /* 557 */ "IBM ohne Serifen PS"
+};
+
+static const struct Sw6PrinterFont
+{
+ USHORT nFontNo, nFontNmNo;
+ FontFamily eFamily;
+ sal_Bool bPCFont, bFixPitch;
+}
+ a5000DI[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 98, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aACERLP75[] = {
+ { 2, 3, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 4, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aAEG200I[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 15, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 17, 7, FAMILY_ROMAN, sal_True, sal_True },
+ { 19, 8, FAMILY_ROMAN, sal_True, sal_True },
+ { 21, 9, FAMILY_ROMAN, sal_True, sal_True },
+ { 23, 10, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 11, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 39, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 41, 14, FAMILY_ROMAN, sal_True, sal_True },
+ { 47, 15, FAMILY_ROMAN, sal_True, sal_True },
+ { 49, 16, FAMILY_ROMAN, sal_True, sal_True },
+ { 70, 17, FAMILY_SWISS, sal_True, sal_False },
+ { 76, 18, FAMILY_SWISS, sal_True, sal_False },
+ { 77, 19, FAMILY_SWISS, sal_True, sal_False },
+ { 98, 20, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 21, FAMILY_ROMAN, sal_True, sal_False },
+ { 101, 22, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBJ10E[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBJ130E[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBJ300[] = {
+ { 2, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 4, 23, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 66, 24, FAMILY_SWISS, sal_True, sal_False },
+ { 98, 25, FAMILY_ROMAN, sal_True, sal_False },
+ { 102, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBR1109[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 26, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBR1209[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 31, 27, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 41, 28, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBR1224L[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 99, 29, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBR1324[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 4, 30, FAMILY_ROMAN, sal_True, sal_True },
+ { 6, 31, FAMILY_ROMAN, sal_True, sal_True },
+ { 15, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 7, FAMILY_ROMAN, sal_True, sal_True },
+ { 26, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 31, 27, FAMILY_ROMAN, sal_True, sal_True },
+ { 36, 32, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 41, 23, FAMILY_ROMAN, sal_True, sal_True },
+ { 56, 33, FAMILY_ROMAN, sal_True, sal_True },
+ { 57, 34, FAMILY_ROMAN, sal_True, sal_True },
+ { 66, 35, FAMILY_SWISS, sal_True, sal_False },
+ { 77, 36, FAMILY_SWISS, sal_True, sal_False },
+ { 80, 37, FAMILY_SWISS, sal_True, sal_False },
+ { 98, 38, FAMILY_ROMAN, sal_True, sal_True },
+ { 99, 25, FAMILY_ROMAN, sal_True, sal_False },
+ { 101, 24, FAMILY_ROMAN, sal_True, sal_False },
+ { 108, 39, FAMILY_ROMAN, sal_True, sal_False },
+ { 109, 40, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBR1409[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 32, 41, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 26, FAMILY_ROMAN, sal_True, sal_True },
+ { 46, 42, FAMILY_ROMAN, sal_True, sal_True },
+ { 110, 43, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBR1509[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 32, 41, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 26, FAMILY_ROMAN, sal_True, sal_True },
+ { 42, 42, FAMILY_ROMAN, sal_True, sal_True },
+ { 110, 43, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBR1709[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 32, 41, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 26, FAMILY_ROMAN, sal_True, sal_True },
+ { 42, 42, FAMILY_ROMAN, sal_True, sal_True },
+ { 110, 43, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBR1724L[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 31, 27, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 57, 34, FAMILY_ROMAN, sal_True, sal_True },
+ { 80, 44, FAMILY_SWISS, sal_True, sal_False },
+ { 99, 29, FAMILY_ROMAN, sal_True, sal_False },
+ { 109, 45, FAMILY_ROMAN, sal_True, sal_False },
+ { 110, 43, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBR1824L[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 6, 31, FAMILY_ROMAN, sal_True, sal_True },
+ { 15, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 7, FAMILY_ROMAN, sal_True, sal_True },
+ { 31, 27, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 41, 46, FAMILY_ROMAN, sal_True, sal_True },
+ { 56, 33, FAMILY_ROMAN, sal_True, sal_True },
+ { 57, 34, FAMILY_ROMAN, sal_True, sal_True },
+ { 68, 47, FAMILY_SWISS, sal_True, sal_False },
+ { 77, 36, FAMILY_SWISS, sal_True, sal_False },
+ { 99, 48, FAMILY_ROMAN, sal_True, sal_False },
+ { 102, 49, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBR2024[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 58, 50, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 51, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBR2518[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 16, 52, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 41, 53, FAMILY_ROMAN, sal_True, sal_True },
+ { 42, 54, FAMILY_ROMAN, sal_True, sal_True },
+ { 58, 55, FAMILY_ROMAN, sal_True, sal_True },
+ { 110, 56, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBR3524L[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 31, 27, FAMILY_ROMAN, sal_True, sal_True },
+ { 45, 28, FAMILY_ROMAN, sal_True, sal_True },
+ { 57, 34, FAMILY_ROMAN, sal_True, sal_True },
+ { 110, 43, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBR4018[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 15, 57, FAMILY_ROMAN, sal_True, sal_True },
+ { 31, 27, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 41, 58, FAMILY_ROMAN, sal_True, sal_True },
+ { 42, 59, FAMILY_ROMAN, sal_True, sal_True },
+ { 57, 60, FAMILY_ROMAN, sal_True, sal_True },
+ { 110, 43, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBRHJ770[] = {
+ { 16, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 7, FAMILY_ROMAN, sal_True, sal_True },
+ { 26, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 32, 27, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 46, 61, FAMILY_ROMAN, sal_True, sal_True },
+ { 56, 33, FAMILY_ROMAN, sal_True, sal_True },
+ { 58, 34, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 62, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 63, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 64, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 65, FAMILY_ROMAN, sal_True, sal_False },
+ { 109, 66, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBRHL4[] = {
+ { 1, 34, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 61, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 67, FAMILY_ROMAN, sal_True, sal_True },
+ { 4, 68, FAMILY_ROMAN, sal_True, sal_True },
+ { 5, 46, FAMILY_ROMAN, sal_True, sal_True },
+ { 6, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 7, 69, FAMILY_ROMAN, sal_True, sal_True },
+ { 8, 70, FAMILY_ROMAN, sal_True, sal_True },
+ { 9, 67, FAMILY_ROMAN, sal_True, sal_True },
+ { 10, 71, FAMILY_ROMAN, sal_True, sal_True },
+ { 11, 72, FAMILY_ROMAN, sal_True, sal_True },
+ { 12, 68, FAMILY_ROMAN, sal_True, sal_True },
+ { 13, 73, FAMILY_ROMAN, sal_True, sal_True },
+ { 14, 69, FAMILY_ROMAN, sal_True, sal_True },
+ { 15, 67, FAMILY_ROMAN, sal_True, sal_True },
+ { 16, 71, FAMILY_ROMAN, sal_True, sal_True },
+ { 17, 72, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 68, FAMILY_ROMAN, sal_True, sal_True },
+ { 19, 73, FAMILY_ROMAN, sal_True, sal_True },
+ { 20, 74, FAMILY_ROMAN, sal_True, sal_True },
+ { 21, 65, FAMILY_ROMAN, sal_True, sal_True },
+ { 22, 75, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBRHL48V[] = {
+ { 1, 76, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 77, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 78, FAMILY_DONTKNOW, sal_False, sal_True },
+ { 65, 79, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 80, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBRHL8DB[] = {
+ { 1, 77, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 81, FAMILY_ROMAN, sal_True, sal_True },
+ { 44, 82, FAMILY_ROMAN, sal_True, sal_True },
+ { 53, 83, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 84, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 85, FAMILY_SWISS, sal_True, sal_False },
+ { 67, 86, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 88, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 89, FAMILY_ROMAN, sal_True, sal_False },
+ { 101, 90, FAMILY_ROMAN, sal_True, sal_False },
+ { 128, 91, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBRHR[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 15, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 17, 7, FAMILY_ROMAN, sal_True, sal_True },
+ { 19, 8, FAMILY_ROMAN, sal_True, sal_True },
+ { 21, 9, FAMILY_ROMAN, sal_True, sal_True },
+ { 23, 10, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 11, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 39, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 41, 14, FAMILY_ROMAN, sal_True, sal_True },
+ { 47, 15, FAMILY_ROMAN, sal_True, sal_True },
+ { 49, 16, FAMILY_ROMAN, sal_True, sal_True },
+ { 70, 17, FAMILY_SWISS, sal_True, sal_False },
+ { 76, 18, FAMILY_SWISS, sal_True, sal_False },
+ { 77, 19, FAMILY_SWISS, sal_True, sal_False },
+ { 98, 20, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 21, FAMILY_ROMAN, sal_True, sal_False },
+ { 101, 22, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aBROTHER[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 32, 27, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 46, 23, FAMILY_ROMAN, sal_True, sal_True },
+ { 58, 34, FAMILY_ROMAN, sal_True, sal_True },
+ { 80, 37, FAMILY_SWISS, sal_True, sal_False },
+ { 99, 25, FAMILY_ROMAN, sal_True, sal_False },
+ { 103, 24, FAMILY_ROMAN, sal_True, sal_False },
+ { 109, 40, FAMILY_ROMAN, sal_True, sal_False },
+ { 110, 92, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aCANONBJX[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 4, 30, FAMILY_ROMAN, sal_True, sal_True },
+ { 13, 93, FAMILY_ROMAN, sal_True, sal_True },
+ { 14, 94, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 32, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 66, 35, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 38, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 25, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 36, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aCE500[] = {
+ { 1, 95, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aCE700[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 15, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 17, 7, FAMILY_ROMAN, sal_True, sal_True },
+ { 19, 8, FAMILY_ROMAN, sal_True, sal_True },
+ { 21, 9, FAMILY_ROMAN, sal_True, sal_True },
+ { 23, 10, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 11, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 39, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 41, 14, FAMILY_ROMAN, sal_True, sal_True },
+ { 47, 15, FAMILY_ROMAN, sal_True, sal_True },
+ { 49, 16, FAMILY_ROMAN, sal_True, sal_True },
+ { 70, 17, FAMILY_SWISS, sal_True, sal_False },
+ { 76, 18, FAMILY_SWISS, sal_True, sal_False },
+ { 77, 19, FAMILY_SWISS, sal_True, sal_False },
+ { 98, 20, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 21, FAMILY_ROMAN, sal_True, sal_False },
+ { 101, 22, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aCIE_210E[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 96, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 97, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 98, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aCIE_310E[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 96, FAMILY_ROMAN, sal_True, sal_True },
+ { 17, 99, FAMILY_ROMAN, sal_True, sal_True },
+ { 19, 100, FAMILY_ROMAN, sal_True, sal_True },
+ { 41, 14, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 97, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 98, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aCIE_610E[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 15, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 17, 7, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 101, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aCIE_610P[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 30, FAMILY_ROMAN, sal_True, sal_True },
+ { 13, 102, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 32, FAMILY_ROMAN, sal_True, sal_True },
+ { 50, 61, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 35, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 38, FAMILY_ROMAN, sal_True, sal_False },
+ { 110, 103, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aCIE_715E[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 13, 93, FAMILY_ROMAN, sal_True, sal_True },
+ { 15, 7, FAMILY_ROMAN, sal_True, sal_True },
+ { 17, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 104, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 11, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 105, FAMILY_ROMAN, sal_True, sal_True },
+ { 39, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 41, 23, FAMILY_ROMAN, sal_True, sal_True },
+ { 42, 14, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 101, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aCIT120D[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 106, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 107, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aCIT120DP[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 106, FAMILY_ROMAN, sal_True, sal_True },
+ { 36, 108, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 107, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 109, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aCIT124D[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 110, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 111, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aCITOH52[] = {
+ { 1, 3, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 112, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 82, FAMILY_ROMAN, sal_True, sal_True },
+ { 44, 113, FAMILY_ROMAN, sal_True, sal_True },
+ { 45, 113, FAMILY_ROMAN, sal_True, sal_True },
+ { 46, 113, FAMILY_ROMAN, sal_True, sal_True },
+ { 53, 83, FAMILY_ROMAN, sal_True, sal_True },
+ { 54, 83, FAMILY_ROMAN, sal_True, sal_True },
+ { 55, 83, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 85, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 85, FAMILY_SWISS, sal_True, sal_False },
+ { 67, 85, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aD_630[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 15, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 17, 7, FAMILY_ROMAN, sal_True, sal_True },
+ { 19, 8, FAMILY_ROMAN, sal_True, sal_True },
+ { 21, 9, FAMILY_ROMAN, sal_True, sal_True },
+ { 23, 10, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 11, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 39, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 41, 14, FAMILY_ROMAN, sal_True, sal_True },
+ { 47, 15, FAMILY_ROMAN, sal_True, sal_True },
+ { 49, 16, FAMILY_ROMAN, sal_True, sal_True },
+ { 70, 17, FAMILY_SWISS, sal_True, sal_False },
+ { 76, 18, FAMILY_SWISS, sal_True, sal_False },
+ { 77, 19, FAMILY_SWISS, sal_True, sal_False },
+ { 98, 20, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 21, FAMILY_ROMAN, sal_True, sal_False },
+ { 101, 22, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aD_630E[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 15, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 17, 7, FAMILY_ROMAN, sal_True, sal_True },
+ { 19, 8, FAMILY_ROMAN, sal_True, sal_True },
+ { 21, 9, FAMILY_ROMAN, sal_True, sal_True },
+ { 23, 10, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 11, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 39, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 41, 14, FAMILY_ROMAN, sal_True, sal_True },
+ { 47, 15, FAMILY_ROMAN, sal_True, sal_True },
+ { 49, 16, FAMILY_ROMAN, sal_True, sal_True },
+ { 70, 17, FAMILY_SWISS, sal_True, sal_False },
+ { 76, 18, FAMILY_SWISS, sal_True, sal_False },
+ { 77, 19, FAMILY_SWISS, sal_True, sal_False },
+ { 98, 20, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 21, FAMILY_ROMAN, sal_True, sal_False },
+ { 101, 22, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aD_630HZ[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 15, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 17, 7, FAMILY_ROMAN, sal_True, sal_True },
+ { 19, 8, FAMILY_ROMAN, sal_True, sal_True },
+ { 21, 9, FAMILY_ROMAN, sal_True, sal_True },
+ { 23, 10, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 11, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 39, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 41, 14, FAMILY_ROMAN, sal_True, sal_True },
+ { 47, 15, FAMILY_ROMAN, sal_True, sal_True },
+ { 49, 16, FAMILY_ROMAN, sal_True, sal_True },
+ { 70, 17, FAMILY_SWISS, sal_True, sal_False },
+ { 76, 18, FAMILY_SWISS, sal_True, sal_False },
+ { 77, 19, FAMILY_SWISS, sal_True, sal_False },
+ { 98, 20, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 21, FAMILY_ROMAN, sal_True, sal_False },
+ { 101, 22, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aDICO150[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 114, FAMILY_ROMAN, sal_True, sal_True },
+ { 50, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aDICO300I[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 25, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 114, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aDLP[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 116, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 117, FAMILY_ROMAN, sal_True, sal_True },
+ { 21, 118, FAMILY_ROMAN, sal_True, sal_True },
+ { 22, 119, FAMILY_ROMAN, sal_True, sal_True },
+ { 24, 120, FAMILY_ROMAN, sal_True, sal_True },
+ { 32, 121, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 122, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 123, FAMILY_ROMAN, sal_True, sal_True },
+ { 39, 124, FAMILY_ROMAN, sal_True, sal_True },
+ { 45, 125, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 126, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 127, FAMILY_SWISS, sal_True, sal_False },
+ { 67, 128, FAMILY_SWISS, sal_True, sal_False },
+ { 78, 129, FAMILY_SWISS, sal_True, sal_False },
+ { 80, 130, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 131, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 132, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 133, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aDLQ[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 106, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aDMP[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 134, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aEPLQ800[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 98, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aEPLX800[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 30, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 32, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aEPSFX[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 135, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 32, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 126, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 136, FAMILY_SWISS, sal_True, sal_False },
+ { 98, 137, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aEPSFX100[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 138, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 139, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aEPSFX80[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 138, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 139, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aEPSLQ[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 4, 30, FAMILY_ROMAN, sal_True, sal_True },
+ { 13, 93, FAMILY_ROMAN, sal_True, sal_True },
+ { 14, 94, FAMILY_ROMAN, sal_True, sal_True },
+ { 16, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 7, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 32, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 140, FAMILY_ROMAN, sal_True, sal_True },
+ { 66, 35, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 38, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 25, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 36, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aEPSRX[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 138, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 139, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aESCP2[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 4, 30, FAMILY_ROMAN, sal_True, sal_True },
+ { 16, 141, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 32, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 41, 142, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 93, FAMILY_ROMAN, sal_True, sal_True },
+ { 44, 143, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 144, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 35, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 38, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 25, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 145, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aFUJIDL24[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 146, FAMILY_ROMAN, sal_True, sal_True },
+ { 21, 147, FAMILY_ROMAN, sal_True, sal_True },
+ { 22, 148, FAMILY_ROMAN, sal_True, sal_True },
+ { 24, 149, FAMILY_ROMAN, sal_True, sal_True },
+ { 26, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 32, 121, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 150, FAMILY_ROMAN, sal_True, sal_True },
+ { 39, 124, FAMILY_ROMAN, sal_True, sal_True },
+ { 42, 151, FAMILY_ROMAN, sal_True, sal_True },
+ { 45, 61, FAMILY_ROMAN, sal_True, sal_True },
+ { 56, 152, FAMILY_ROMAN, sal_True, sal_True },
+ { 60, 153, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 126, FAMILY_SWISS, sal_True, sal_False },
+ { 67, 154, FAMILY_SWISS, sal_True, sal_False },
+ { 78, 129, FAMILY_SWISS, sal_True, sal_False },
+ { 80, 130, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 155, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 133, FAMILY_ROMAN, sal_True, sal_False },
+ { 103, 103, FAMILY_ROMAN, sal_True, sal_False },
+ { 108, 156, FAMILY_ROMAN, sal_True, sal_False },
+ { 110, 157, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aGABRIELE[] = {
+ { 1, 158, FAMILY_ROMAN, sal_True, sal_True },
+ { 4, 159, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 160, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aGENICOM[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 161, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aGQ3500SF[] = {
+ { 1, 162, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 163, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 164, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 165, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 166, FAMILY_ROMAN, sal_True, sal_True },
+ { 55, 167, FAMILY_ROMAN, sal_True, sal_True },
+ { 56, 168, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 169, FAMILY_SWISS, sal_True, sal_False },
+ { 70, 170, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 171, FAMILY_ROMAN, sal_True, sal_False },
+ { 164, 172, FAMILY_DECORATIVE, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aGQ5000[] = {
+ { 33, 173, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 174, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 175, FAMILY_ROMAN, sal_True, sal_False },
+ { 128, 176, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aGRAPHICS[] = {
+ { 34, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 177, FAMILY_SWISS, sal_True, sal_True },
+ { 66, 178, FAMILY_SWISS, sal_True, sal_True },
+ { 67, 179, FAMILY_SWISS, sal_True, sal_True },
+ { 68, 180, FAMILY_SWISS, sal_True, sal_True },
+ { 69, 181, FAMILY_SWISS, sal_True, sal_True },
+ { 70, 182, FAMILY_SWISS, sal_True, sal_True },
+ { 71, 183, FAMILY_SWISS, sal_True, sal_True },
+ { 72, 184, FAMILY_SWISS, sal_True, sal_True },
+ { 73, 185, FAMILY_SWISS, sal_True, sal_True },
+ { 74, 186, FAMILY_SWISS, sal_True, sal_True },
+ { 75, 187, FAMILY_SWISS, sal_True, sal_True },
+ { 76, 188, FAMILY_SWISS, sal_True, sal_True },
+ { 77, 189, FAMILY_SWISS, sal_True, sal_True },
+ { 78, 190, FAMILY_SWISS, sal_True, sal_True },
+ { 79, 150, FAMILY_SWISS, sal_True, sal_True },
+ { 80, 191, FAMILY_SWISS, sal_True, sal_True },
+ { 81, 192, FAMILY_SWISS, sal_True, sal_True },
+ { 82, 193, FAMILY_SWISS, sal_True, sal_True },
+ { 83, 194, FAMILY_SWISS, sal_True, sal_True },
+ { 84, 195, FAMILY_SWISS, sal_True, sal_True },
+ { 85, 196, FAMILY_SWISS, sal_True, sal_True },
+ { 86, 197, FAMILY_SWISS, sal_True, sal_True },
+ { 87, 198, FAMILY_SWISS, sal_True, sal_True },
+ { 88, 199, FAMILY_SWISS, sal_True, sal_True },
+ { 89, 200, FAMILY_SWISS, sal_True, sal_True },
+ { 90, 201, FAMILY_SWISS, sal_True, sal_True },
+ { 91, 202, FAMILY_SWISS, sal_True, sal_True },
+ { 92, 203, FAMILY_SWISS, sal_True, sal_True },
+ { 97, 204, FAMILY_ROMAN, sal_True, sal_True },
+ { 98, 205, FAMILY_ROMAN, sal_True, sal_True },
+ { 103, 206, FAMILY_ROMAN, sal_True, sal_True },
+ { 105, 207, FAMILY_ROMAN, sal_True, sal_True },
+ { 109, 208, FAMILY_ROMAN, sal_True, sal_True },
+ { 130, 209, FAMILY_DECORATIVE, sal_True, sal_True },
+ { 135, 78, FAMILY_DONTKNOW, sal_False, sal_True },
+ { 136, 78, FAMILY_DONTKNOW, sal_False, sal_True },
+ { 137, 210, FAMILY_DONTKNOW, sal_False, sal_True },
+ { 138, 211, FAMILY_DONTKNOW, sal_False, sal_True },
+ { 140, 212, FAMILY_DONTKNOW, sal_False, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aHP4[] = {
+ { 1, 213, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 177, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 214, FAMILY_SWISS, sal_True, sal_False },
+ { 67, 215, FAMILY_SWISS, sal_True, sal_False },
+ { 68, 216, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 204, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 217, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 218, FAMILY_ROMAN, sal_True, sal_False },
+ { 102, 219, FAMILY_ROMAN, sal_True, sal_False },
+ { 103, 61, FAMILY_ROMAN, sal_True, sal_True },
+ { 131, 220, FAMILY_DECORATIVE, sal_True, sal_False },
+ { 132, 221, FAMILY_DECORATIVE, sal_True, sal_False },
+ { 133, 222, FAMILY_DECORATIVE, sal_True, sal_False },
+ { 134, 223, FAMILY_DECORATIVE, sal_True, sal_False },
+ { 135, 78, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 136, 78, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 137, 210, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 138, 211, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 140, 212, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 141, 224, FAMILY_DECORATIVE, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aHP4SFS[] = {
+ { 1, 213, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 177, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 214, FAMILY_SWISS, sal_True, sal_False },
+ { 67, 215, FAMILY_SWISS, sal_True, sal_False },
+ { 68, 216, FAMILY_SWISS, sal_True, sal_False },
+ { 69, 225, FAMILY_SWISS, sal_True, sal_False },
+ { 74, 186, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 204, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 226, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 218, FAMILY_ROMAN, sal_True, sal_False },
+ { 102, 219, FAMILY_ROMAN, sal_True, sal_False },
+ { 103, 206, FAMILY_ROMAN, sal_True, sal_True },
+ { 105, 207, FAMILY_ROMAN, sal_True, sal_False },
+ { 109, 208, FAMILY_ROMAN, sal_True, sal_False },
+ { 130, 209, FAMILY_DECORATIVE, sal_True, sal_False },
+ { 131, 220, FAMILY_DECORATIVE, sal_True, sal_False },
+ { 132, 221, FAMILY_DECORATIVE, sal_True, sal_False },
+ { 133, 222, FAMILY_DECORATIVE, sal_True, sal_False },
+ { 134, 223, FAMILY_DECORATIVE, sal_True, sal_False },
+ { 135, 78, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 137, 210, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 138, 211, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 140, 212, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 141, 224, FAMILY_DECORATIVE, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aHPDJ[] = {
+ { 33, 227, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 228, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aHPDJ500C[] = {
+ { 17, 229, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 230, FAMILY_ROMAN, sal_True, sal_True },
+ { 19, 231, FAMILY_ROMAN, sal_True, sal_True },
+ { 20, 232, FAMILY_ROMAN, sal_True, sal_True },
+ { 21, 233, FAMILY_ROMAN, sal_True, sal_True },
+ { 22, 234, FAMILY_ROMAN, sal_True, sal_True },
+ { 28, 235, FAMILY_ROMAN, sal_True, sal_True },
+ { 32, 236, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 227, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 228, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 237, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 238, FAMILY_ROMAN, sal_True, sal_True },
+ { 39, 239, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 240, FAMILY_ROMAN, sal_True, sal_True },
+ { 44, 241, FAMILY_ROMAN, sal_True, sal_True },
+ { 46, 242, FAMILY_ROMAN, sal_True, sal_True },
+ { 49, 243, FAMILY_ROMAN, sal_True, sal_True },
+ { 51, 244, FAMILY_ROMAN, sal_True, sal_True },
+ { 52, 245, FAMILY_ROMAN, sal_True, sal_True },
+ { 53, 246, FAMILY_ROMAN, sal_True, sal_True },
+ { 54, 247, FAMILY_ROMAN, sal_True, sal_True },
+ { 55, 248, FAMILY_ROMAN, sal_True, sal_True },
+ { 56, 249, FAMILY_ROMAN, sal_True, sal_True },
+ { 57, 250, FAMILY_ROMAN, sal_True, sal_True },
+ { 64, 251, FAMILY_ROMAN, sal_True, sal_True },
+ { 68, 252, FAMILY_SWISS, sal_True, sal_False },
+ { 69, 253, FAMILY_SWISS, sal_True, sal_False },
+ { 70, 254, FAMILY_SWISS, sal_True, sal_False },
+ { 71, 255, FAMILY_SWISS, sal_True, sal_False },
+ { 72, 256, FAMILY_SWISS, sal_True, sal_False },
+ { 77, 257, FAMILY_SWISS, sal_True, sal_False },
+ { 78, 258, FAMILY_SWISS, sal_True, sal_False },
+ { 101, 218, FAMILY_ROMAN, sal_True, sal_False },
+ { 102, 259, FAMILY_ROMAN, sal_True, sal_False },
+ { 103, 260, FAMILY_ROMAN, sal_True, sal_False },
+ { 104, 261, FAMILY_ROMAN, sal_True, sal_False },
+ { 105, 204, FAMILY_ROMAN, sal_True, sal_False },
+ { 107, 262, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aHPDJ550[] = {
+ { 33, 227, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 228, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 240, FAMILY_ROMAN, sal_True, sal_True },
+ { 44, 241, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 177, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 204, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aHPDJCAR[] = {
+ { 17, 229, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 230, FAMILY_ROMAN, sal_True, sal_True },
+ { 19, 231, FAMILY_ROMAN, sal_True, sal_True },
+ { 20, 232, FAMILY_ROMAN, sal_True, sal_True },
+ { 21, 233, FAMILY_ROMAN, sal_True, sal_True },
+ { 22, 234, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 227, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 228, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 237, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 238, FAMILY_ROMAN, sal_True, sal_True },
+ { 39, 239, FAMILY_ROMAN, sal_True, sal_True },
+ { 46, 242, FAMILY_ROMAN, sal_True, sal_True },
+ { 49, 243, FAMILY_ROMAN, sal_True, sal_True },
+ { 51, 244, FAMILY_ROMAN, sal_True, sal_True },
+ { 52, 245, FAMILY_ROMAN, sal_True, sal_True },
+ { 53, 246, FAMILY_ROMAN, sal_True, sal_True },
+ { 54, 247, FAMILY_ROMAN, sal_True, sal_True },
+ { 55, 263, FAMILY_ROMAN, sal_True, sal_True },
+ { 56, 249, FAMILY_ROMAN, sal_True, sal_True },
+ { 57, 250, FAMILY_ROMAN, sal_True, sal_True },
+ { 68, 252, FAMILY_SWISS, sal_True, sal_False },
+ { 69, 253, FAMILY_SWISS, sal_True, sal_False },
+ { 70, 254, FAMILY_SWISS, sal_True, sal_False },
+ { 71, 255, FAMILY_SWISS, sal_True, sal_False },
+ { 72, 256, FAMILY_SWISS, sal_True, sal_False },
+ { 102, 259, FAMILY_ROMAN, sal_True, sal_False },
+ { 107, 262, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aHPDJSF[] = {
+ { 33, 227, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 228, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 264, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 265, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aHPIII[] = {
+ { 1, 213, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 112, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 177, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 214, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 204, FAMILY_ROMAN, sal_True, sal_False },
+ { 135, 78, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 140, 212, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aHPIIISFS[] = {
+ { 1, 213, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 112, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 177, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 178, FAMILY_SWISS, sal_True, sal_False },
+ { 67, 179, FAMILY_SWISS, sal_True, sal_False },
+ { 68, 180, FAMILY_SWISS, sal_True, sal_False },
+ { 69, 225, FAMILY_SWISS, sal_True, sal_False },
+ { 70, 182, FAMILY_SWISS, sal_True, sal_False },
+ { 71, 183, FAMILY_SWISS, sal_True, sal_False },
+ { 72, 184, FAMILY_SWISS, sal_True, sal_False },
+ { 73, 185, FAMILY_SWISS, sal_True, sal_False },
+ { 74, 186, FAMILY_SWISS, sal_True, sal_False },
+ { 75, 187, FAMILY_SWISS, sal_True, sal_False },
+ { 76, 188, FAMILY_SWISS, sal_True, sal_False },
+ { 77, 189, FAMILY_SWISS, sal_True, sal_False },
+ { 78, 190, FAMILY_SWISS, sal_True, sal_False },
+ { 79, 150, FAMILY_SWISS, sal_True, sal_False },
+ { 80, 191, FAMILY_SWISS, sal_True, sal_False },
+ { 81, 192, FAMILY_SWISS, sal_True, sal_False },
+ { 82, 193, FAMILY_SWISS, sal_True, sal_False },
+ { 83, 194, FAMILY_SWISS, sal_True, sal_False },
+ { 85, 196, FAMILY_SWISS, sal_True, sal_False },
+ { 86, 197, FAMILY_SWISS, sal_True, sal_False },
+ { 87, 198, FAMILY_SWISS, sal_True, sal_False },
+ { 88, 199, FAMILY_SWISS, sal_True, sal_False },
+ { 89, 200, FAMILY_SWISS, sal_True, sal_False },
+ { 90, 201, FAMILY_SWISS, sal_True, sal_False },
+ { 91, 202, FAMILY_SWISS, sal_True, sal_False },
+ { 92, 203, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 204, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 226, FAMILY_ROMAN, sal_True, sal_False },
+ { 103, 206, FAMILY_ROMAN, sal_True, sal_False },
+ { 105, 207, FAMILY_ROMAN, sal_True, sal_False },
+ { 109, 208, FAMILY_ROMAN, sal_True, sal_False },
+ { 130, 209, FAMILY_DECORATIVE, sal_True, sal_False },
+ { 135, 78, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 136, 78, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 137, 210, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 138, 211, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 140, 212, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aHPIIP[] = {
+ { 1, 213, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 3, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 112, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 4, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 82, FAMILY_ROMAN, sal_True, sal_True },
+ { 44, 113, FAMILY_ROMAN, sal_True, sal_True },
+ { 45, 113, FAMILY_ROMAN, sal_True, sal_True },
+ { 46, 113, FAMILY_ROMAN, sal_True, sal_True },
+ { 53, 83, FAMILY_ROMAN, sal_True, sal_True },
+ { 54, 83, FAMILY_ROMAN, sal_True, sal_True },
+ { 55, 83, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 85, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 85, FAMILY_SWISS, sal_True, sal_False },
+ { 67, 85, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aHPQJ[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aHPXL300[] = {
+ { 1, 213, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 112, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 177, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 214, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 204, FAMILY_ROMAN, sal_True, sal_False },
+ { 135, 78, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 140, 212, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aHP_ADAF[] = {
+ { 1, 213, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 3, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 112, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 4, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 266, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 267, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aIBM_PPDS[] = {
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 85, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 268, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aIBM4019I[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 269, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aIBM4072[] = {
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 46, 23, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 126, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 25, FAMILY_ROMAN, sal_True, sal_False },
+ { 107, 24, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aIBM5202[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 70, 130, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aIBM6750[] = {
+ { 1, 270, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aIBMGR[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 271, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aIBMPRO[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 96, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aIBMPRO24[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 96, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 105, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 272, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aJUKI6500[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 15, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 17, 7, FAMILY_ROMAN, sal_True, sal_True },
+ { 19, 8, FAMILY_ROMAN, sal_True, sal_True },
+ { 21, 9, FAMILY_ROMAN, sal_True, sal_True },
+ { 23, 10, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 11, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 39, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 41, 14, FAMILY_ROMAN, sal_True, sal_True },
+ { 47, 15, FAMILY_ROMAN, sal_True, sal_True },
+ { 49, 16, FAMILY_ROMAN, sal_True, sal_True },
+ { 70, 17, FAMILY_SWISS, sal_True, sal_False },
+ { 76, 18, FAMILY_SWISS, sal_True, sal_False },
+ { 77, 19, FAMILY_SWISS, sal_True, sal_False },
+ { 98, 20, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 21, FAMILY_ROMAN, sal_True, sal_False },
+ { 101, 22, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aKONICA[] = {
+ { 1, 213, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 3, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 112, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 4, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 273, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 274, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aKYOCERA[] = {
+ { 1, 275, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 82, FAMILY_ROMAN, sal_True, sal_True },
+ { 53, 83, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 85, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aKYOF1010[] = {
+ { 1, 275, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 82, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 83, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 85, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aLBP8II[] = {
+ { 33, 276, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 110, 153, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aLBP8III[] = {
+ { 33, 277, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 278, FAMILY_SWISS, sal_True, sal_False },
+ { 69, 279, FAMILY_SWISS, sal_True, sal_False },
+ { 74, 280, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 153, FAMILY_ROMAN, sal_True, sal_False },
+ { 103, 281, FAMILY_ROMAN, sal_True, sal_False },
+ { 105, 282, FAMILY_ROMAN, sal_True, sal_False },
+ { 109, 283, FAMILY_ROMAN, sal_True, sal_False },
+ { 130, 284, FAMILY_DECORATIVE, sal_True, sal_False },
+ { 140, 212, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aLC_20[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 285, FAMILY_ROMAN, sal_True, sal_True },
+ { 13, 286, FAMILY_ROMAN, sal_True, sal_True },
+ { 14, 287, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 288, FAMILY_ROMAN, sal_True, sal_True },
+ { 66, 289, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 290, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aLC_200[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 291, FAMILY_ROMAN, sal_True, sal_True },
+ { 13, 93, FAMILY_ROMAN, sal_True, sal_True },
+ { 14, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 104, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 139, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 292, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 293, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aLC24_200[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 4, 294, FAMILY_ROMAN, sal_True, sal_True },
+ { 6, 295, FAMILY_ROMAN, sal_True, sal_True },
+ { 8, 296, FAMILY_ROMAN, sal_True, sal_True },
+ { 10, 297, FAMILY_ROMAN, sal_True, sal_True },
+ { 12, 298, FAMILY_ROMAN, sal_True, sal_True },
+ { 14, 299, FAMILY_ROMAN, sal_True, sal_True },
+ { 16, 300, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 301, FAMILY_ROMAN, sal_True, sal_True },
+ { 26, 302, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 303, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 304, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 305, FAMILY_ROMAN, sal_True, sal_True },
+ { 44, 306, FAMILY_ROMAN, sal_True, sal_True },
+ { 48, 307, FAMILY_ROMAN, sal_True, sal_True },
+ { 62, 308, FAMILY_ROMAN, sal_True, sal_True },
+ { 64, 309, FAMILY_ROMAN, sal_True, sal_True },
+ { 66, 310, FAMILY_SWISS, sal_True, sal_False },
+ { 68, 311, FAMILY_SWISS, sal_True, sal_False },
+ { 69, 312, FAMILY_SWISS, sal_True, sal_False },
+ { 71, 313, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 314, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 315, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 316, FAMILY_ROMAN, sal_True, sal_False },
+ { 102, 317, FAMILY_ROMAN, sal_True, sal_False },
+ { 104, 318, FAMILY_ROMAN, sal_True, sal_False },
+ { 112, 319, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aLC866[] = {
+ { 1, 213, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 3, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 112, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 4, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aLC866SF[] = {
+ { 1, 213, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 3, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 112, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 4, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 266, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 267, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aLT20[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 320, FAMILY_ROMAN, sal_True, sal_True },
+ { 10, 93, FAMILY_ROMAN, sal_True, sal_True },
+ { 16, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 7, FAMILY_ROMAN, sal_True, sal_True },
+ { 26, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 36, 321, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 150, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 61, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 322, FAMILY_SWISS, sal_True, sal_False },
+ { 69, 323, FAMILY_SWISS, sal_True, sal_False },
+ { 77, 36, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 324, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 155, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aMA_MT81[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aMA_MT91[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 325, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 269, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aMP1300[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 271, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 11, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 326, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aMT222[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 36, 327, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 328, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 329, FAMILY_ROMAN, sal_True, sal_True },
+ { 44, 330, FAMILY_ROMAN, sal_True, sal_True },
+ { 46, 331, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aMT910[] = {
+ { 1, 3, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 112, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 82, FAMILY_ROMAN, sal_True, sal_True },
+ { 44, 113, FAMILY_ROMAN, sal_True, sal_True },
+ { 45, 113, FAMILY_ROMAN, sal_True, sal_True },
+ { 46, 113, FAMILY_ROMAN, sal_True, sal_True },
+ { 53, 83, FAMILY_ROMAN, sal_True, sal_True },
+ { 54, 83, FAMILY_ROMAN, sal_True, sal_True },
+ { 55, 83, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 85, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 85, FAMILY_SWISS, sal_True, sal_False },
+ { 67, 85, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aNECP2030[] = {
+ { 1, 332, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 333, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 334, FAMILY_ROMAN, sal_True, sal_True },
+ { 68, 335, FAMILY_SWISS, sal_True, sal_False },
+ { 70, 336, FAMILY_SWISS, sal_True, sal_False },
+ { 103, 337, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aNECP2200[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 16, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 52, 338, FAMILY_ROMAN, sal_True, sal_True },
+ { 53, 339, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 340, FAMILY_ROMAN, sal_True, sal_False },
+ { 128, 341, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aNECP23[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 342, FAMILY_ROMAN, sal_True, sal_True },
+ { 7, 343, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 344, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 345, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 51, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 346, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aNECP2P[] = {
+ { 1, 347, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 348, FAMILY_ROMAN, sal_True, sal_True },
+ { 5, 349, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 350, FAMILY_ROMAN, sal_True, sal_True },
+ { 51, 351, FAMILY_ROMAN, sal_True, sal_True },
+ { 68, 335, FAMILY_SWISS, sal_True, sal_False },
+ { 70, 336, FAMILY_SWISS, sal_True, sal_False },
+ { 103, 337, FAMILY_ROMAN, sal_True, sal_False },
+ { 133, 352, FAMILY_DECORATIVE, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aNECP567[] = {
+ { 1, 353, FAMILY_ROMAN, sal_True, sal_True },
+ { 7, 354, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 104, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 355, FAMILY_SWISS, sal_True, sal_False },
+ { 128, 356, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aNECP6070[] = {
+ { 1, 332, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 333, FAMILY_ROMAN, sal_True, sal_True },
+ { 16, 357, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 358, FAMILY_ROMAN, sal_True, sal_True },
+ { 20, 359, FAMILY_ROMAN, sal_True, sal_True },
+ { 22, 360, FAMILY_ROMAN, sal_True, sal_True },
+ { 24, 361, FAMILY_ROMAN, sal_True, sal_True },
+ { 28, 362, FAMILY_ROMAN, sal_True, sal_True },
+ { 32, 363, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 334, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 364, FAMILY_ROMAN, sal_True, sal_True },
+ { 39, 365, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 366, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 367, FAMILY_ROMAN, sal_True, sal_True },
+ { 51, 368, FAMILY_ROMAN, sal_True, sal_True },
+ { 62, 369, FAMILY_ROMAN, sal_True, sal_True },
+ { 64, 370, FAMILY_ROMAN, sal_True, sal_True },
+ { 68, 335, FAMILY_SWISS, sal_True, sal_False },
+ { 69, 371, FAMILY_SWISS, sal_True, sal_False },
+ { 70, 372, FAMILY_SWISS, sal_True, sal_False },
+ { 71, 336, FAMILY_SWISS, sal_True, sal_False },
+ { 72, 373, FAMILY_SWISS, sal_True, sal_False },
+ { 103, 337, FAMILY_ROMAN, sal_True, sal_False },
+ { 104, 374, FAMILY_ROMAN, sal_True, sal_False },
+ { 105, 375, FAMILY_ROMAN, sal_True, sal_False },
+ { 108, 376, FAMILY_ROMAN, sal_True, sal_False },
+ { 109, 377, FAMILY_ROMAN, sal_True, sal_False },
+ { 110, 378, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aNECP6272[] = {
+ { 1, 332, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 333, FAMILY_ROMAN, sal_True, sal_True },
+ { 16, 357, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 358, FAMILY_ROMAN, sal_True, sal_True },
+ { 20, 359, FAMILY_ROMAN, sal_True, sal_True },
+ { 22, 360, FAMILY_ROMAN, sal_True, sal_True },
+ { 24, 361, FAMILY_ROMAN, sal_True, sal_True },
+ { 28, 362, FAMILY_ROMAN, sal_True, sal_True },
+ { 32, 363, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 334, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 364, FAMILY_ROMAN, sal_True, sal_True },
+ { 39, 365, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 366, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 367, FAMILY_ROMAN, sal_True, sal_True },
+ { 51, 368, FAMILY_ROMAN, sal_True, sal_True },
+ { 62, 369, FAMILY_ROMAN, sal_True, sal_True },
+ { 64, 370, FAMILY_ROMAN, sal_True, sal_True },
+ { 68, 379, FAMILY_SWISS, sal_True, sal_False },
+ { 69, 371, FAMILY_SWISS, sal_True, sal_False },
+ { 70, 372, FAMILY_SWISS, sal_True, sal_False },
+ { 71, 336, FAMILY_SWISS, sal_True, sal_False },
+ { 72, 373, FAMILY_SWISS, sal_True, sal_False },
+ { 96, 380, FAMILY_SWISS, sal_True, sal_False },
+ { 103, 337, FAMILY_ROMAN, sal_True, sal_False },
+ { 104, 374, FAMILY_ROMAN, sal_True, sal_False },
+ { 105, 375, FAMILY_ROMAN, sal_True, sal_False },
+ { 108, 376, FAMILY_ROMAN, sal_True, sal_False },
+ { 109, 377, FAMILY_ROMAN, sal_True, sal_False },
+ { 110, 378, FAMILY_ROMAN, sal_True, sal_False },
+ { 111, 381, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aNECPLUS[] = {
+ { 1, 347, FAMILY_ROMAN, sal_True, sal_True },
+ { 16, 357, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 358, FAMILY_ROMAN, sal_True, sal_True },
+ { 20, 359, FAMILY_ROMAN, sal_True, sal_True },
+ { 22, 360, FAMILY_ROMAN, sal_True, sal_True },
+ { 28, 362, FAMILY_ROMAN, sal_True, sal_True },
+ { 32, 363, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 350, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 364, FAMILY_ROMAN, sal_True, sal_True },
+ { 39, 365, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 366, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 367, FAMILY_ROMAN, sal_True, sal_True },
+ { 51, 351, FAMILY_ROMAN, sal_True, sal_True },
+ { 62, 369, FAMILY_ROMAN, sal_True, sal_True },
+ { 64, 370, FAMILY_ROMAN, sal_True, sal_True },
+ { 68, 382, FAMILY_SWISS, sal_True, sal_False },
+ { 69, 371, FAMILY_SWISS, sal_True, sal_False },
+ { 70, 372, FAMILY_SWISS, sal_True, sal_False },
+ { 72, 373, FAMILY_SWISS, sal_True, sal_False },
+ { 103, 383, FAMILY_ROMAN, sal_True, sal_False },
+ { 104, 374, FAMILY_ROMAN, sal_True, sal_False },
+ { 105, 375, FAMILY_ROMAN, sal_True, sal_False },
+ { 108, 376, FAMILY_ROMAN, sal_True, sal_False },
+ { 109, 377, FAMILY_ROMAN, sal_True, sal_False },
+ { 110, 378, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aNECS60[] = {
+ { 2, 275, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOKI192[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 107, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOKI192OR[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 384, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOKI193[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 107, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOKI292F[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 139, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOKI293F[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 139, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOKI320[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 385, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 139, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 107, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOKI380E[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 8, 386, FAMILY_ROMAN, sal_True, sal_True },
+ { 14, 93, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 387, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 388, FAMILY_ROMAN, sal_True, sal_True },
+ { 44, 389, FAMILY_ROMAN, sal_True, sal_True },
+ { 68, 390, FAMILY_SWISS, sal_True, sal_False },
+ { 71, 323, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOKI390E[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 104, FAMILY_ROMAN, sal_True, sal_True },
+ { 55, 391, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 392, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOKI390EL[] = {
+ { 1, 393, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 394, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 395, FAMILY_ROMAN, sal_True, sal_True },
+ { 4, 396, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 104, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 397, FAMILY_ROMAN, sal_True, sal_True },
+ { 36, 398, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 382, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 17, FAMILY_SWISS, sal_True, sal_False },
+ { 67, 399, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 101, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 20, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 29, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOKI393EL[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 5, 400, FAMILY_ROMAN, sal_True, sal_True },
+ { 8, 401, FAMILY_ROMAN, sal_True, sal_True },
+ { 16, 402, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 403, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 288, FAMILY_ROMAN, sal_True, sal_True },
+ { 36, 404, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 405, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 406, FAMILY_ROMAN, sal_True, sal_True },
+ { 68, 407, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 408, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 409, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 410, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 411, FAMILY_ROMAN, sal_True, sal_False },
+ { 128, 412, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOKI393F[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 5, 413, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 104, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 414, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 392, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOKI400[] = {
+ { 1, 213, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 112, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 273, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 415, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 416, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOKI800[] = {
+ { 1, 213, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 112, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 273, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOKILL6[] = {
+ { 1, 417, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 112, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 23, FAMILY_ROMAN, sal_True, sal_True },
+ { 53, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 54, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 418, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 419, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOKILL6R8[] = {
+ { 1, 420, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 4, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 23, FAMILY_ROMAN, sal_True, sal_True },
+ { 53, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 54, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 418, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 87, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 419, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOLI324L[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 421, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 150, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 422, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOLIDM109[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 96, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOLIJP350[] = {
+ { 33, 227, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 228, FAMILY_ROMAN, sal_True, sal_True },
+ { 45, 423, FAMILY_ROMAN, sal_True, sal_True },
+ { 46, 424, FAMILY_ROMAN, sal_True, sal_True },
+ { 47, 425, FAMILY_ROMAN, sal_True, sal_True },
+ { 48, 426, FAMILY_ROMAN, sal_True, sal_True },
+ { 102, 427, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aOLIPG306[] = {
+ { 2, 275, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 36, 428, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 429, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 430, FAMILY_ROMAN, sal_True, sal_True },
+ { 44, 431, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 432, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 433, FAMILY_SWISS, sal_True, sal_False },
+ { 67, 434, FAMILY_SWISS, sal_True, sal_False },
+ { 68, 435, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 102, 436, FAMILY_ROMAN, sal_True, sal_False },
+ { 103, 437, FAMILY_ROMAN, sal_True, sal_False },
+ { 104, 438, FAMILY_ROMAN, sal_True, sal_False },
+ { 105, 439, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPAINT[] = {
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 61, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPAN4450I[] = {
+ { 1, 213, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 112, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 440, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPANA1080[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 106, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 126, FAMILY_SWISS, sal_True, sal_False },
+ { 67, 340, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPANA1081[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 441, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPANA1090[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 11, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPANA1091[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 11, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPANA1092[] = {
+ { 1, 5, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 11, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 442, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 443, FAMILY_SWISS, sal_True, sal_False },
+ { 67, 444, FAMILY_SWISS, sal_True, sal_False },
+ { 132, 444, FAMILY_DECORATIVE, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPANA1124[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 4, 30, FAMILY_ROMAN, sal_True, sal_True },
+ { 14, 93, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 36, 32, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 66, 35, FAMILY_SWISS, sal_True, sal_False },
+ { 70, 336, FAMILY_SWISS, sal_True, sal_False },
+ { 71, 323, FAMILY_SWISS, sal_True, sal_False },
+ { 77, 36, FAMILY_SWISS, sal_True, sal_False },
+ { 98, 38, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 25, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPANA1180[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 4, 30, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 66, 35, FAMILY_SWISS, sal_True, sal_False },
+ { 70, 336, FAMILY_SWISS, sal_True, sal_False },
+ { 99, 25, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPANA1540[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 445, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 288, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 129, 446, FAMILY_DECORATIVE, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPANA1592[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 126, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 441, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPANA1595[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 11, 447, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 126, FAMILY_SWISS, sal_True, sal_False },
+ { 70, 448, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 441, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPR241[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 15, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 17, 449, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 105, FAMILY_ROMAN, sal_True, sal_True },
+ { 41, 14, FAMILY_ROMAN, sal_True, sal_True },
+ { 57, 450, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 101, FAMILY_ROMAN, sal_True, sal_False },
+ { 101, 451, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPR5200[] = {
+ { 1, 95, FAMILY_ROMAN, sal_True, sal_True },
+ { 70, 452, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPRODOT24[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 453, FAMILY_ROMAN, sal_True, sal_True },
+ { 5, 454, FAMILY_ROMAN, sal_True, sal_True },
+ { 7, 85, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 455, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 110, FAMILY_ROMAN, sal_True, sal_True },
+ { 68, 379, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 456, FAMILY_ROMAN, sal_True, sal_False },
+ { 102, 111, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPRODOT9[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 453, FAMILY_ROMAN, sal_True, sal_True },
+ { 7, 457, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 458, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 459, FAMILY_ROMAN, sal_True, sal_True },
+ { 68, 460, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 461, FAMILY_ROMAN, sal_True, sal_False },
+ { 102, 462, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPS[] = {
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 85, FAMILY_SWISS, sal_True, sal_True },
+ { 69, 463, FAMILY_SWISS, sal_True, sal_True },
+ { 74, 464, FAMILY_SWISS, sal_True, sal_True },
+ { 97, 465, FAMILY_ROMAN, sal_True, sal_True },
+ { 103, 466, FAMILY_ROMAN, sal_True, sal_True },
+ { 105, 467, FAMILY_ROMAN, sal_True, sal_True },
+ { 109, 468, FAMILY_ROMAN, sal_True, sal_True },
+ { 130, 469, FAMILY_DECORATIVE, sal_True, sal_True },
+ { 135, 78, FAMILY_DONTKNOW, sal_False, sal_True },
+ { 140, 212, FAMILY_DONTKNOW, sal_False, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aPT90[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 470, FAMILY_ROMAN, sal_True, sal_True },
+ { 4, 471, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 472, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 473, FAMILY_ROMAN, sal_True, sal_True },
+ { 61, 474, FAMILY_ROMAN, sal_True, sal_True },
+ { 62, 475, FAMILY_ROMAN, sal_True, sal_True },
+ { 76, 476, FAMILY_SWISS, sal_True, sal_False },
+ { 77, 477, FAMILY_SWISS, sal_True, sal_False },
+ { 78, 478, FAMILY_SWISS, sal_True, sal_False },
+ { 79, 479, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aRASTER[] = {
+ { 34, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 177, FAMILY_SWISS, sal_True, sal_True },
+ { 66, 178, FAMILY_SWISS, sal_True, sal_True },
+ { 67, 179, FAMILY_SWISS, sal_True, sal_True },
+ { 68, 180, FAMILY_SWISS, sal_True, sal_True },
+ { 69, 181, FAMILY_SWISS, sal_True, sal_True },
+ { 70, 182, FAMILY_SWISS, sal_True, sal_True },
+ { 71, 183, FAMILY_SWISS, sal_True, sal_True },
+ { 72, 184, FAMILY_SWISS, sal_True, sal_True },
+ { 73, 185, FAMILY_SWISS, sal_True, sal_True },
+ { 74, 186, FAMILY_SWISS, sal_True, sal_True },
+ { 75, 187, FAMILY_SWISS, sal_True, sal_True },
+ { 76, 188, FAMILY_SWISS, sal_True, sal_True },
+ { 77, 189, FAMILY_SWISS, sal_True, sal_True },
+ { 78, 190, FAMILY_SWISS, sal_True, sal_True },
+ { 79, 150, FAMILY_SWISS, sal_True, sal_True },
+ { 80, 191, FAMILY_SWISS, sal_True, sal_True },
+ { 81, 192, FAMILY_SWISS, sal_True, sal_True },
+ { 82, 193, FAMILY_SWISS, sal_True, sal_True },
+ { 83, 194, FAMILY_SWISS, sal_True, sal_True },
+ { 84, 195, FAMILY_SWISS, sal_True, sal_True },
+ { 85, 196, FAMILY_SWISS, sal_True, sal_True },
+ { 86, 197, FAMILY_SWISS, sal_True, sal_True },
+ { 87, 198, FAMILY_SWISS, sal_True, sal_True },
+ { 88, 199, FAMILY_SWISS, sal_True, sal_True },
+ { 89, 200, FAMILY_SWISS, sal_True, sal_True },
+ { 90, 201, FAMILY_SWISS, sal_True, sal_True },
+ { 91, 202, FAMILY_SWISS, sal_True, sal_True },
+ { 92, 203, FAMILY_SWISS, sal_True, sal_True },
+ { 97, 204, FAMILY_ROMAN, sal_True, sal_True },
+ { 98, 205, FAMILY_ROMAN, sal_True, sal_True },
+ { 103, 206, FAMILY_ROMAN, sal_True, sal_True },
+ { 105, 207, FAMILY_ROMAN, sal_True, sal_True },
+ { 109, 208, FAMILY_ROMAN, sal_True, sal_True },
+ { 130, 209, FAMILY_DECORATIVE, sal_True, sal_True },
+ { 135, 78, FAMILY_DONTKNOW, sal_False, sal_True },
+ { 136, 78, FAMILY_DONTKNOW, sal_False, sal_True },
+ { 137, 210, FAMILY_DONTKNOW, sal_False, sal_True },
+ { 138, 211, FAMILY_DONTKNOW, sal_False, sal_True },
+ { 140, 212, FAMILY_DONTKNOW, sal_False, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSD15[] = {
+ { 1, 95, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSD24[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 107, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSEIKO[] = {
+ { 1, 213, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 112, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 480, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 321, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSIHP4100[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 104, FAMILY_ROMAN, sal_True, sal_True },
+ { 55, 391, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 392, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSIHP4200[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 104, FAMILY_ROMAN, sal_True, sal_True },
+ { 55, 391, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 392, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSIHP4400[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 5, 413, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 104, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 414, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 392, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSIHP440F[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 5, 413, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 104, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 414, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 392, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSIPT18[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 139, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSIPT18F[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 139, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSIPT19[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 139, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSL230AI[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 4, 481, FAMILY_ROMAN, sal_True, sal_True },
+ { 14, 93, FAMILY_ROMAN, sal_True, sal_True },
+ { 16, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 7, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 321, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 46, 23, FAMILY_ROMAN, sal_True, sal_True },
+ { 66, 482, FAMILY_SWISS, sal_True, sal_False },
+ { 71, 323, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 38, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 25, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 36, FAMILY_ROMAN, sal_True, sal_False },
+ { 103, 24, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSL80AI[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 398, FAMILY_ROMAN, sal_True, sal_True },
+ { 98, 20, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSL80IP[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 398, FAMILY_ROMAN, sal_True, sal_True },
+ { 98, 20, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSL92[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 8, 481, FAMILY_ROMAN, sal_True, sal_True },
+ { 14, 93, FAMILY_ROMAN, sal_True, sal_True },
+ { 16, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 7, FAMILY_ROMAN, sal_True, sal_True },
+ { 26, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 36, 321, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 46, 483, FAMILY_ROMAN, sal_True, sal_True },
+ { 68, 482, FAMILY_SWISS, sal_True, sal_False },
+ { 71, 323, FAMILY_SWISS, sal_True, sal_False },
+ { 77, 36, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 324, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 25, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSP1600AI[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSP264[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 36, 327, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 328, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 329, FAMILY_ROMAN, sal_True, sal_True },
+ { 44, 330, FAMILY_ROMAN, sal_True, sal_True },
+ { 46, 331, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSTARFR10[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 30, FAMILY_ROMAN, sal_True, sal_True },
+ { 14, 93, FAMILY_ROMAN, sal_True, sal_True },
+ { 16, 6, FAMILY_ROMAN, sal_True, sal_True },
+ { 26, 13, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 61, FAMILY_ROMAN, sal_True, sal_True },
+ { 48, 484, FAMILY_ROMAN, sal_True, sal_True },
+ { 62, 308, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 126, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 485, FAMILY_SWISS, sal_True, sal_False },
+ { 71, 323, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 103, FAMILY_ROMAN, sal_True, sal_False },
+ { 104, 486, FAMILY_ROMAN, sal_True, sal_False },
+ { 111, 487, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSTARLC[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 291, FAMILY_ROMAN, sal_True, sal_True },
+ { 13, 488, FAMILY_ROMAN, sal_True, sal_True },
+ { 14, 489, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 104, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 139, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 292, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 293, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSTARLC24[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 14, 490, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 104, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 397, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 491, FAMILY_ROMAN, sal_True, sal_True },
+ { 64, 492, FAMILY_ROMAN, sal_True, sal_True },
+ { 71, 493, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 101, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 29, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 21, FAMILY_ROMAN, sal_True, sal_False },
+ { 112, 494, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSTARLP8[] = {
+ { 1, 213, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 3, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 112, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 4, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 495, FAMILY_ROMAN, sal_True, sal_True },
+ { 36, 82, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 39, 4, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 496, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 274, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 497, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSTARNB[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 441, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSTARNL_I[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 115, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 498, FAMILY_SWISS, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSTARSJ48[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 499, FAMILY_ROMAN, sal_True, sal_True },
+ { 44, 500, FAMILY_ROMAN, sal_True, sal_True },
+ { 50, 501, FAMILY_ROMAN, sal_True, sal_True },
+ { 102, 502, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSTARXB24[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 499, FAMILY_ROMAN, sal_True, sal_True },
+ { 8, 296, FAMILY_ROMAN, sal_True, sal_True },
+ { 14, 503, FAMILY_ROMAN, sal_True, sal_True },
+ { 16, 300, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 301, FAMILY_ROMAN, sal_True, sal_True },
+ { 26, 302, FAMILY_ROMAN, sal_True, sal_True },
+ { 32, 504, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 303, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 505, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 304, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 305, FAMILY_ROMAN, sal_True, sal_True },
+ { 44, 306, FAMILY_ROMAN, sal_True, sal_True },
+ { 46, 506, FAMILY_ROMAN, sal_True, sal_True },
+ { 48, 507, FAMILY_ROMAN, sal_True, sal_True },
+ { 50, 508, FAMILY_ROMAN, sal_True, sal_True },
+ { 58, 509, FAMILY_ROMAN, sal_True, sal_True },
+ { 60, 510, FAMILY_ROMAN, sal_True, sal_True },
+ { 62, 511, FAMILY_ROMAN, sal_True, sal_True },
+ { 64, 309, FAMILY_ROMAN, sal_True, sal_True },
+ { 68, 512, FAMILY_SWISS, sal_True, sal_False },
+ { 71, 513, FAMILY_SWISS, sal_True, sal_False },
+ { 80, 514, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 515, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 516, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 517, FAMILY_ROMAN, sal_True, sal_False },
+ { 102, 518, FAMILY_ROMAN, sal_True, sal_False },
+ { 103, 519, FAMILY_ROMAN, sal_True, sal_False },
+ { 104, 520, FAMILY_ROMAN, sal_True, sal_False },
+ { 105, 521, FAMILY_ROMAN, sal_True, sal_False },
+ { 111, 522, FAMILY_ROMAN, sal_True, sal_False },
+ { 112, 523, FAMILY_ROMAN, sal_True, sal_False },
+ { 129, 524, FAMILY_DECORATIVE, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSTLC2420[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 499, FAMILY_ROMAN, sal_True, sal_True },
+ { 14, 503, FAMILY_ROMAN, sal_True, sal_True },
+ { 16, 300, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 301, FAMILY_ROMAN, sal_True, sal_True },
+ { 26, 302, FAMILY_ROMAN, sal_True, sal_True },
+ { 27, 525, FAMILY_ROMAN, sal_True, sal_True },
+ { 32, 526, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 303, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 304, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 305, FAMILY_ROMAN, sal_True, sal_True },
+ { 44, 500, FAMILY_ROMAN, sal_True, sal_True },
+ { 46, 527, FAMILY_ROMAN, sal_True, sal_True },
+ { 48, 507, FAMILY_ROMAN, sal_True, sal_True },
+ { 49, 508, FAMILY_ROMAN, sal_True, sal_True },
+ { 50, 528, FAMILY_ROMAN, sal_True, sal_True },
+ { 60, 529, FAMILY_ROMAN, sal_True, sal_True },
+ { 62, 511, FAMILY_ROMAN, sal_True, sal_True },
+ { 64, 309, FAMILY_ROMAN, sal_True, sal_True },
+ { 68, 530, FAMILY_SWISS, sal_True, sal_False },
+ { 71, 513, FAMILY_SWISS, sal_True, sal_False },
+ { 80, 531, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 515, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 532, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 517, FAMILY_ROMAN, sal_True, sal_False },
+ { 102, 502, FAMILY_ROMAN, sal_True, sal_False },
+ { 103, 533, FAMILY_ROMAN, sal_True, sal_False },
+ { 104, 520, FAMILY_ROMAN, sal_True, sal_False },
+ { 105, 521, FAMILY_ROMAN, sal_True, sal_False },
+ { 106, 534, FAMILY_ROMAN, sal_True, sal_False },
+ { 111, 522, FAMILY_ROMAN, sal_True, sal_False },
+ { 112, 523, FAMILY_ROMAN, sal_True, sal_False },
+ { 129, 524, FAMILY_DECORATIVE, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSTXB2420[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 4, 529, FAMILY_ROMAN, sal_True, sal_True },
+ { 6, 504, FAMILY_ROMAN, sal_True, sal_True },
+ { 8, 296, FAMILY_ROMAN, sal_True, sal_True },
+ { 10, 297, FAMILY_ROMAN, sal_True, sal_True },
+ { 12, 298, FAMILY_ROMAN, sal_True, sal_True },
+ { 14, 299, FAMILY_ROMAN, sal_True, sal_True },
+ { 16, 300, FAMILY_ROMAN, sal_True, sal_True },
+ { 18, 301, FAMILY_ROMAN, sal_True, sal_True },
+ { 26, 302, FAMILY_ROMAN, sal_True, sal_True },
+ { 28, 525, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 303, FAMILY_ROMAN, sal_True, sal_True },
+ { 38, 304, FAMILY_ROMAN, sal_True, sal_True },
+ { 40, 305, FAMILY_ROMAN, sal_True, sal_True },
+ { 44, 535, FAMILY_ROMAN, sal_True, sal_True },
+ { 46, 536, FAMILY_ROMAN, sal_True, sal_True },
+ { 48, 507, FAMILY_ROMAN, sal_True, sal_True },
+ { 50, 508, FAMILY_ROMAN, sal_True, sal_True },
+ { 62, 511, FAMILY_ROMAN, sal_True, sal_True },
+ { 64, 309, FAMILY_ROMAN, sal_True, sal_True },
+ { 66, 537, FAMILY_SWISS, sal_True, sal_False },
+ { 68, 311, FAMILY_SWISS, sal_True, sal_False },
+ { 69, 312, FAMILY_SWISS, sal_True, sal_False },
+ { 71, 313, FAMILY_SWISS, sal_True, sal_False },
+ { 77, 538, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 314, FAMILY_ROMAN, sal_True, sal_False },
+ { 99, 315, FAMILY_ROMAN, sal_True, sal_False },
+ { 100, 316, FAMILY_ROMAN, sal_True, sal_False },
+ { 102, 539, FAMILY_ROMAN, sal_True, sal_False },
+ { 104, 540, FAMILY_ROMAN, sal_True, sal_False },
+ { 112, 319, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aSWIFT24E[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 541, FAMILY_ROMAN, sal_True, sal_True },
+ { 4, 85, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 110, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 12, FAMILY_ROMAN, sal_True, sal_True },
+ { 66, 379, FAMILY_SWISS, sal_True, sal_False },
+ { 98, 111, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aTOSH301[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 83, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 2, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 542, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aTOSH321[] = {
+ { 1, 0, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 543, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 105, FAMILY_ROMAN, sal_True, sal_True },
+ { 43, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 97, 134, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aTOSH351[] = {
+ { 1, 544, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 11, FAMILY_ROMAN, sal_True, sal_True },
+ { 35, 1, FAMILY_ROMAN, sal_True, sal_True },
+ { 37, 105, FAMILY_ROMAN, sal_True, sal_True },
+ { 39, 543, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 134, FAMILY_SWISS, sal_True, sal_False },
+ { 129, 545, FAMILY_DECORATIVE, sal_True, sal_False },
+ { 130, 546, FAMILY_DECORATIVE, sal_True, sal_False },
+ { 131, 547, FAMILY_DECORATIVE, sal_True, sal_False },
+ { 132, 548, FAMILY_DECORATIVE, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aTTY[] = {
+ { 1, 270, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aTTYDEU[] = {
+ { 1, 270, FAMILY_ROMAN, sal_True, sal_True },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ },
+ aTYPENRAD[] = {
+ { 1, 549, FAMILY_ROMAN, sal_True, sal_True },
+ { 2, 550, FAMILY_ROMAN, sal_True, sal_True },
+ { 3, 551, FAMILY_ROMAN, sal_True, sal_True },
+ { 33, 552, FAMILY_ROMAN, sal_True, sal_True },
+ { 34, 553, FAMILY_ROMAN, sal_True, sal_True },
+ { 65, 554, FAMILY_SWISS, sal_True, sal_False },
+ { 66, 555, FAMILY_SWISS, sal_True, sal_False },
+ { 97, 556, FAMILY_ROMAN, sal_True, sal_False },
+ { 98, 557, FAMILY_ROMAN, sal_True, sal_False },
+ { 0, 0, FAMILY_ROMAN, sal_False, sal_False }
+ };
+
+
+static const struct Sw6FontMatch
+{
+ const sal_Char* pPrtName;
+ const Sw6PrinterFont* pFonts;
+} aFntMatch[] = {
+ { "5000DI", a5000DI },
+ { "ACERLP75", aACERLP75 },
+ { "AEG200I", aAEG200I },
+ { "BJ10E", aBJ10E },
+ { "BJ130E", aBJ130E },
+ { "BJ300", aBJ300 },
+ { "BR1109", aBR1109 },
+ { "BR1209", aBR1209 },
+ { "BR1224L", aBR1224L },
+ { "BR1324", aBR1324 },
+ { "BR1409", aBR1409 },
+ { "BR1509", aBR1509 },
+ { "BR1709", aBR1709 },
+ { "BR1724L", aBR1724L },
+ { "BR1824L", aBR1824L },
+ { "BR2024", aBR2024 },
+ { "BR2518", aBR2518 },
+ { "BR3524L", aBR3524L },
+ { "BR4018", aBR4018 },
+ { "BRHJ770", aBRHJ770 },
+ { "BRHL4", aBRHL4 },
+ { "BRHL48V", aBRHL48V },
+ { "BRHL8DB", aBRHL8DB },
+ { "BRHR", aBRHR },
+ { "BROTHER", aBROTHER },
+ { "CANONBJX", aCANONBJX },
+ { "CE500", aCE500 },
+ { "CE700", aCE700 },
+ { "CIE_210E", aCIE_210E },
+ { "CIE_310E", aCIE_310E },
+ { "CIE_610E", aCIE_610E },
+ { "CIE_610P", aCIE_610P },
+ { "CIE_715E", aCIE_715E },
+ { "CIT120D", aCIT120D },
+ { "CIT120DP", aCIT120DP },
+ { "CIT124D", aCIT124D },
+ { "CITOH52", aCITOH52 },
+ { "D-630", aD_630 },
+ { "D-630E", aD_630E },
+ { "D-630HZ", aD_630HZ },
+ { "DICO150", aDICO150 },
+ { "DICO300I", aDICO300I },
+ { "DLP", aDLP },
+ { "DLQ", aDLQ },
+ { "DMP", aDMP },
+ { "EPLQ800", aEPLQ800 },
+ { "EPLX800", aEPLX800 },
+ { "EPSFX", aEPSFX },
+ { "EPSFX100", aEPSFX100 },
+ { "EPSFX80", aEPSFX80 },
+ { "EPSLQ", aEPSLQ },
+ { "EPSRX", aEPSRX },
+ { "ESCP2", aESCP2 },
+ { "FUJIDL24", aFUJIDL24 },
+ { "GABRIELE", aGABRIELE },
+ { "GENICOM", aGENICOM },
+ { "GQ3500SF", aGQ3500SF },
+ { "GQ5000", aGQ5000 },
+ { "GRAPHICS", aGRAPHICS },
+ { "HP4", aHP4 },
+ { "HP4SFS", aHP4SFS },
+ { "HPDJ", aHPDJ },
+ { "HPDJ500C", aHPDJ500C },
+ { "HPDJ550", aHPDJ550 },
+ { "HPDJCAR", aHPDJCAR },
+ { "HPDJSF", aHPDJSF },
+ { "HPIII", aHPIII },
+ { "HPIIISFS", aHPIIISFS },
+ { "HPIIP", aHPIIP },
+ { "HPQJ", aHPQJ },
+ { "HPXL300", aHPXL300 },
+ { "HP_ADAF", aHP_ADAF },
+ { "IBM-PPDS", aIBM_PPDS },
+ { "IBM4019I", aIBM4019I },
+ { "IBM4072", aIBM4072 },
+ { "IBM5202", aIBM5202 },
+ { "IBM6750", aIBM6750 },
+ { "IBMGR", aIBMGR },
+ { "IBMPRO", aIBMPRO },
+ { "IBMPRO24", aIBMPRO24 },
+ { "JUKI6500", aJUKI6500 },
+ { "KONICA", aKONICA },
+ { "KYOCERA", aKYOCERA },
+ { "KYOF1010", aKYOF1010 },
+ { "LBP8II", aLBP8II },
+ { "LBP8III", aLBP8III },
+ { "LC-20", aLC_20 },
+ { "LC-200", aLC_200 },
+ { "LC24-200", aLC24_200 },
+ { "LC866", aLC866 },
+ { "LC866SF", aLC866SF },
+ { "LT20", aLT20 },
+ { "MA-MT81", aMA_MT81 },
+ { "MA-MT91", aMA_MT91 },
+ { "MP1300", aMP1300 },
+ { "MT222", aMT222 },
+ { "MT910", aMT910 },
+ { "NECP2030", aNECP2030 },
+ { "NECP2200", aNECP2200 },
+ { "NECP23", aNECP23 },
+ { "NECP2P", aNECP2P },
+ { "NECP567", aNECP567 },
+ { "NECP6070", aNECP6070 },
+ { "NECP6272", aNECP6272 },
+ { "NECPLUS", aNECPLUS },
+ { "NECS60", aNECS60 },
+ { "OKI192", aOKI192 },
+ { "OKI192OR", aOKI192OR },
+ { "OKI193", aOKI193 },
+ { "OKI292F", aOKI292F },
+ { "OKI293F", aOKI293F },
+ { "OKI320", aOKI320 },
+ { "OKI380E", aOKI380E },
+ { "OKI390E", aOKI390E },
+ { "OKI390EL", aOKI390EL },
+ { "OKI393EL", aOKI393EL },
+ { "OKI393F", aOKI393F },
+ { "OKI400", aOKI400 },
+ { "OKI800", aOKI800 },
+ { "OKILL6", aOKILL6 },
+ { "OKILL6R8", aOKILL6R8 },
+ { "OLI324L", aOLI324L },
+ { "OLIDM109", aOLIDM109 },
+ { "OLIJP350", aOLIJP350 },
+ { "OLIPG306", aOLIPG306 },
+ { "PAINT", aPAINT },
+ { "PAN4450I", aPAN4450I },
+ { "PANA1080", aPANA1080 },
+ { "PANA1081", aPANA1081 },
+ { "PANA1090", aPANA1090 },
+ { "PANA1091", aPANA1091 },
+ { "PANA1092", aPANA1092 },
+ { "PANA1124", aPANA1124 },
+ { "PANA1180", aPANA1180 },
+ { "PANA1540", aPANA1540 },
+ { "PANA1592", aPANA1592 },
+ { "PANA1595", aPANA1595 },
+ { "PR241", aPR241 },
+ { "PR5200", aPR5200 },
+ { "PRODOT24", aPRODOT24 },
+ { "PRODOT9", aPRODOT9 },
+ { "PS", aPS },
+ { "PT90", aPT90 },
+ { "RASTER", aRASTER },
+ { "SD15", aSD15 },
+ { "SD24", aSD24 },
+ { "SEIKO", aSEIKO },
+ { "SIHP4100", aSIHP4100 },
+ { "SIHP4200", aSIHP4200 },
+ { "SIHP4400", aSIHP4400 },
+ { "SIHP440F", aSIHP440F },
+ { "SIPT18", aSIPT18 },
+ { "SIPT18F", aSIPT18F },
+ { "SIPT19", aSIPT19 },
+ { "SL230AI", aSL230AI },
+ { "SL80AI", aSL80AI },
+ { "SL80IP", aSL80IP },
+ { "SL92", aSL92 },
+ { "SP1600AI", aSP1600AI },
+ { "SP264", aSP264 },
+ { "STARFR10", aSTARFR10 },
+ { "STARLC", aSTARLC },
+ { "STARLC24", aSTARLC24 },
+ { "STARLP8", aSTARLP8 },
+ { "STARNB", aSTARNB },
+ { "STARNL-I", aSTARNL_I },
+ { "STARSJ48", aSTARSJ48 },
+ { "STARXB24", aSTARXB24 },
+ { "STLC2420", aSTLC2420 },
+ { "STXB2420", aSTXB2420 },
+ { "SWIFT24E", aSWIFT24E },
+ { "TOSH301", aTOSH301 },
+ { "TOSH321", aTOSH321 },
+ { "TOSH351", aTOSH351 },
+ { "TTY", aTTY },
+ { "TTYDEU", aTTYDEU },
+ { "TYPENRAD", aTYPENRAD },
+ { "", 0 }
+};
+
+
+
+//using namespace ::com::sun::star;
+//using namespace ::com::sun::star::ucb;
+//using namespace ::com::sun::star::uno;
+//using namespace ::ucb;
+//using namespace ::rtl;
+
+// --- Sw6Layout ---
+
+short Sw6Layout::ZchnZahl(sal_Char Ch1,sal_Char Ch2) const
+// Ermittelt die tatsaechliche Zeichenzahl-1 eines kompletten SW6-Zchns
+// Oftmals ist Ch1 ein Steuerzeichen und Ch2 ist dann ein Laengenbyte,
+// so dass die Zeichenzahl erst mit Ch2 zu ermitteln ist. Wenn man wissen
+// will, ob Ch1 ein nachfolgezeichen Ch2 hat, dann mit Ch2==1 aufrufen
+// und auf == 0 abfragen.
+{
+ short nRet;
+
+ switch (Ch1)
+ {
+ case PrSoftSp:
+ case PrPrFix:
+ case PrAttr:
+ case PrSize:
+ case PrUser:
+ case PrFont:
+ nRet=1; // 2 Char/Zchn
+ break;
+ case PrFnote:
+ case PrEnote:
+ nRet=2; // 3 Char/Zchn
+ break;
+ case PrGraf:
+ case PrMerker:
+ case PrKomm:
+ case PrGlied:
+ case PrHidd: // Ch2 ist Laengenbyte
+ nRet=((short)(BYTE)Ch2)+1;
+ break;
+ case PrSForm: // Harte Seitenformatierung nie implementiert
+ switch (Ch2)
+ {
+ case SF_Guel: // Wie Layout gueltig
+ case SF_SpAn: // Anzahl Spalten
+ case SF_KoTx: // Nummer Kopftext
+ case SF_FuTx: // Nummer Fusstext
+ nRet=2;
+ break;
+ case SF_KoAb: // Kopfabstand in Twips
+ case SF_FuAb: // Fussabstand
+ case SF_Lks: // Linker Rand
+ case SF_Rts: // Rechter Rand
+ case SF_Obn: // Oberer Rand
+ case SF_Unt: // Unterer Rand
+ case SF_SpAb: // Spaltenabstand
+ nRet=3;
+ break;
+ default:
+ nRet=1; // Default aus dem Writer
+ break;
+ } // switch
+ break;
+ case PrAForm:
+ switch (Ch2)
+ {
+ case AF_Form: // Formatierart, Aufzaehltyp
+ case AF_SpAn: // Spaltenanzahl im Absatz
+ case AF_SAbs: // Bool, ist dies ein Spaltenabsatz
+ case AF_Auto: // Autom. Zeilenabstand (Durchschuss)
+ case AF_Glied: // War mal fuer Gliederung vorgesehen
+ case AF_Zus: // Absatz zusammenhalten
+ nRet=2;
+ break;
+ case AF_Ein: // Einzug in Twips
+ case AF_Lks: // Linker Rand
+ case AF_Rts: // Rechter Rand
+ case AF_AbAb: // Absatzabstand
+ case AF_SpAb: // Spaltenabstand
+ case AF_ZlAb: // Zeilenabstand
+ nRet=3;
+ break;
+ case AF_Tab: // Harter Tab mit Tabart, Position (alt, SW5)
+ nRet=4;
+ break;
+ case AF_TabN: // Harter Tab plus Fuellzeichen, (neu, SW6)
+ nRet=5;
+ break;
+ default:
+ nRet=1; // Default aus dem Writer
+ break;
+ } // switch
+ break;
+ default:
+ nRet=0; // Default 1 Char/Zchn
+ break;
+ } // switch
+ return nRet;
+}
+
+sal_Char Sw6Layout::UpCaseOEM(sal_Char c) const
+// Upcase fuer OEM-Zeichensatz
+{
+ if (c<'a' || c>'z')
+ {
+ switch (c)
+ {
+ case '\x84':
+ c='\x8E';
+ break;
+ case '\x94':
+ c='\x99';
+ break;
+ case '\x81':
+ c='\x9A';
+ break;
+ } // switch
+ }
+ else c-='\040';
+ return c;
+}
+
+// Sucht eine Buchstabenkennung raus...
+// Uebergabe abgeleiteter Strcts ist leider
+// nicht als Pointer Pointer moeglich.
+// Templates darf ich auch nicht also!
+
+#define SCANLAYOUT() \
+{ \
+ short nIdx=0; \
+ while (nIdx<nAnz) \
+ { \
+ if (UpCaseOEM(rKey[(USHORT)nIdx]->Key.GetChar(0))==UpCaseOEM(c1) && \
+ UpCaseOEM(rKey[(USHORT)nIdx]->Key.GetChar(1))==UpCaseOEM(c2)) \
+ { \
+ rnLay=nIdx; \
+ break; \
+ } \
+ nIdx++; \
+ } \
+}
+
+void Sw6Layout::ScanLayoutB(short &rnLay, BLAY *rKey[],
+ const sal_Char c1,const sal_Char c2,const short nAnz) const
+{
+ SCANLAYOUT();
+}
+
+void Sw6Layout::ScanLayoutA(short &rnLay, ALAY *rKey[],
+ const sal_Char c1,const sal_Char c2,const short nAnz) const
+{
+ SCANLAYOUT();
+}
+
+void Sw6Layout::ScanLayoutS(short &rnLay, SLAY *rKey[],
+ const sal_Char c1,const sal_Char c2,const short nAnz) const
+{
+ SCANLAYOUT();
+}
+
+void Sw6Layout::ScanLayoutKF(short &rnLay, KOFU *rKey[],
+ const sal_Char c1,const sal_Char c2,const short nAnz) const
+{
+ SCANLAYOUT();
+}
+
+void Sw6Layout::MerkeNoten(Bereich eNot)
+// Merkt sich die jeweilige Notenposition
+{
+ if (pLay)
+ {
+ switch (eNot)
+ {
+ case FNot:
+ pLay->FNotenLink=Tell();
+ break;
+ case ENot:
+ pLay->ENotenLink=Tell();
+ break;
+ case ANot:
+ pLay->ANotenLink=Tell();
+ break;
+ }
+ }
+}
+
+void Sw6Layout::SetGpmFile( const String &rGpm )
+// Meldet GPM-Datei fuer Fontuebersetzung an
+{
+ // is the last printer the wanted printer?
+ String sGpm( rGpm );
+ sGpm.SearchAndReplaceAscii( ".GPM", aEmptyStr );
+ if( USHRT_MAX == nLastFontMatch ||
+ !sGpm.EqualsAscii( aFntMatch[ nLastFontMatch ].pPrtName ))
+ {
+ // search the wanted printer
+ for( nLastFontMatch = 0; aFntMatch[ nLastFontMatch ].pFonts;
+ ++nLastFontMatch )
+ if( sGpm.EqualsAscii( aFntMatch[ nLastFontMatch ].pPrtName ))
+ break;
+
+ if( !aFntMatch[ nLastFontMatch ].pFonts )
+ nLastFontMatch = USHRT_MAX;
+ }
+}
+
+void Sw6Layout::SetAlayTrans(void)
+// Uebersetzen OEM->SYSSET je nach Alay ein/aus
+{
+ if (pLay!=NULL && aSta.nAlay<pLay->NumAlay)
+ {
+ SetTrans(pLay->FileAlay[aSta.nAlay]->ABlay==0
+ ?pLay->FileAlay[aSta.nAlay]->bTran // Setze das Uebersetzflag
+ :pLay->FileBlay[pLay->FileAlay[ // OEM->eDfltSet entweder
+ aSta.nAlay]->ABlay-1]->bTran); // aus ALAY oder aus BLAY
+ }
+}
+
+void Sw6Layout::SetFollow(short nVon,short nNach,SwDoc &rDoc)
+// Setzt die Folge-Seitenlayouts
+{
+ if (pLay->FileSlay[nVon]->Follow==nVon)
+ {
+ SwPageDesc &rPg=(SwPageDesc &)rDoc.GetPageDesc(nVon);
+ rPg.SetFollow(&rDoc.GetPageDesc(nNach));
+ rDoc.ChgPageDesc(nVon,rPg);
+ pLay->FileSlay[nVon]->Follow=nNach;
+ }
+}
+
+void Sw6Layout::ResetLay(SwDoc &rDoc)
+// Wird aufgerufen wenn Haupttextbereich gelesen werden soll
+{
+ aSta.nAlay=0; aSta.nBlay=-1; // Status der Layouts bei ReadLn
+ aSta.nKopf=-1; aSta.nFuss=-1; // Dann suche nach Sonder-Alays
+ aSta.nSFst=-1; aSta.nSLft=-1; // der verschiedenen Bereiche
+ aSta.nSRgt=-1; aSta.bSlay=TRUE;
+ aSta.nPage=1;
+
+ short n=-1;
+
+ while (++n<pLay->NumSlay) // Suche nun das erste guel-
+ { // tige Seitenlayout heraus.
+ switch (pLay->FileSlay[n]->Gueltig)
+ {
+ case 1:
+ if (aSta.nSRgt<0) aSta.nSRgt=n;
+ break;
+ case 2:
+ if (aSta.nSLft<0) aSta.nSLft=n;
+ break;
+ case 3:
+ if (aSta.nSFst<0) aSta.nSFst=n;
+ break;
+ default:
+ if (aSta.nSRgt<0) aSta.nSRgt=n;
+ if (aSta.nSLft<0) aSta.nSLft=n;
+ break;
+ } // switch
+ } // while
+ if (aSta.nSRgt<0) aSta.nSRgt=0;
+ if (aSta.nSLft<0) aSta.nSLft=0;
+ if (aSta.nSFst>=0) SetFollow(aSta.nSFst,aSta.nSRgt,rDoc);
+}
+
+void Sw6Layout::PushStat(long nFPos)
+{
+ Sw6File::PushStat(nFPos); // Merke Zustand Sw6File & Seek(Pos)
+ aStk.Push(&aSta,sizeof(aSta)); // Dann merke aSta mit harte Formatinfo
+ aSta.pFrmt=NULL; // Einen neuen Absatz mit pFrm=NULL
+ aSta.nAddo=0;
+}
+
+void Sw6Layout::PopStat(void)
+{
+ DelHForm(); // Harte Formatierinfo weg, dann
+ aStk.Pop(&aSta,sizeof(aSta)); // hole auch den alten Status
+ Sw6File::PopStat(); // Ein Seek(Zurueck) in Sw6File
+}
+
+void Sw6Layout::SetSlay(SwDoc &rDoc,SwPaM &rPaM)
+// Setze am Pam eine neues Seitenlayout
+{
+ if (aSta.bSlay)
+ {
+ if (aSta.nSFst<0)
+ {
+ aSta.nSFst=(aSta.nPage&1?aSta.nSRgt:aSta.nSLft);
+ if (aSta.nSLft!=aSta.nSRgt)
+ {
+ SetFollow(aSta.nSRgt,aSta.nSLft,rDoc);
+ SetFollow(aSta.nSLft,aSta.nSRgt,rDoc);
+ }
+ }
+ rDoc.Insert(rPaM,SwFmtPageDesc(
+ &rDoc.GetPageDesc(aSta.nSFst)));
+ aSta.bSlay=FALSE;
+ aSta.nSFst=-1;
+ }
+}
+
+BOOL Sw6Layout::ScanKreuz(const sal_Char *pPatt,const sal_Char *pOrig,size_t &rIgnr,sal_Char *pPara)
+// Sucht aus rOrig Kreuzbefehl pPatt raus
+// und gibt TRUE zurueck wenn was gefunden,
+// Ignr gibt an, wieviele Zeichen #-Befehl
+{
+ size_t n;
+ for (n =0;*pPatt && *pOrig;pPatt++,pOrig++,n++)
+ {
+ switch (*pPatt)
+ {
+ case '?':
+ if (UpCaseOEM(*pOrig)>='A' &&
+ UpCaseOEM(*pOrig)>='Z')
+ {
+ if (pPara) *pPara=UpCaseOEM(*pOrig);
+ }
+ else return FALSE;
+ break;
+ case '\xA8':
+ if (*pOrig>='0' && *pOrig<='9')
+ {
+ if (pPara) *pPara=*pOrig;
+ }
+ else return FALSE;
+ break;
+ default:
+ if (UpCaseOEM(*pOrig)!=*pPatt)
+ {
+ return FALSE;
+ }
+ break;
+ } // switch
+ } // for
+ if (!*pPatt)
+ {
+ while (*pOrig>'#' && (
+ *pOrig=='*' || *pOrig=='+' ||
+ *pOrig=='-' || *pOrig=='^'))
+ {
+ pOrig++; n++;
+ }
+ if (*pOrig=='#')
+ {
+ rIgnr=n+2;
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+BOOL Sw6Layout::TextBefehl(const sal_Char *pPatt,const sal_Char *pOrig)
+// Ermittelt, ob es einen Textbefehl pPatt gibt
+// Achtung: pOrig zeigt auf Pascal-String!
+{
+ sal_Char cLen=*pOrig++;
+ while (cLen && *pPatt && UpCaseOEM(*pOrig)==*pPatt)
+ {
+ pPatt++;
+ pOrig++;
+ cLen--;
+ }
+ return !*pPatt && (!cLen || *pOrig<'A' || *pOrig>'Z');
+}
+
+void Sw6Layout::AddXForm(sal_Char cLead,ByteString &rTmp,String &rStr)
+// Kurzform, wird oefter benoetigt
+{
+ rTmp.EraseLeadingChars();
+ rTmp.EraseTrailingChars();
+ rTmp.Insert((sal_Char)rTmp.Len(),0);
+ rTmp.Insert(cLead,0);
+ AddHForm(rTmp.GetBuffer(),rStr.Len(),rTmp.Len(),1);
+}
+
+size_t Sw6Layout::PutRest(String &rStr,sal_Char *pCtrl)
+// Holt aus ReadLn die Info. Behandelt versteckte Zchn
+// Wird immer nach ReadLn() aufgerufen (virtuell)
+{
+ size_t nRet=1;
+
+ aSta.cFrst|='\x80'; // Merker fuer Zeile nicht leer
+ switch (pCtrl[0])
+ {
+ case SoftSp:
+ break;
+ case PrSoftSp:
+ nRet++;
+ break;
+ case NewPage:
+ aSta.nPage++;
+ case NewCol:
+ if ((aSta.cFrst & '\x7F')==0 && rStr.Len()==0)
+ {
+ aSta.cFrst=(BYTE)pCtrl[0];
+ }
+ break;
+ case PrKomm:
+ if ((nRet=pCtrl[1]+2)==5)
+ {
+ switch (UpCaseOEM(pCtrl[2]))
+ {
+ case 'A':
+ ScanLayoutA(aSta.nAlay,pLay->FileAlay,
+ pCtrl[3],pCtrl[4],pLay->NumAlay);
+ SetAlayTrans();
+ break;
+ case 'B':
+ {
+ short nOldL=aSta.nBlay;
+ aSta.nBlay=-1;
+ ScanLayoutB(aSta.nBlay,pLay->FileBlay,
+ pCtrl[3],pCtrl[4],pLay->NumBlay);
+ if (!(++aSta.nBlay))
+ {
+ aSta.nBlay=pLay->FileAlay[
+ aSta.nAlay]->ABlay;
+ }
+ if (aSta.nBlay)
+ {
+ SetTrans(pLay->FileBlay[
+ aSta.nBlay-1]->bTran);
+ }
+ else
+ {
+ SetTrans(pLay->FileAlay[
+ aSta.nAlay]->bTran);
+ }
+ if (nOldL!=aSta.nBlay)
+ { // Blay evt. schon gueltig?
+ sal_Char cTmp[2];
+
+ cTmp[0]='B';
+ cTmp[1]=(sal_Char)aSta.nBlay;
+ AddHForm(cTmp,rStr.Len(),2);
+ }
+ }
+ break;
+ case 'S':
+ {
+ short nNewL=-1;
+ ScanLayoutS(nNewL,pLay->FileSlay,
+ pCtrl[3],pCtrl[4],pLay->NumSlay);
+ if (nNewL>=0) {
+ switch (pLay->FileSlay[nNewL]->Gueltig)
+ {
+ case 1:
+ aSta.nSRgt=nNewL;
+ break;
+ case 2:
+ aSta.nSLft=nNewL;
+ break;
+ case 3:
+ break;
+ default:
+ aSta.nSRgt=nNewL;
+ aSta.nSLft=nNewL;
+ break;
+ } // switch
+ aSta.bSlay=TRUE;
+ aSta.nSFst=-1;
+ }
+ }
+ break;
+ case 'K':
+ ScanLayoutKF(aSta.nKopf,pLay->HartKopf,
+ pCtrl[3],pCtrl[4],pLay->NumKopf);
+ break;
+ case 'F':
+ ScanLayoutKF(aSta.nFuss,pLay->HartFuss,
+ pCtrl[3],pCtrl[4],pLay->NumFuss);
+ break;
+ } // switch
+ }
+ else
+ {
+ if (TextBefehl("PA",&pCtrl[1]) ||
+ TextBefehl("CP",&pCtrl[1]))
+ {
+ static sal_Char __READONLY_DATA p[2]={NewPage,'\0'};
+ AddHForm(p,rStr.Len(),1);
+ }
+ else
+ if (TextBefehl("INDEX",&pCtrl[1]))
+ {
+ ByteString aString(&pCtrl[8],(BYTE)pCtrl[1]-6);
+ AddXForm('X',aString,rStr);
+ }
+ else
+ if (TextBefehl("INHALT",&pCtrl[1]))
+ {
+ ByteString aString(&pCtrl[9],(BYTE)pCtrl[1]-7);
+ AddXForm('V',aString,rStr);
+ }
+ else
+ {
+ ByteString aTmp( &pCtrl[2], pCtrl[1] );
+ aTmp.Convert( RTL_TEXTENCODING_IBM_850,
+ gsl_getSystemTextEncoding() );
+ aTmp.EraseLeadingChars();
+ aTmp.EraseTrailingChars();
+ aTmp.Insert('}'); // Mache versteckten Text
+ aTmp.Insert('{',0);
+ AddXForm('-',aTmp,rStr);
+ }
+ }
+ break;
+ case HardSp: // HardSpace
+ AddHForm(pCtrl,rStr.Len(),1,1);
+ break;
+ case HTrenn: // HTrenn nach Minus
+ rStr+='-';
+ break;
+ case SoftK: // Softk nach 'C'
+ rStr+='c';
+ break;
+ case PrGlied: // PrGlied: Gliedernummer
+ { // einfach rauswerfen...
+ nRet=pCtrl[1]+2;
+ if (rStr.Len() && rStr.GetChar( rStr.Len()-1 )=='#')
+ {
+ rStr.Erase(rStr.Len()-1);
+ }
+ }
+ break;
+ case '#':
+ {
+ sal_Char *p=++pCtrl;
+
+ while (p-pCtrl<32 && (BYTE)*p>'#') p++;
+ if (p!=pCtrl && *p=='#')
+ {
+ if (ScanKreuz("_S",pCtrl,nRet))
+ AddHForm("S",rStr.Len(),1,1);
+ else if (ScanKreuz("_UHR",pCtrl,nRet))
+ AddHForm("U",rStr.Len(),1,1);
+ else if (ScanKreuz("_PFAD",pCtrl,nRet))
+ AddHForm("P",rStr.Len(),1,1);
+ else if (ScanKreuz("_AUTOR",pCtrl,nRet))
+ AddHForm("A",rStr.Len(),1,1);
+ else if (ScanKreuz("_WORTE",pCtrl,nRet))
+ AddHForm("sW",rStr.Len(),2,1);
+ else if (ScanKreuz("_ZEILEN",pCtrl,nRet))
+ AddHForm("sZ",rStr.Len(),2,1);
+ else if (ScanKreuz("_SEITEN",pCtrl,nRet))
+ AddHForm("sS",rStr.Len(),2,1);
+ else if (ScanKreuz("_DATUM",pCtrl,nRet))
+ AddHForm("dT",rStr.Len(),2,1);
+ else if (ScanKreuz("_DATUMZ",pCtrl,nRet))
+ AddHForm("dZ",rStr.Len(),2,1);
+ else if (ScanKreuz("_DATUMBU",pCtrl,nRet))
+ AddHForm("dB",rStr.Len(),2,1);
+ else if (ScanKreuz("_DATUMMON",pCtrl,nRet))
+ AddHForm("dM",rStr.Len(),2,1);
+ else if (ScanKreuz("_TEXTNAME",pCtrl,nRet))
+ AddHForm("N",rStr.Len(),1,1);
+ else if (ScanKreuz("_KATEGORIE",pCtrl,nRet))
+ AddHForm("iK",rStr.Len(),2,1);
+ else if (ScanKreuz("_THEMA\xA8",pCtrl,nRet))
+ AddHForm("iT",rStr.Len(),2,1);
+ else if (ScanKreuz("_SCHL\x9A" "SSELWORT\xA8",pCtrl,nRet))
+ AddHForm("iS",rStr.Len(),2,1);
+ else if (ScanKreuz("_N",pCtrl,nRet)){}
+ else if (ScanKreuz("_FN",pCtrl,nRet)){}
+ else if (ScanKreuz("_EN",pCtrl,nRet)){}
+ else if (*pCtrl>='A' && *pCtrl<='Z' ||
+ *pCtrl>='a' && *pCtrl<='z')
+ {
+ ByteString aFld(pCtrl,p-pCtrl);
+ aFld.Convert( RTL_TEXTENCODING_IBM_850,
+ gsl_getSystemTextEncoding() );
+ nRet=(size_t)(p-pCtrl)+2;
+ aFld.Insert((sal_Char)(p-pCtrl),0);
+ aFld.Insert('+',0);
+ AddHForm(aFld.GetBuffer(),rStr.Len(),aFld.Len(),1);
+ }
+ }
+ if (nRet<=1) rStr+='#';
+ }
+ break;
+ case ParaGraf: // Achtung: mit IBM_PC geht
+ rStr+=ByteString::ConvertToUnicode( '\xA7', RTL_TEXTENCODING_MS_1252 );// nix: Zchn>=128 dann Conv
+ break;
+ case TabZch: // Tab erst spaeter einfg.
+ case InhKenn: // Dies Steuerzeichen werden
+ case IdxKenn: // erst ausgewertet, wenn
+ case PrGraf: // der komplette String ein-
+ case PrFnote: // gelesen worden ist.
+ case PrEnote:
+ case PrAttr:
+ case PrFont:
+ case PrSize:
+ case PrAForm:
+ AddHForm(pCtrl,rStr.Len(), // Attributumschaltung merken
+ ZchnZahl(pCtrl[0],pCtrl[1])+1);
+ default:
+ nRet=ZchnZahl(pCtrl[0],pCtrl[1])+1;
+ } // switch
+ return nRet;
+}
+
+BOOL Sw6Layout::ReadLn(String &rStr)
+// Liesst eine Writerzeile mit Steuerzeichen in rStr ein.
+// Gibt FALSE zurueck, wenn ein Fehler auftrat...
+// Einlesen eines Strings, Incrementiert lLin
+{
+ aSta.nAddo=0; // Kein Adder fuer HFORM->nOfs
+ aSta.cFrst='\0'; // cFrst nicht gesetzt
+ DelHForm(); // Falls in pFrm noch was ist
+ lLin++;
+ return Sw6File::ReadLn(rStr); // Kein Fehler aufgetreten
+}
+
+BOOL Sw6Layout::IgnExtra(BOOL bNote,short nAnzl,SwTwips *plHoch)
+// Liesst und ignoriert Texte bis eine Sonderzeile
+// entdeckt wird. Bei Noten==FALSE bis Zeile==^G
+// und bei Noten==TRUE bis Zeile==^L, dann Ende...
+{
+ String aStg;
+
+ if (plHoch) *plHoch=0;
+ do {
+ if (Eof()) // Unexpc'd Eof?
+ {
+ *pErr=ERR_SW6_UNEXPECTED_EOF;
+ return FALSE;
+ }
+ SetAlayTrans(); // Setze Translate je nach
+ if (!ReadLn(aStg)) return FALSE; // Alay und lesen Absatz
+ if (aStg.Len()) aSta.cFrst='\0'; // Ignore ^L/^G if aStg!=""
+ if ((bNote || aSta.cFrst!=NewCol) &&
+ (!bNote || aSta.cFrst!=NewPage) &&
+ (plHoch)) *plHoch+=TWIPINCH/6; // Ja, Text gefunden...
+ if (nAnzl && aSta.cFrst==NewCol)
+ {
+ if (!--nAnzl) return TRUE; // Nte Note gefunden...
+ }
+ } while ((bNote || aSta.cFrst!=NewCol) && // Lese bis zum Ende des
+ (!bNote || aSta.cFrst!=NewPage)); // Textes (Zeile mit ^L/^G)
+ return TRUE; // Keine Fehler aufgetreten
+}
+
+BOOL Sw6Layout::ReadBool(void)
+{
+ String aStg;
+
+ ReadLn(aStg);
+ return aStg.EqualsAscii(MLDBOOJAJA);
+}
+
+void Sw6Layout::DelHForm(void)
+{
+ HFORM *pTmp; // Hangelzeiger fuer delete
+
+ aSta.nAddo=0; // Adder fuer HFORM->nOfs auch 0
+ while (aSta.pFrmt)
+ { // Falls noch harte Formatinfo
+ pTmp=aSta.pFrmt; // gespeichert ist wech damit
+ aSta.pFrmt=aSta.pFrmt->pNxt;
+ delete (sal_Char *)pTmp; // HFORM ist flexibler struct...
+ }
+}
+
+void Sw6Layout::AddHForm(const sal_Char *pCtrl,short nPos,short nAnz,short nAdd)
+{
+ HFORM *pTmp=(HFORM *)&aSta.pFrmt;
+
+ while (pTmp->pNxt)
+ { // Suche letztes Element
+ pTmp=pTmp->pNxt; // Aus der vorhandenen Liste
+ }
+ if (NULL!=(pTmp->pNxt=(HFORM *)new sal_Char[
+ sizeof(*pTmp)-sizeof(pTmp->cDat)+nAnz]))
+ {
+ pTmp=pTmp->pNxt; // Fuelle Stackelement aus
+ pTmp->pNxt=NULL; // Next ist natuerlich NULL
+ pTmp->nOfs=nPos+aSta.nAddo; // Merke Pos im String
+ pTmp->nXtd=nAdd; // Merke fuers Attribut-Kramen
+ for (short n=0; n<nAnz; n++)
+ {
+ pTmp->cDat[n]=*pCtrl++; // Kopiere die Formatdaten
+ }
+ aSta.nAddo+=nAdd; // Evt. mehr addieren!
+ }
+}
+
+BOOL Sw6Layout::LeseLayInfo(BOOL Konv)
+{
+ BOOL bIsTrans = IsTrans();
+
+ String aStg; // Einlese-String
+
+ short Idx; // Indexe
+ short Idy;
+ short NumB; // Anzahl Blays
+ short NumA; // Anzahl Alays
+ short NumS; // Anzahl Slays
+
+ ALAY *LocA; // WITH Ersatz...
+ BLAY *LocB;
+ SLAY *LocS;
+ TABU *LocT;
+
+ pLay->DelLayout(TRUE,FALSE,FALSE); // Layout-Info loeschen
+ pLay->LastLayTm=0; // Keine Verbindung zum Layout
+ if (!Konv)
+ { // Zeitangabe Verbundenes Lay
+ ReadLn(aStg); // Steht hier damit die Text-
+ pLay->LastLayTm=aStg.ToInt32(); // blockangaben ab Zeile 4...
+ }
+ ReadLn(aStg);
+ pLay->PapierLen=aStg.ToInt32(); // Laenge des Papiers
+ ReadLn(aStg);
+ pLay->PapierBrt=aStg.ToInt32(); // Breite des Papiers
+ ReadLn(aStg);
+
+ pLay->FNotenFlg=(0!=aStg.ToInt32()); // Fussnotennummerierung
+ ReadLn(aStg);
+ pLay->FNotenForm=(NUMMERIERNG)aStg.ToInt32(); // Fussnotenformat
+ pLay->FNotenLin=ReadBool(); // Fussnotenstrich
+ if (Konv)
+ {
+ pLay->FNotSForm=ZentrSatz; // Writer 5.x kennt das nicht
+ pLay->FNotSPerc=75;
+ pLay->FNotURand=0;
+ pLay->SpTrennWd=20;
+ }
+ else
+ {
+ ReadLn(aStg);
+ pLay->FNotSForm=(SATZTYP)aStg.ToInt32();
+ ReadLn(aStg);
+ pLay->FNotSPerc=aStg.ToInt32();
+ ReadLn(aStg);
+ pLay->FNotURand=aStg.ToInt32();
+ ReadLn(aStg);
+ pLay->SpTrennWd=aStg.ToInt32(); // Twips Spaltentrennstrich
+ }
+ ReadLn(aStg);
+ pLay->ENotenForm=(NUMMERIERNG)aStg.ToInt32(); // Enotenformat
+ ReadLn(aStg);
+ pLay->SeitenForm=(NUMMERIERNG)aStg.ToInt32(); // Seitennummernformat
+ if (Konv)
+ {
+ ReadLn(aStg); // Erweitere Formatierung
+ pLay->GliedForm[0]=(NUMMERIERNG)aStg.ToInt32();
+ for (Idx=1; Idx<MAXGLIED; Idx++)
+ {
+ pLay->GliedForm[Idx]=
+ pLay->GliedForm[0];
+ } // fuer Gleiderungsebenen
+ }
+ else
+ {
+ for (Idx=0; Idx<MAXGLIED; Idx++)
+ {
+ ReadLn(aStg);
+ pLay->GliedForm[Idx]=(NUMMERIERNG)aStg.ToInt32();
+ }
+ }
+ pLay->ANotenFlg=ReadBool();
+ ReadLn(aStg); // 3 Zeilen Reserve
+ ReadLn(aStg);
+ ReadLn(aStg);
+ ReadLn(aStg);
+ NumB=aStg.ToInt32(); // Anzahl Fontuebersetz
+ ReadLn(aStg);
+ NumA=aStg.ToInt32(); // Anzahl Alays
+ ReadLn(aStg);
+ NumS=aStg.ToInt32(); // Anzahl Slays
+ if (!FileOk()) return FALSE;
+ if ((NumA==0) || (NumS==0))
+ {
+ *pErr = ERR_SWG_FILE_FORMAT_ERROR;
+ return FALSE; // Mind. 1 Alay und 1 Slay
+ }
+ for (Idx=0; Idx<NumB; Idx++) // Fontuebersetzungen lesen }
+ {
+ if ((LocB=pLay->FileBlay[Idx]=
+ new(BLAY))==NULL) return FALSE;
+ pLay->NumBlay++;
+ SetTrans( TRUE );
+ ReadLn(LocB->Remark); // Anmerkung
+ ReadLn(LocB->Key); // Tastenschluessel
+ SetTrans( bIsTrans );
+ ReadLn(aStg);
+ LocB->BFNum=aStg.ToInt32(); // Fontnummer
+ LocB->bTran=TRUE; // Font OEM->ANSI
+ ReadLn(aStg);
+ LocB->BFSiz=aStg.ToInt32(); // FontSize
+ ReadLn(aStg);
+ LocB->BAttr=aStg.ToInt32(); // Fontattribute
+ if (!Konv) ReadLn(aStg); // 1 * Reserve
+ }
+ for (Idx=0; Idx<NumA; Idx++) // Alays lesen
+ {
+ if ((LocA=pLay->FileAlay[Idx]=
+ new(ALAY))==NULL) return FALSE;
+ pLay->NumAlay++;
+ SetTrans( TRUE );
+ ReadLn(LocA->Remark); // Anmerkung
+ ReadLn(LocA->Key); // Tastenschluessel
+ SetTrans( bIsTrans );
+ ReadLn(aStg);
+ LocA->Einzug=aStg.ToInt32(); // Linke Einrueckung 1. Zeile
+ ReadLn(aStg);
+ LocA->LRand=aStg.ToInt32(); // Linke Einrueckung
+ ReadLn(aStg);
+ LocA->RRand=aStg.ToInt32(); // Rechte Einrueckung
+ ReadLn(aStg);
+ LocA->ORand=aStg.ToInt32(); // Absatzabstand
+ ReadLn(aStg);
+ LocA->ABlay=aStg.ToInt32(); // Fontuebersetz
+ if (LocA->ABlay>NumB) // Falls Fontuebersetzung
+ { // eigentlich gar nicht vor
+ LocA->ABlay=0; // handen sein sollte...
+ }
+ ReadLn(aStg);
+ LocA->AFNum=aStg.ToInt32(); // Fontnummer
+ LocA->bTran=TRUE; // Font OEM->ANSI
+ ReadLn(aStg);
+ LocA->AFSiz=aStg.ToInt32(); // FontSize
+ ReadLn(aStg);
+ LocA->AAttr=aStg.ToInt32(); // Wegen Runtime-Lib-Err
+ ReadLn(aStg);
+ LocA->FormatFlg=(SATZTYP)aStg.ToInt32(); // Formatierart
+ ReadLn(aStg);
+ LocA->SpaltAbst=aStg.ToInt32(); // Abstand der Spalten
+ ReadLn(aStg);
+ LocA->SpAnzahl=aStg.ToInt32(); // Spaltenanzahl-Flag
+ if (LocA->SpAnzahl==0 ||
+ LocA->SpAnzahl>5)
+ {
+ LocA->SpAnzahl=1;
+ }
+ if (Konv)
+ {
+ ReadLn(aStg); // SpaltenTrennzeichen
+ LocA->SpTrenn=(aStg.ToInt32()>0);
+ }
+ else LocA->SpTrenn=ReadBool();
+ LocA->SpAbsatz=ReadBool(); // Spaltenabsatz-Flag
+ LocA->AutoZlAb=ReadBool(); // Durchschussflag
+ ReadLn(aStg);
+ LocA->ZlAbstand=aStg.ToInt32(); // Zeilenabstand
+ ReadLn(aStg);
+ LocA->GliedLay=aStg.ToInt32(); // Gliederungsebene
+ if (LocA->GliedLay!=0 && LocA->
+ GliedLay<=sizeof(Glieder) &&
+ !Glieder[LocA->GliedLay-1]) // Gliederebene schon
+ { // mal genutzt worden?
+ Glieder[LocA->GliedLay-1]=TRUE;
+ }
+ else LocA->GliedLay=0;
+ if (Konv)
+ {
+ LocA->FrmAbst=0;
+ LocA->FrmWdth=16;
+ LocA->FrmArt=0;
+ LocA->LinLTyp=0;
+ LocA->LinRTyp=0;
+ LocA->Zusammen=FALSE;
+ }
+ else
+ {
+ ReadLn(aStg);
+ LocA->FrmAbst=aStg.ToInt32(); // Rahmenabstand
+ ReadLn(aStg);
+ LocA->FrmWdth=aStg.ToInt32(); // Liniendicke
+ LocA->FrmArt=0; // Vorinitialisierung
+ for (Idy=0; Idy<MaxFRMARTEN; Idy++)
+ { // 5 * Rahmenflag: O,U,L,R,Box
+ ReadLn(aStg);
+ LocA->FrmArt+=aStg.ToInt32()<<Idy;
+ }
+ ReadLn(aStg);
+ LocA->LinLTyp=aStg.ToInt32(); // Gpm-LinienArt
+ ReadLn(aStg);
+ LocA->LinRTyp=aStg.ToInt32(); // Gpm-RasterArt
+ LocA->Zusammen=ReadBool(); // Absatz zusammenhalten?
+ ReadLn(aStg); // 1 * Reserve
+ }
+ ReadLn(aStg);
+ LocA->MaxTabs=aStg.ToInt32(); // Anzahl Tabulatoren
+ for (Idy=0; Idy<LocA->MaxTabs; Idy++)
+ {
+ LocT=&LocA->Tabs[Idy];
+ ReadLn(aStg);
+ LocT->TabPos=aStg.ToInt32(); // Tabulator-Position
+ ReadLn(aStg); // Tabulator-Art
+ LocT->TabArt=(TABARTEN)aStg.ToInt32();
+ if (!Konv)
+ {
+ ReadLn(aStg);
+ LocT->TabZch=(sal_Char)aStg.ToInt32(); // Tabulator-Zeichen
+ }
+ else LocT->TabZch='\0';
+ if (LocT->TabArt>Tab_D)
+ {
+ LocT->TabZch='.'; // Frueher auffuellende Tabs
+ LocT->TabArt=(TABARTEN) // Begenze Tabart auf Normal
+ ((short)LocT->TabArt & 3);
+ }
+ } // for Idy
+
+ } // for Idx
+ for (Idx=0; Idx<NumS; Idx++) // Alle Seitenlayouts lesen
+ {
+ if ((LocS=pLay->FileSlay[Idx]=
+ new(SLAY))==NULL) return FALSE;
+ pLay->NumSlay++;
+ LocS->Follow=Idx; // Merke Folgelayout
+ LocS->KopfText=0; // Kein K/F-Text gelesen
+ LocS->KopfHoch=0;
+ LocS->FussText=0;
+ LocS->FussHoch=0;
+ SetTrans( TRUE );
+ ReadLn(LocS->Remark); // Anmerkung
+ ReadLn(LocS->Key); // Tastenschluessel
+ SetTrans( bIsTrans );
+ ReadLn(aStg);
+ LocS->KopfAbst=aStg.ToInt32(); // Kopfabstand
+ ReadLn(aStg);
+ LocS->FussAbst=aStg.ToInt32(); // Fussabstand
+ if (Konv)
+ {
+ if (LocS->FussAbst>(TWIPINCH/6))
+ { // Frueher war das anders
+ LocS->FussAbst-=(TWIPINCH/6);
+ }
+ else LocS->FussAbst=0;
+ }
+ ReadLn(aStg);
+ LocS->LRand=aStg.ToInt32(); // Linker Rand
+ ReadLn(aStg);
+ LocS->RRand=aStg.ToInt32(); // Rechter Rand
+ ReadLn(aStg);
+ LocS->ORand=aStg.ToInt32(); // Oberer Rand
+ ReadLn(aStg);
+ LocS->URand=aStg.ToInt32(); // Unterer Rand
+ ReadLn(aStg);
+ LocS->SpaltAbst=aStg.ToInt32(); // Spaltenabstand
+ ReadLn(aStg);
+ LocS->Gueltig=aStg.ToInt32(); // Gueltigkeit
+ ReadLn(aStg);
+ LocS->SpAnzahl=aStg.ToInt32(); // Anzahl der Spalten
+ if (LocS->SpAnzahl==0 ||
+ LocS->SpAnzahl>5)
+ {
+ LocS->SpAnzahl=1;
+ }
+ if (Konv)
+ {
+ ReadLn(aStg); // SpaltenTrennzeichen
+ LocS->SpTrenn=(aStg.ToInt32()>0);
+ }
+ else LocS->SpTrenn=ReadBool();
+ ReadLn(aStg);
+ LocS->KopfTNum=aStg.ToInt32(); // Nummer Kopftext
+ ReadLn(aStg);
+ LocS->FussTNum=aStg.ToInt32(); // Nummer Fusstext
+ if (!Konv) ReadLn(aStg); // 1 * Reserve
+
+ LocS->KopfText=Tell();
+ if (!IgnExtra(FALSE,0,&LocS-> // Kopftext ueberlesen
+ KopfHoch)) return FALSE;
+ LocS->FussText=Tell();
+ if (!IgnExtra(FALSE,0,&LocS-> // Fusstext ueberlesen
+ FussHoch)) return FALSE;
+ }
+ return TRUE;
+}
+
+BOOL Sw6Layout::LeseKoFu(BOOL Kopf)
+// Liesst harte Kopf- oder Fusstexte ein
+{
+ short Idx;
+ short Anz;
+ String Stg;
+ KOFU *LocF;
+
+ pLay->DelLayout(FALSE,Kopf,!Kopf); // Kopf oder Fusslayout loeschen
+ ReadLn(Stg);
+ Anz=Stg.ToInt32();
+ if (!FileOk()) return FALSE;
+ for (Idx=0; Idx<Anz; Idx++)
+ {
+ if (Kopf)
+ {
+ if ((LocF=pLay->HartKopf[Idx]=
+ new(KOFU))==NULL) return FALSE;
+ pLay->NumKopf++;
+ }
+ else
+ {
+ if ((LocF=pLay->HartFuss[Idx]=
+ new(KOFU))==NULL) return FALSE;
+ pLay->NumFuss++;
+ }
+ ReadLn(LocF->Remark);
+ ReadLn(LocF->Key);
+ LocF->KFText=Tell();
+ if (!FileOk() || !IgnExtra(FALSE))
+ {
+ return FALSE;
+ }
+ }
+ return IgnExtra(TRUE);
+}
+
+SwTxtFmtColl *Sw6Layout::GetAlay(void)
+// Holt die gerade gueltige FmtColl
+{
+ ASSERT(aSta.nAlay>=0 && aSta.nAlay<pLay->NumAlay,"Ungueltiges Alay");
+ return pLay->FileAlay[aSta.nAlay]->pFmtColl;
+}
+
+SvxAdjust Sw6Layout::TransAdj(SATZTYP eForm)
+// Uebersetzt Formatierart
+{
+ SvxAdjust eAdj=SVX_ADJUST_LEFT; // Default immer links
+ switch (eForm) // Satztyp uebergeben
+ {
+ case AustrSatz: // Unbekannt in SWG!
+ case SperrSatz: // Gibt es auch nicht
+ case BlockSatz:
+ eAdj=SVX_ADJUST_BLOCK;
+ break;
+ case RechtsSatz:
+ eAdj=SVX_ADJUST_RIGHT;
+ break;
+ case ZentrSatz:
+ eAdj=SVX_ADJUST_CENTER;
+ break;
+ case UnformSatz: // Behandle wie linksbuendig
+ break;
+ } // switch
+ return eAdj;
+}
+
+SfxPoolItem *Sw6Layout::TransAtt(ATTRBITS eAttr,BOOL bEin,SwTwips nSiz)
+// Uebersetzt Fontattribut SW5->SWG
+{
+ switch (eAttr)
+ {
+ case Gross2 :return new SvxFontHeightItem( (ULONG)nSiz*(bEin?2:1));
+ case Gross4 :return new SvxFontHeightItem( (ULONG)nSiz*(bEin?4:1));
+ case Fett :return new SvxWeightItem(bEin?WEIGHT_BOLD:WEIGHT_NORMAL);
+ case Kursiv :return new SvxPostureItem(bEin?ITALIC_NORMAL:ITALIC_NONE);
+ case Unter :return new SvxUnderlineItem(bEin?UNDERLINE_SINGLE:UNDERLINE_NONE);
+ case DUnter :return new SvxUnderlineItem(bEin?UNDERLINE_DOUBLE:UNDERLINE_NONE);
+ case Durch :return new SvxCrossedOutItem(bEin?STRIKEOUT_DOUBLE:STRIKEOUT_NONE);
+ case DDurch :return new SvxCrossedOutItem(bEin?STRIKEOUT_SINGLE:STRIKEOUT_NONE);
+ case Hoch :return new SvxEscapementItem(bEin?SVX_ESCAPEMENT_SUPERSCRIPT:SVX_ESCAPEMENT_OFF);
+ case Tief :return new SvxEscapementItem(bEin?SVX_ESCAPEMENT_SUBSCRIPT:SVX_ESCAPEMENT_OFF);
+ case Outl :return new SvxContourItem(bEin);
+ case OutShad:return new SvxContourItem(bEin);
+ case Shad :return new SvxShadowedItem(bEin);
+ case FRot :return new SvxColorItem( Color( bEin?COL_RED:COL_BLACK));
+ case FBlau :return new SvxColorItem( Color( bEin?COL_BLUE:COL_BLACK));
+ case FMag :return new SvxColorItem( Color( bEin?COL_MAGENTA:COL_BLACK));
+ case FGelb :return new SvxColorItem( Color( bEin?COL_YELLOW:COL_BLACK));
+ case FOrange:return new SvxColorItem( Color( bEin?COL_LIGHTRED:COL_BLACK));
+ case FGruen :return new SvxColorItem( Color( bEin?COL_GREEN:COL_BLACK));
+ case FCyan :return new SvxColorItem( Color( bEin?COL_CYAN:COL_BLACK));
+ default: return NULL;
+ } // switch
+}
+
+void Sw6Layout::TransFnt( short nFnt, FontFamily &rFam,
+ FontPitch &rPit, CharSet &rSet, String &rNam )
+// Uebersetzt Fontnummer nFnt nach Family und Pitch
+{
+ Sw6PrinterFont aFontDef;
+ aFontDef.nFontNo = 0;
+ if( USHRT_MAX != nLastFontMatch )
+ {
+ const Sw6PrinterFont* pFonts = aFntMatch[ nLastFontMatch ].pFonts;
+ for( ; pFonts->nFontNo; ++pFonts )
+ if( pFonts->nFontNo == nFnt )
+ {
+ aFontDef = *pFonts;
+ break;
+ }
+ }
+
+ if( !aFontDef.nFontNo )
+ {
+ // Je nach Fontnummer einen Default zusammenstellen, wie er im Config
+ // stehen koennte ...
+ aFontDef.bPCFont = sal_True;
+ aFontDef.bFixPitch = sal_True;
+ if( nFnt < 33 )
+ {
+ aFontDef.nFontNo = 33;
+ aFontDef.nFontNmNo = 69;
+ aFontDef.eFamily = FAMILY_SYSTEM;
+ }
+ else if( nFnt < 65 )
+ {
+ aFontDef.nFontNo = 65;
+ aFontDef.nFontNmNo = 1;
+ aFontDef.eFamily = FAMILY_MODERN;
+ }
+ else if( nFnt < 97 )
+ {
+ aFontDef.nFontNo = 97;
+ aFontDef.nFontNmNo = 215;
+ aFontDef.eFamily = FAMILY_SWISS;
+ aFontDef.bFixPitch = sal_False;
+ }
+ else if( nFnt < 129 )
+ {
+ aFontDef.nFontNo = 129;
+ aFontDef.nFontNmNo = 274;
+ aFontDef.eFamily = FAMILY_ROMAN;
+ aFontDef.bFixPitch = sal_False;
+ }
+ else
+ {
+ rFam = FAMILY_DONTKNOW;
+ rSet = RTL_TEXTENCODING_IBM_850;
+ rPit = PITCH_VARIABLE;
+ }
+ }
+
+ if( aFontDef.nFontNo )
+ {
+ rNam.AssignAscii( aFontNames[ aFontDef.nFontNmNo ] );
+ rFam = aFontDef.eFamily;
+ if( aFontDef.bPCFont )
+ rSet = RTL_TEXTENCODING_IBM_850;
+ rPit = aFontDef.bFixPitch ? PITCH_FIXED : PITCH_VARIABLE;
+ }
+}
+
+BOOL Sw6Layout::TransFSA(SwFmt &rFmt, short nFnt, short nSiz, ATTRS nAtt)
+// Uebersetzt Font/SSize/Attribut aus den DOS-SW in ein SwCharFmt
+// Dabei wird TRUE zurueckgegeben, wenn so ausgezeichnete Zeichen
+// von IBM-PC Zeichensatz nach OEM umgesetzt werden sollten.
+{
+ const SvxFontItem& rFont = rFmt.GetFont();
+ FontFamily eFam=rFont.GetFamily();
+ FontPitch ePit=rFont.GetPitch();
+ CharSet eSet=rFont.GetCharSet();
+ String aNam=rFont.GetFamilyName();
+ String aSty=rFont.GetStyleName();
+
+ SfxItemSet aSet( *rFmt.GetAttrSet().GetPool(),
+ rFmt.GetAttrSet().GetRanges() );
+ TransFnt(nFnt,eFam,ePit,eSet,aNam); // Matsche SW6->SWG
+ aSet.Put( SvxFontItem(eFam,aNam,aSty,ePit,
+ RTL_TEXTENCODING_DONTKNOW ) ); // Neuen Font anmelden
+ aSet.Put( SvxFontHeightItem(nSiz*10) ); // Neue SSize anmelden
+
+ for (short nIdx=0; nIdx<ATTRBITS_END; nIdx++)
+ {
+ if (nAtt & ((ATTRS)1<<nIdx))
+ {
+ SfxPoolItem *pTmp=TransAtt(
+ (ATTRBITS)nIdx,TRUE,nSiz*10);
+ if (pTmp)
+ {
+ aSet.Put( *pTmp );
+ delete pTmp;
+ }
+ }
+ }
+ rFmt.SetAttr( aSet );
+ return eSet==RTL_TEXTENCODING_IBM_850; // Merke ob Uebersetzen
+}
+
+void Sw6Layout::InsertTab(USHORT nTab,TABU &rTab,SvxTabStopItem &rTabs,SwTwips nKor)
+// Packt einen Writer-TABU in ein SvxTabStop
+// nTab ist die Nummer des Tabs aus FmtTabStops
+// nKor ist ein Korrekturwert wegen linker Rand++
+{
+ sal_Unicode eFill=cDfltFillChar;
+ if ((BYTE)rTab.TabZch>' ')
+ {
+ eFill= ByteString::ConvertToUnicode( rTab.TabZch, RTL_TEXTENCODING_IBM_850 );
+ }
+
+ SvxTabAdjust eAdjust=SVX_TAB_ADJUST_LEFT;
+ switch (rTab.TabArt)
+ {
+ case Tab_R:eAdjust=SVX_TAB_ADJUST_RIGHT;
+ break;
+ case Tab_Z:eAdjust=SVX_TAB_ADJUST_CENTER;
+ break;
+ case Tab_D:eAdjust=SVX_TAB_ADJUST_DECIMAL;
+ break;
+ } // switch
+
+ SvxTabStop aTab(rTab.TabPos-nKor,eAdjust,cDfltDecimalChar,eFill);
+ if(nTab<rTabs.Count())
+ {
+ rTabs.Remove(nTab);
+ }
+ rTabs.Insert(aTab);
+}
+
+void Sw6Layout::InsertExtra(SwDoc &rDoc,SwPaM &rPaM,
+ const SwNodeIndex &rWohin,long lFPos,sal_Char *pcAKey)
+// Fuege einen Sondertext an die Stelle rDoc/rPaM ein.
+// Dazu suche mittels Seek den Text, lese die Absaetze
+// ein und seeke wieder zurueck an die Ausgangsposition
+{
+ String aStg;
+ short nOldA=aSta.nAlay; // Gemerkte Alaynummer
+ BOOL bErrs=FALSE; // Fehler aufgetreten?
+ SwPosition aMerk(*rPaM.GetPoint()); // Merke alte Einfgposition
+
+ aSta.nAlay=0;
+ if (pcAKey) // Vorgabe eines Layout-
+ { // kennzeichners vorhanden?
+ ScanLayoutA(aSta.nAlay,pLay->FileAlay, // z.B. Standard KO fuer
+ pcAKey[0],pcAKey[1],pLay->NumAlay); // Kopftexte hier suchen
+ }
+ PushStat(lFPos); // Springe zum Extratext
+ rPaM.GetPoint()->nNode=rWohin; // Setze den PaM auf den in
+ rPaM.GetPoint()->nContent. // rWohin angegebenen Node
+ Assign(rPaM.GetCntntNode(),0);
+ aSta.nBlay=0; // Kein BLay gueltig
+
+ do {
+ SetAlayTrans(); // Setze Translate je nach
+ if (ReadLn(aStg)) // Alay und lesen Absatz
+ {
+ if (aStg.Len()) aSta.cFrst='\0'; // Ignore ^L/^G if Stg!=""
+ if ((aSta.cFrst!=NewCol) &&
+ (aSta.cFrst!=NewPage))
+ {
+ rDoc.SetTxtFmtColl(rPaM,GetAlay());
+ if (!InsertLine(rDoc,rPaM,aStg,TestCtrl(
+ NewPage) || TestCtrl(NewCol)))
+ {
+ bErrs=TRUE;
+ }
+ }
+ }
+ else bErrs=TRUE;
+ } while (!bErrs && // Lese bis zum Ende des
+ (aSta.cFrst!=NewCol) && // Textes (Zeile mit ^L/^G)
+ (aSta.cFrst!=NewPage));
+
+ *rPaM.GetPoint()=aMerk; // PaM wieder zuruecksetzen
+ aSta.nAlay=nOldA; // Altes Layout zurueck
+ PopStat(); // Wieder zur Ausgangspos
+}
+
+BOOL Sw6Layout::InsertNote(SwDoc &rDoc,SwPaM &rPaM,USHORT nNote, BOOL bFuss)
+// Fuege eine Fuss/Endnote in den Text ein.
+// Gibt TRUE zurueck wenn tatsaechlich eine
+// Fuss- oder Endnote eingefuegt wurde.
+// Wenn nNote<0 dann Anmerkung->PostIt
+{
+ BOOL bRet=FALSE;
+
+ if (bFuss)
+ {
+ BOOL bErrs=FALSE;
+
+ PushStat(nNote&0x8000? // Suchen entweder Anmer-
+ pLay->ANotenLink: // kung oder FussNote raus
+ pLay->FNotenLink);
+ if (nNote&0x7FFF)
+ { // Suche Anfang dieser Note
+ bErrs=!IgnExtra(TRUE,nNote&0x7FFF); // Wenn das noetig ist.
+ }
+ if (!bErrs)
+ {
+ if (!(nNote&0x8000))
+ {
+ SwFmtFtn aFtn; // Ein Fussnotennode in
+ rDoc.Insert(rPaM,aFtn); // den Text einfuegen und
+ SwPaM aPaM(rPaM); // dann den Text dazu holen
+ aPaM.Move(fnMoveBackward,fnGoCntnt);
+ // Auf's Fussnotenzeichen
+ SwNodeIndex aSttIdx(*(((SwTxtFtn*)aPaM.GetNode()->
+ GetTxtNode()->GetTxtAttr(aPaM.GetPoint()->
+ nContent,RES_TXTATR_FTN))->GetStartNode()),1);
+ InsertExtra(rDoc,rPaM,aSttIdx,-1,"FN");
+ bRet=TRUE; // Hier alles Fehlerfrei...
+ }
+ else
+ {
+ String aStg,aNot; // Liess Anmerkung nach aNot
+ do // und verknuepfe mehrere
+ { // Absaetze zu einem String
+ if (ReadLn(aStg))
+ {
+ if (aStg.Len()) aSta.cFrst='\0';
+ if ((aSta.cFrst!=NewCol) &&
+ (aSta.cFrst!=NewPage))
+ {
+#ifdef WIN
+ if (aNot.Len()) aNot+="\r\n";
+#else
+ if (aNot.Len()) aNot+='\n';
+#endif
+ aNot+=aStg;
+ }
+ }
+ else bErrs=TRUE;
+ } while (!bErrs && // Lese bis zum Ende des
+ (aSta.cFrst!=NewCol) && // Textes (Zeile mit ^L/^G)
+ (aSta.cFrst!=NewPage));
+ if (!bErrs && aNot.Len())
+ {
+ Date aDate;
+ String aLeer;
+
+ SwPostItField aFld((SwPostItFieldType*)
+ rDoc.GetSysFldType(RES_POSTITFLD),
+ pDocInfo?pDocInfo->Autor:aLeer,aNot,aDate);
+ rDoc.Insert(rPaM,SwFmtFld(aFld));
+ bRet=TRUE;
+ }
+ }
+ }
+ PopStat(); // Wieder zur Ausgangspos
+ }
+ return bRet;
+}
+
+static SwTxtFmtColl* _GetTxtColl( SwDoc* pDoc, const String& rName,
+ const String& rKey )
+{
+ USHORT n;
+
+ // 1. Runde: ist der Name ein Poolformatname?
+ if( rName.Len() &&
+ USHRT_MAX != (n = SwStyleNameMapper::GetPoolIdFromUIName( rName, GET_POOLID_TXTCOLL )) )
+ return pDoc->GetTxtCollFromPoolSimple( n, FALSE );
+
+ // 2. Runde: ueber den Namen suchen; ueber den vollstaendigen !
+ String sNm( rKey );
+ if( rName.Len() )
+ {
+ sNm += ' ';
+ sNm += rName;
+ }
+
+ SwTxtFmtColl* pColl = pDoc->FindTxtFmtCollByName( sNm );
+ if( !pColl )
+ pColl = pDoc->MakeTxtFmtColl( sNm, (SwTxtFmtColl*)pDoc->GetDfltTxtFmtColl() );
+ return pColl;
+}
+
+static SwCharFmt* _GetCharFmt( SwDoc* pDoc, const String& rName,
+ const String& rKey )
+{
+ USHORT n;
+
+ // 1. Runde: ist der Name ein Poolformatname?
+ if( rName.Len() &&
+ USHRT_MAX != (n = SwStyleNameMapper::GetPoolIdFromUIName( rName, GET_POOLID_CHRFMT )) )
+ return pDoc->GetCharFmtFromPool( n );
+
+ // 2. Runde: ueber den Namen suchen
+ String sNm( rKey );
+ if( rName.Len() )
+ {
+ sNm += ' ';
+ sNm += rName;
+ }
+
+ SwCharFmt* pFmt = pDoc->FindCharFmtByName( sNm );
+ if( !pFmt )
+ pFmt = pDoc->MakeCharFmt( sNm, pDoc->GetDfltCharFmt() );
+ return pFmt;
+}
+
+void Sw6Layout::InsertLayouts(SwDoc &rDoc, SwPaM *pPaM)
+// Schiesst alle Layouts in das Dokument
+{
+ short Idx; // Index fuer Layouts
+
+ SwFtnInfo aInfo;
+ aInfo=rDoc.GetFtnInfo(); // Wow: was 'ne Aktion...!
+ aInfo.ePos=FTNPOS_PAGE; // GetFntInfo ist const &
+ rDoc.SetFtnInfo(aInfo);
+
+ for (Idx=pLay->NumBlay-1; Idx>=0; Idx--)
+ {
+ BLAY *pBly=pLay->FileBlay[Idx]; // Zeiger auf aktuelles Blay
+ // Erzeuge neues SwCharFmt
+ pBly->pCharFmt = _GetCharFmt( &rDoc, pBly->Remark, pBly->Key );
+
+ pBly->bTran=TransFSA(*pBly-> // Uebertrage die Fontnummer
+ pCharFmt,pBly->BFNum, // und die Attribute aus SW
+ pBly->BFSiz,pBly->BAttr); // in die SWG-Umgebung
+ } // for pLay->NumBlay
+
+ for (Idx=0; Idx<pLay->NumAlay; Idx++)
+ {
+ ALAY *pAly=pLay->FileAlay[Idx]; // Zeiger auf aktuelles Alay
+ // Suche/Erzeuge SwTxtFmtColl
+ pAly->pFmtColl = _GetTxtColl( &rDoc, pAly->Remark, pAly->Key );
+
+ SfxItemSet aSet( *pAly->pFmtColl->GetAttrSet().GetPool(),
+ pAly->pFmtColl->GetAttrSet().GetRanges() );
+ // Gliederebene setzen
+ pAly->pFmtColl->SetOutlineLevel( pAly->GliedLay>0
+ ? pAly->GliedLay-1
+ : NO_NUMBERING );
+
+ if (pAly->ABlay!=0) // BLay-Nummer ist gueltig?
+ {
+ BLAY *pBly=pLay->FileBlay[pAly->ABlay-1];
+
+ pAly->bTran=pBly->bTran; // Merke auch Uebersetzung
+#ifdef JP_NEWCORE
+JP 29.09.94: zur Zeit keine Zeichen-Vorlage an der Format-Vorlage
+ pAly->pFmtColl->SetCharFmt( // Trage das Blay am Alay ein
+ pBly->pCharFmt);
+#endif
+ }
+ else
+ { // Harter Font/SSize/Attr
+ pAly->bTran=TransFSA( // Merke ob Trans OEM->Dflt
+ *pAly->pFmtColl, // Aendere SwCharFmt Alay
+ pAly->AFNum,pAly->AFSiz,pAly->AAttr);
+ }
+ SvxLRSpaceItem aLR; // Linken und rechten
+ aLR.SetLeft(USHORT(pAly->LRand)); // Absatzeinzug bestimmen
+ aLR.SetRight(USHORT(pAly->RRand));
+ aLR.SetTxtFirstLineOfst( // Einzug erste Zeile
+ USHORT(pAly->Einzug-pAly->LRand));
+ aSet.Put( aLR );
+
+ SvxULSpaceItem aUL; // Absatzabstand setzen
+ aUL.SetUpper(USHORT(pAly->ORand));
+ aSet.Put( aUL );
+
+ SvxLineSpacingItem aLSpc; // Height=0, Methode MIN, INTER_OFF
+ aLSpc.SetLineHeight(pAly->ZlAbstand);
+
+ if (pAly->AutoZlAb) // ZlAbstand Durchschuss?
+ {
+ aLSpc.SetLineHeight(0);
+ aLSpc.GetLineSpaceRule() = SVX_LINE_SPACE_AUTO;
+ aLSpc.SetInterLineSpace(pAly->ZlAbstand);
+ }
+ aSet.Put( aLSpc ); // Abstand uebergeben
+
+ aSet.Put( SvxAdjustItem(TransAdj(pAly->FormatFlg) ));
+ aSet.Put( SvxFmtSplitItem(!pAly->Zusammen) ); // Absatz zusammenhalten?
+
+ if (pAly->FrmArt&0x1F && pAly->LinLTyp>1)
+ {
+ if (pAly->FrmArt&0x10) // Falls Rahmen drumherum
+ pAly->FrmArt|=0x0F;
+ ColorData eColor=COL_BLACK; // Zu verwendende Farbe
+ switch (pAly->LinLTyp)
+ {
+ case 2:
+ case 3:
+ eColor=COL_WHITE;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ eColor=COL_LIGHTGRAY;
+ break;
+ case 7:
+ case 8:
+ eColor=COL_GRAY;
+ } // switch
+ SvxBoxItem aFBox;
+ Color aColor(eColor);
+ SwLineType aLTyp=GetLineType((USHORT)(pAly->
+ FrmWdth>10*20?10:pAly->FrmWdth/20));
+ SvxBorderLine aBord(&aColor,aLTyp.
+ nOut,aLTyp.nIn,aLTyp.nDist);
+
+ aFBox.SetDistance((USHORT)pAly->FrmAbst);
+ if (pAly->FrmArt&0x2)
+ aFBox.SetLine (&aBord, BOX_LINE_RIGHT);
+ if (pAly->FrmArt&0x8)
+ aFBox.SetLine (&aBord, BOX_LINE_BOTTOM);
+ if (pAly->FrmArt&0x1)
+ aFBox.SetLine (&aBord, BOX_LINE_LEFT);
+ if (pAly->FrmArt&0x4)
+ aFBox.SetLine (&aBord, BOX_LINE_TOP);
+ aSet.Put( aFBox );
+ }
+ if (pAly->LinRTyp>1)
+ {
+ ColorData eColor=COL_BLACK;
+// BrushStyle eBrush=BRUSH_SOLID;
+ switch (pAly->LinRTyp)
+ {
+ case 2:eColor=COL_WHITE; break;
+// case 3:eBrush=BRUSH_UPDIAG; break;
+// case 4:eBrush=BRUSH_DOWNDIAG; break;
+// case 5:eBrush=BRUSH_CROSS; break;
+// case 6:eBrush=BRUSH_DIAGCROSS; break;
+// case 7:eBrush=BRUSH_25; break;
+// case 8:eBrush=BRUSH_50; break;
+// case 9:eBrush=BRUSH_75; break;
+ } // switch
+// Brush aBrush=Brush(Color(eColor),eBrush);
+// aBrush.SetTransparent(FALSE);
+ Color aTmpColor(eColor);
+ SvxBrushItem aBack( aTmpColor, RES_BACKGROUND);
+ aSet.Put( aBack );
+ }
+
+ SvxTabStopItem aTabs(0,0); // Erzeuge Tab-Tabelle
+ for (short n=0; n<pAly->MaxTabs; n++) // muss sein, falls LRand &
+ { // und Einzug ungleich sind
+ InsertTab(n,pAly->Tabs[n],
+ aTabs,pAly->LRand);
+ }
+ aSet.Put( aTabs ); // Alle Tabs ins Format
+ pAly->pFmtColl->SetAttr( aSet );
+ } // for pLay->NumAlay
+
+ for (Idx=0; Idx<pLay->NumSlay; Idx++)
+ {
+ USHORT nPageDesc=0;
+ SLAY *pSly=pLay->FileSlay[Idx]; // Zeiger auf aktuelles Slay
+ String aNam=pSly->Key;
+ if (pSly->Remark.Len())
+ aNam+=' ';
+ aNam += pSly->Remark;
+
+ if (Idx!=0) // Default Pagedesc ein-
+ { // fach ueberschreiben oder
+ nPageDesc=rDoc.MakePageDesc(aNam, 0, FALSE);
+ // sonst einen neuen machen
+ }
+
+ SwPageDesc &rPg=(SwPageDesc &)rDoc.
+ GetPageDesc(nPageDesc);
+
+ if (Idx==0) rPg.SetName(aNam); // setze den Follow-PageDesc
+ rPg.SetFollow(&rPg); // erstmal auf sich selbst
+ rPg.SetUseOn((UseOnPage)(PD_ALL|PD_HEADERSHARE|PD_FOOTERSHARE));
+
+ if (Idx==0)
+ { // 1.Slay auch gueltig machen
+ rDoc.Insert(*pPaM,SwFmtPageDesc(
+ &rDoc.GetPageDesc(nPageDesc)));
+ }
+ // Seitenhoehe einstellen
+ SwFrmFmt &rFmt=rPg.GetMaster();
+ SwFmtFrmSize aSiz(rFmt.GetFrmSize());
+ aSiz.SetWidth(pLay->PapierBrt); // Setze Papierbreite
+ aSiz.SetHeight(pLay->PapierLen); // Setze Papierlaenge
+ rFmt.SetAttr(aSiz); // Melde Dokumentformat an
+
+ { // Seitenformat setzen
+ SvxLRSpaceItem aLR(rFmt.GetLRSpace());
+ aLR.SetLeft(USHORT(pSly->LRand));
+ aLR.SetRight(USHORT(pSly->RRand));
+ rFmt.SetAttr(aLR);
+
+ SvxULSpaceItem aUL(rFmt.GetULSpace());
+
+ if (pSly->KopfHoch>pSly->ORand) // Begrenze Kopftexthoehe
+ pSly->KopfHoch=pSly->ORand; // und den Kopftextabstand
+ if (pSly->KopfAbst>pSly->ORand-pSly->KopfHoch)
+ pSly->KopfAbst=pSly->ORand-pSly->KopfHoch;
+ if (pSly->KopfHoch) // Kopftext ueberhaupt da?
+ {
+ aUL.SetUpper(USHORT(pSly->KopfAbst));
+ }
+ else aUL.SetUpper(USHORT(pSly->ORand));
+
+ if (pSly->FussAbst>pSly->URand) // Begrenze Fusstextabstand
+ pSly->FussAbst=pSly->URand; // und die Fusstexthoehe
+ if (pSly->FussHoch>pSly->FussAbst)
+ pSly->FussHoch=pSly->FussAbst;
+ if (pSly->FussHoch) // Fusstext ueberhaupt da?
+ {
+ aUL.SetLower((USHORT(pSly->FussAbst- // UL.Lower auf den
+ pSly->FussHoch))); // Fusstextabstand
+ }
+ else aUL.SetLower(USHORT(pSly->URand));
+
+ rFmt.SetAttr(aUL);
+ }
+ { // Abst and Kopftext setzen
+
+ rFmt.SetAttr(SwFmtHeader( // Evt. kein Kopftext...
+ pSly->KopfHoch!=0));
+ if (pSly->KopfHoch!=0)
+ {
+ SwFrmFmt *pFmt=(SwFrmFmt*)rFmt.
+ GetHeader().GetHeaderFmt();
+ SvxULSpaceItem aUL(pFmt->GetULSpace());
+ aUL.SetUpper(0);
+ aUL.SetLower(USHORT(pSly->ORand-pSly->
+ KopfAbst-pSly->KopfHoch));
+ pFmt->SetAttr(aUL); // Attribute Kopftext setzen
+ SwNodeIndex aIdx( *pFmt->GetCntnt().GetCntntIdx(), 1 );
+ InsertExtra(rDoc,*pPaM,aIdx, // Eigentlichen Text einlesen
+ pSly->KopfText,"KO");
+ }
+ }
+ { // Abstand Fusstext setzen
+ rFmt.SetAttr(SwFmtFooter( // Evt. kein Fusstext...
+ pSly->FussHoch!=0));
+ if (pSly->FussHoch!=0)
+ {
+ SwFrmFmt *pFmt=(SwFrmFmt*)rFmt.
+ GetFooter().GetFooterFmt();
+ SvxULSpaceItem aUL(pFmt->GetULSpace());
+ aUL.SetUpper(USHORT(pSly->
+ URand-pSly->FussAbst));
+ aUL.SetLower(0);
+ pFmt->SetAttr(aUL); // Attribute Fusstext setzen
+ SwNodeIndex aIdx( *pFmt->GetCntnt().GetCntntIdx(), 1 );
+ InsertExtra(rDoc,*pPaM,aIdx, // Eigentlichen Text einlesen
+ pSly->FussText,"FU");
+ }
+ }
+ { // Fussnoteninfo setzen
+ SwPageFtnInfo aInfo(rPg.GetFtnInfo());
+
+// Pen aPen(aInfo.GetPen());
+// aPen.SetStyle(pLay->FNotenLin?PEN_SOLID:PEN_NULL);
+ if(!pLay->FNotenLin)
+ aInfo.SetLineColor(Color(COL_TRANSPARENT));
+
+ switch (pLay->FNotSForm)
+ {
+ case RechtsSatz:
+ aInfo.SetAdj(FTNADJ_RIGHT);
+ break;
+ case ZentrSatz:
+ aInfo.SetAdj(FTNADJ_CENTER);
+ break;
+ default:
+ aInfo.SetAdj(FTNADJ_LEFT);
+ break;
+ } // switch
+ aInfo.SetWidth(Fraction(pLay->FNotSPerc,100));
+ if (pLay->FNotURand>aInfo.GetTopDist())
+ {
+ aInfo.SetTopDist(pLay->FNotURand);
+ }
+ rPg.SetFtnInfo(aInfo);
+ }
+ rDoc.ChgPageDesc(nPageDesc,rPg);
+ } // for pLay->NumSlay
+}
+
+void Sw6Layout::InsertAForm(SwDoc &rDoc,SwPaM &rPaM,BYTE *pCtrl)
+// Gibt einem Absatz die spezielle Form, die der wohl
+// soll; mittels harter Formatierung ist dies moeglich
+{
+ SvxLineSpacingItem aLSpc; // Zum Zeilenabstand setzen
+ SvxLRSpaceItem aLR; // Zum link/rechten Rand setzen
+ SvxULSpaceItem aUL; // Zum Absatztabstand setzen
+ SwTxtNode *pTxt; // Aktueller Absatz
+ SwAttrSet* pSet; // aktuelle Format-Attribute
+ short nWert; // Wert Zeilenabstand/Raender
+
+ if (NULL!=(pTxt=rDoc.GetNodes()[rPaM.
+ GetPoint()->nNode]->GetTxtNode()) &&
+ NULL!=(pSet=&pTxt->GetSwAttrSet()) )
+ {
+ // Hole Wert in Twips und evt. drehen
+ nWert=SVBT16ToShort(&pCtrl[2]);
+ switch (pCtrl[1]) // Je nach Absatzformataenderung
+ {
+ case AF_Ein: // Einrueckung Twips
+ case AF_Lks: // Linker Rand Twips
+ {
+ SwTwips nLRnd; // Linker Rand Absatz (absolut)
+ SwTwips nEinz; // Einzug Absatz (absolut)
+ SwTwips nTemp; // Temporaerwert
+
+ const SvxLRSpaceItem& rLR = pSet->GetLRSpace();
+ nLRnd=rLR.GetLeft();
+ if ((nTemp=nEinz=rLR.GetTxtFirstLineOfst())<0)
+ {
+ nEinz=nLRnd; // Der einfachheit halber Einzug
+ nLRnd-=nTemp; // und LRand als Absolutwerte
+ }
+ else nEinz+=nLRnd;
+ // Raender neu setzen
+ if (pCtrl[1]==AF_Ein)
+ nEinz=nWert;
+ else
+ nLRnd=nWert;
+
+ aLR.SetLeft((USHORT)(nEinz<nLRnd?nEinz:nLRnd));
+ aLR.SetRight(rLR.GetRight());
+ aLR.SetTxtFirstLineOfst((USHORT)(nEinz-nLRnd));
+
+ rDoc.Insert(rPaM,aLR); // Und dann Raender hart rein...
+ }
+ break;
+ case AF_Rts: // Rechter Rand Twips
+ aLR.SetLeft(pSet->GetLRSpace().GetLeft());
+ aLR.SetRight(nWert);
+ rDoc.Insert(rPaM,aLR);
+ break;
+ case AF_AbAb: // Absatzabstand Twips
+ aUL.SetUpper(nWert);
+ aUL.SetLower(pSet->GetULSpace().GetLower());
+ rDoc.Insert(rPaM,aUL);
+ break;
+ case AF_Form: // Absatzformat Enum
+ rDoc.Insert(rPaM,SvxAdjustItem(
+ TransAdj((SATZTYP)pCtrl[2])));
+ break;
+ case AF_SpAb: // Spaltenabstand Twips
+ break;
+ case AF_SpAn: // Spaltenanzahl Byte
+ break;
+ case AF_SAbs: // Spaltenabsatz Bool
+ break;
+ case AF_Auto: // Durchschuss Bool
+ nWert=(pSet->GetLineSpacing().GetInterLineSpaceRule()
+ ==SVX_INTER_LINE_SPACE_OFF) ?
+ pSet->GetLineSpacing().GetInterLineSpace():
+ pSet->GetLineSpacing().GetLineHeight();
+
+ aLSpc.SetLineHeight(nWert);
+ if (pCtrl[2]!='\0')
+ {
+ aLSpc.SetLineHeight(0);
+ aLSpc.GetLineSpaceRule() = SVX_LINE_SPACE_AUTO;
+ aLSpc.SetInterLineSpace(nWert);
+ }
+ rDoc.Insert(rPaM,aLSpc);
+ break;
+ case AF_ZlAb: // Zeilenabstand Twips
+ aLSpc.SetLineHeight(nWert);
+ if (pSet->GetLineSpacing().GetInterLineSpaceRule()
+ !=SVX_INTER_LINE_SPACE_OFF)
+ {
+ aLSpc.SetLineHeight(0);
+ aLSpc.GetLineSpaceRule() = SVX_LINE_SPACE_AUTO;
+ aLSpc.SetInterLineSpace(nWert);
+ }
+ rDoc.Insert(rPaM,aLSpc);
+ break;
+ case AF_Glied: // Gliederungslay Enum
+ break;
+ case AF_Tab: // Tabulator alt Struct
+ case AF_TabN: // Tabulator neu Struct
+ {
+ TABU aTab; // Ein SW6-Tab
+ SvxTabStopItem aTabs(0,0); // Eine neue Tab-Tabelle
+
+ aTab.TabArt=(TABARTEN)(pCtrl[2]);
+ aTab.TabPos=SVBT16ToShort(&pCtrl[3]);
+ aTab.TabZch=(pCtrl[1]==AF_TabN)?pCtrl[5]:'\0';
+ if (aTab.TabArt>Tab_D)
+ {
+ aTab.TabZch='.';
+ aTab.TabArt=(TABARTEN)(aTab.TabArt & 3);
+ }
+ for (USHORT n=0; n<pSet->GetTabStops().Count(); n++)
+ {
+ aTabs.Insert(pSet->GetTabStops()[n]);
+ }
+ InsertTab(pSet->GetTabStops().Count(),aTab,
+ aTabs,pSet->GetLRSpace().GetTxtLeft());
+ rDoc.Insert(rPaM,aTabs);
+ break;
+ }
+ case AF_Zus: // Zusammenhalten
+ rDoc.Insert(rPaM,SvxFmtSplitItem(pCtrl[2]));
+ break;
+ } // switch
+ }
+}
+
+void Sw6Layout::InsertTOX(SwDoc &rDoc,SwPaM &rPaM,
+ USHORT nLen,HFORM *pTmp,TOXTypes eTyp)
+// Kramt vom HFORM Stack den Rest eines
+// Inhalts bzw. Indexeintrages zusammen
+{
+ const USHORT nToxID=0; // Leider nur ToxID==0
+
+ if (!rDoc.GetTOXTypeCount(eTyp)) // Noch keine TOX
+ { // da: mache neue
+ rDoc.InsertTOXType(SwTOXType( // Die Namen sind leider
+ eTyp,
+ String::CreateFromAscii(
+ eTyp==TOX_INDEX? // hart Kodiert, weil der
+ "Stichwortverzeichnis": // ctor zu bloed ist...
+ "Inhaltsverzeichnis")));
+ }
+
+ String aEntry; // TOX Entrystring
+ USHORT nMzAnz=0; // Anzahl markiert Zeichen
+
+ if (pTmp->cDat[0]<' ') // Kein Textbefehl?
+ { // Suche das Ende
+ HFORM *pScd=pTmp->pNxt; // der Markierung
+ USHORT nKor=0; // Korrektur fuer Felder
+
+ while (pScd && !nMzAnz) // oder evt. auch
+ { // {INDEX-Befehle}
+ nKor+=pScd->nXtd;
+ if (pScd->cDat[0]<' ')
+ {
+ if (pTmp->cDat[0]==pScd->cDat[0])
+ {
+ nMzAnz=pScd->nOfs-pTmp->nOfs-nKor;
+ pScd->cDat[0]='@'; // HForm ungueltig
+ }
+ }
+ else
+ { if ((pScd->cDat[0]=='V' ||
+ pScd->cDat[0]=='W') &&
+ ((pTmp->cDat[0]==InhKenn) // Wenn Addon mittels Text-
+ ==(pScd->cDat[0]=='V'))) // befehl addiere aEntry+Bef
+ {
+ aEntry+=String((sal_Char *)&pScd->
+ cDat[2],pScd->cDat[1]);
+ pScd->cDat[0]='@'; // HForm ungueltig
+ }
+ }
+ pScd=pScd->pNxt; // Naechsten HFORM
+ } // while
+ if (!nMzAnz)
+ {
+ nMzAnz+=nLen-pTmp->nOfs; // Default bis EndOfLine
+ }
+ }
+ else
+ {
+ aEntry=String((sal_Char *)&pTmp-> // Einfach nur einen
+ cDat[2],pTmp->cDat[1]); // neuen Eintrag schreiben
+ }
+ SwTOXMark aMark(rDoc. // Mache eine neue TOX-Marke
+ GetTOXType(eTyp,nToxID)); // und lasse sie von der
+ if (aEntry.Len()) // derzeitigen Position aus
+ { // nMzAnz Zeichen markieren
+ aMark.SetAlternativeText(aEntry);
+ }
+ if (eTyp==TOX_CONTENT) aMark.SetLevel(1); // Level muss man setzen!
+
+ if( !aEntry.Len() )
+ {
+ rPaM.SetMark();
+ rPaM.GetMark()->nContent += nMzAnz;
+ }
+ rDoc.Insert( rPaM, aMark );
+ if( !aEntry.Len() )
+ rPaM.DeleteMark();
+}
+
+extern void sw3io_ConvertFromOldField( SwDoc& rDoc, USHORT& rWhich,
+ USHORT& rSubType, UINT32 &rFmt,
+ USHORT nVersion );
+
+BOOL Sw6Layout::InsertLine(SwDoc &rDoc,SwPaM &rPaM,String &rStg,BOOL bLast)
+// Fuege eine neuen Zeile bei rPam ein
+{
+ if ((rStg.Len()==0 ||
+ rDoc.Insert(rPaM, rStg)) &&
+ (bLast || rDoc.SplitNode(*rPaM.GetPoint())))
+ {
+ if (aSta.pFrmt) // Gibt es harte Forminfo?
+ {
+ HFORM *pTmp=aSta.pFrmt; // Klapper HForm-Stack durch
+
+ SwPaM aPaM(rPaM); // NeuPaM, zeigt auf AbsAnf
+ aPaM.DeleteMark(); // Falls Mark noch gesetzt
+ if (!bLast) aPaM.Move( // Absatz zurueck falls ein
+ fnMoveBackward,fnGoNode); // Splitnode war
+
+ while (pTmp)
+ {
+ USHORT nEnd=rDoc.GetNodes()[ // Merke jetzige Absatzlaenge
+ aPaM.GetPoint()->nNode]->
+ GetTxtNode()->GetTxt().Len();
+ aPaM.GetPoint()->nContent=pTmp->nOfs;
+ switch (pTmp->cDat[0])
+ {
+ case TabZch:
+ {
+ ALAY *pTmpLay=pLay->FileAlay[aSta.nAlay];
+ if (pTmp->nOfs!=0 || // Autotab hier unnoetig
+ pTmpLay->GliedLay==0 ||
+ pTmpLay->LRand==pTmpLay->Einzug)
+ {
+ rDoc.Insert(aPaM,'\t');
+ HFORM *pScd=pTmp->pNxt;
+
+ while (pScd) // Alle Zeichen verschieben
+ { // sich weil ContentNode
+ if (pScd->nOfs>pTmp->nOfs)
+ {
+ pScd->nOfs++;
+ }
+ pScd=pScd->pNxt;
+ }
+ }
+ }
+ break;
+ case PrGraf:
+ {
+ String aTrb; // Treibername
+ String aNam; // Gemerkte Name falls Fehler
+ // Attribute fuer FlyFrames
+ SfxItemSet aFAtt(rDoc.GetAttrPool(),
+ RES_FRMATR_BEGIN,
+ RES_FRMATR_END-1 );
+ GRAFDESC aGrf;
+
+ aGrf.Hoch =SVBT16ToShort(&pTmp->cDat[2]);
+ aGrf.Breit=SVBT16ToShort(&pTmp->cDat[4]);
+ aGrf.Rand =SVBT16ToShort(&pTmp->cDat[6]);
+ aGrf.Rahm =SVBT8ToByte(&pTmp->cDat[8]);
+ aGrf.Bund =(GBUNDTYP)SVBT8ToByte(&pTmp->cDat[9]);
+ aGrf.Form =(GRAFSTAT)SVBT8ToByte(&pTmp->cDat[12]);
+ aGrf.Flag =SVBT8ToByte(&pTmp->cDat[14]);
+ for (USHORT n=0;n<pTmp->cDat[15];n++)
+ {
+ aNam+=(sal_Char)pTmp->cDat[n+16];
+ }
+
+ // search the correct path of the graphic
+ aNam = ::binfilter::StaticBaseUrl::SmartRelToAbs( aNam );
+ if( !::binfilter::IsDocument( aNam ) )
+ {
+ String sFNm( INetURLObject( aNam ).getName() );
+ INetURLObject aURL( *pMyName );
+ aURL.setName( sFNm );
+ String sSrchGrf( aURL.GetMainURL(
+ INetURLObject::NO_DECODE ));
+ if( ::binfilter::IsDocument( sSrchGrf ) )
+ aNam = sSrchGrf;
+ else
+ {
+ SvtPathOptions aPathOpt;
+ if( aPathOpt.SearchFile( sFNm,
+ SvtPathOptions::PATH_MODULE ))
+ aNam = sFNm;
+ }
+ }
+
+#define MAX_BORDER_SIZE 210 // So Breit ist max. der Border
+#define MAX_EMPTY_BORDER 1 // So Breit wenn kein Rahmen drum
+
+ SwTwips nMaxi=MAX_EMPTY_BORDER;
+ if ((aGrf.Rahm&0xf)>1)
+ {
+ SvxBoxItem aFBox;
+ SwLineType aLTyp=GetLineType(
+ (aGrf.Rahm&0xf)==3?5:1);
+ Color aColor(COL_BLACK);
+ SvxBorderLine aBord(&aColor,aLTyp.
+ nOut,aLTyp.nIn,aLTyp.nDist);
+
+ aFBox.SetLine (&aBord, BOX_LINE_RIGHT);
+ aFBox.SetLine (&aBord, BOX_LINE_BOTTOM);
+ aFBox.SetLine (&aBord, BOX_LINE_LEFT);
+ aFBox.SetLine (&aBord, BOX_LINE_TOP);
+ aFAtt.Put(aFBox);
+ nMaxi=MAX_BORDER_SIZE;
+ }
+ SvxULSpaceItem aUL;
+ SvxLRSpaceItem aLR;
+
+ aUL.SetUpper(USHORT(aGrf.Rand));
+ aUL.SetLower(USHORT(aGrf.Rand));
+ aLR.SetLeft (USHORT(aGrf.Rand));
+ aLR.SetRight(USHORT(aGrf.Rand));
+ aFAtt.Put(aUL);
+ aFAtt.Put(aLR);
+
+ if (aGrf.Breit<MINFLY+2*aGrf.Rand+nMaxi)
+ aGrf.Breit=MINFLY+2*aGrf.Rand+nMaxi;
+ if (aGrf.Hoch<MINFLY+2*aGrf.Rand+nMaxi)
+ aGrf.Hoch=MINFLY+2*aGrf.Rand+nMaxi;
+
+ aFAtt.Put(SwFmtFrmSize(ATT_FIX_SIZE,
+ aGrf.Breit+2*aGrf.Rand,
+ aGrf.Hoch+2*aGrf.Rand));
+
+ switch (aGrf.Bund)
+ {
+ case G_Nicht:
+ aFAtt.Put(SwFmtHoriOrient(
+ 0,HORI_NONE));
+ break;
+ case G_Rechts:
+ aFAtt.Put(SwFmtHoriOrient(
+ 0,HORI_RIGHT));
+ break;
+ case G_Zent:
+ aFAtt.Put(SwFmtHoriOrient(
+ 0,HORI_CENTER));
+ break;
+ default:
+ aFAtt.Put(SwFmtHoriOrient(
+ 0,HORI_LEFT));
+ break;
+ }
+
+ rDoc.Insert( aPaM, aNam, aTrb,NULL, &aFAtt, 0 );
+ }
+ break;
+ case PrFnote:
+ case PrEnote:
+ {
+ InsertNote(rDoc,aPaM,
+ SVBT16ToShort(&pTmp->cDat[1]),
+ pTmp->cDat[0]==PrFnote);
+
+ HFORM *pScd=pTmp->pNxt; // Fnote ist Ctent
+ while (pScd) // Daher verschiebt
+ { // sich alle HForm
+ if (pScd->nOfs>pTmp->nOfs)
+ {
+ pScd->nOfs++;
+ }
+ pScd=pScd->pNxt;
+ }
+ }
+ break;
+ case PrAttr:
+ {
+
+ HFORM *pScd=pTmp->pNxt; // Suche dann das Pedant
+ USHORT nKor=0; // Korrigiere nAdd zurueck
+
+ while (pScd && (pScd->cDat[0]!=PrAttr ||
+ pScd->cDat[1]!=pTmp->cDat[1]))
+ {
+ nKor+=pScd->nXtd;
+ pScd=pScd->pNxt;
+ }
+ if (pScd)
+ {
+ pScd->cDat[0]='@'; // Pedant ungueltig machen
+ nEnd=pScd->nOfs-nKor; // Merken neuen Ende-Offs im Absatz
+// Falls ueber AddHForm eine Korrektur (nAdd) fuer druckbare Zeichen an-
+// gegeben wurde, muss diese Korrektur hier rueckgaengig gemacht werden,
+// weil dieses "druckbare" Zeichen nun erst spaeter eingefuegt wird.
+ }
+ if (pTmp->nOfs<nEnd && pTmp->cDat[1]>0 &&
+ pTmp->cDat[1]<ATTRBITS_END)
+ { // Lohnt sonst nicht
+ SwPaM aTmpPaM(aPaM); // Noch'n PaM
+ aTmpPaM.SetMark();
+ aTmpPaM.GetPoint()-> // Zum Ende Attribut
+ nContent+=(nEnd-pTmp->nOfs);
+ SfxPoolItem *pFmt=TransAtt(
+ (ATTRBITS)pTmp->cDat[1],
+ (pLay->FileAlay[aSta.nAlay]->
+ AAttr & (1<<pTmp->cDat[1]))==0,
+ pLay->FileAlay[aSta.nAlay]->AFSiz*10);
+ if (pFmt)
+ {
+ rDoc.Insert(aTmpPaM,*pFmt);
+ delete pFmt;
+ }
+ }
+ break;
+ }
+ case PrFont:
+ {
+ SvxFontItem &rTmpFnt=(SvxFontItem &)pLay->
+ FileAlay[aSta.nAlay]->pFmtColl->GetFont();
+
+ FontFamily eFam=rTmpFnt.GetFamily();
+ FontPitch ePit=rTmpFnt.GetPitch();
+ CharSet eSet=rTmpFnt.GetCharSet();
+ String aNam=rTmpFnt.GetFamilyName();
+ String aSty=rTmpFnt.GetStyleName();
+
+ short nFnt=pTmp->cDat[1];
+
+ if (nFnt==0)
+ {
+ nFnt=pLay->FileAlay[aSta.nAlay]->AFNum;
+ }
+
+ SwPaM aTmpPaM(aPaM); // Noch'n PaM
+ aTmpPaM.SetMark(); // Setze Markanf
+ aTmpPaM.GetPoint()-> // Zum Ende des
+ nContent+=(nEnd- // Attributs
+ pTmp->nOfs); // setzen.
+ TransFnt(nFnt,eFam, // Font uebersetzen
+ ePit,eSet,aNam);
+ SetTrans(eSet==RTL_TEXTENCODING_IBM_850); // Evt. nicht trans
+ rDoc.Insert(aTmpPaM,SvxFontItem( // Nun Font ins Doc
+ eFam,aNam,aSty,ePit,RTL_TEXTENCODING_DONTKNOW));
+ }
+ break;
+ case PrSize:
+ {
+ short nSiz=pTmp->cDat[1];
+ if (nSiz==0)
+ {
+ nSiz=pLay->FileAlay[
+ aSta.nAlay]->AFSiz;
+ }
+
+ SwPaM aTmpPaM(aPaM); // Noch'n PaM
+ aTmpPaM.SetMark(); // Setze Markanf
+ aTmpPaM.GetPoint()-> // Zum Ende des
+ nContent+=(nEnd- // Attributs
+ pTmp->nOfs); // setzen.
+ rDoc.Insert(aTmpPaM, // Dann Fontsize
+ SvxFontHeightItem(nSiz*10)); // am Doc einfgen
+ }
+ break;
+ case PrAForm:
+ InsertAForm(rDoc,aPaM,pTmp->cDat);
+ break;
+ case HardSp: // HardSpace
+ rDoc.Insert(aPaM, CHAR_HARDBLANK);
+ break;
+ case STrenn: // Weicher Trenner
+ rDoc.Insert(aPaM,CHAR_SOFTHYPHEN);
+ break;
+ case 'B':
+ if (pTmp->cDat[1]!='\0') // Nur wenn Blay
+ { // neu gueltig ist
+ HFORM *pScd=pTmp->pNxt; // Suche immer das
+ USHORT nKor=0; // Gueltigkeitsende
+
+ while (pScd && pScd->cDat[0]!='B')
+ {
+ nKor+=pScd->nXtd;
+ pScd=pScd->pNxt;
+ }
+ if (pScd) // Sonst bis Absend
+ {
+ nEnd=pScd->nOfs-nKor;
+ }
+
+ SwPaM aTmpPaM(aPaM); // Noch'n PaM
+ aTmpPaM.SetMark(); // Setze Markanf
+ aTmpPaM.GetPoint()-> // Zum Ende Blay
+ nContent+=(nEnd-pTmp->nOfs);
+ BYTE nTmp=pTmp->cDat[1];
+ rDoc.Insert(aTmpPaM,
+ SwFmtCharFmt((pLay->FileBlay[
+ nTmp-1]->pCharFmt)));
+ }
+ break;
+ case NewPage:
+ rDoc.Insert(aPaM,SvxFmtBreakItem(SVX_BREAK_PAGE_BEFORE));
+ break;
+ case 'V':
+ case InhKenn:
+ InsertTOX(rDoc,aPaM,nEnd,pTmp,TOX_CONTENT);
+ break;
+ case 'X':
+ case IdxKenn:
+ InsertTOX(rDoc,aPaM,nEnd,pTmp,TOX_INDEX);
+ break;
+
+#define InsField(TypeName,ResName,FieldSet) \
+{ \
+ TypeName aFld((TypeName##Type*) \
+ rDoc.GetSysFldType(ResName)); \
+ aFld.ChangeFormat(FieldSet); \
+ rDoc.Insert(aPaM,SwFmtFld(aFld)); \
+}
+ case 'A':
+ InsField(SwAuthorField,RES_AUTHORFLD,AF_NAME);
+ break;
+ case 'P':
+ InsField(SwFileNameField,RES_FILENAMEFLD,FF_PATH);
+ break;
+ case 'S':
+ {
+ SwPageNumberField aFld((SwPageNumberFieldType*)
+ rDoc.GetSysFldType(RES_PAGENUMBERFLD),PG_RANDOM,SVX_NUM_ARABIC);
+ rDoc.Insert(aPaM,SwFmtFld(aFld));
+ break;
+ }
+ case 'U':
+ {
+ USHORT nSubType = TIMEFLD, nWhich = RES_DATETIMEFLD;
+ UINT32 nFormat = (UINT32)TF_SSMM_24;
+ sw3io_ConvertFromOldField( rDoc, nWhich, nSubType,
+ nFormat, 0x0110 );
+
+ SwDateTimeField aFld((SwDateTimeFieldType*)rDoc.GetSysFldType(RES_DATETIMEFLD), TIMEFLD, nFormat);
+ rDoc.Insert(aPaM,SwFmtFld(aFld));
+ //InsField(SwTimeField,RES_TIMEFLD,TF_SSMM_24);
+ break;
+ }
+ case 'N':
+ InsField(SwFileNameField,RES_FILENAMEFLD,FF_NAME);
+ break;
+ case 'd':
+ {
+ SwDateFormat eDat=DF_SSYS;
+ switch (pTmp->cDat[1])
+ {
+ case 'Z':eDat=DF_LSYS; break;
+ case 'B':eDat=DF_LMON; break;
+ case 'M':eDat=DF_LMONTH; break;
+ }
+ USHORT nSubType = DATEFLD, nWhich = RES_DATETIMEFLD;
+ UINT32 nFormat = (UINT32)eDat;
+
+ sw3io_ConvertFromOldField( rDoc, nWhich, nSubType,
+ nFormat, 0x0110 );
+
+ SwDateTimeField aFld((SwDateTimeFieldType*)rDoc.GetSysFldType(RES_DATETIMEFLD), DATEFLD, nFormat);
+ rDoc.Insert(aPaM,SwFmtFld(aFld));
+ //InsField(SwDateField,RES_DATEFLD,eDat);
+ }
+ break;
+ case 'i':
+ {
+ SwDocInfoSubType eTyp=DI_TITEL;
+ switch (pTmp->cDat[1])
+ {
+ case 'T':eTyp=DI_THEMA; break;
+ case 'S':eTyp=DI_KEYS; break;
+ }
+ SwDocInfoField aFld((SwDocInfoFieldType*)
+ rDoc.GetSysFldType(RES_DOCINFOFLD),eTyp);
+ rDoc.Insert(aPaM,SwFmtFld(aFld));
+ }
+ break;
+ case 's':
+ {
+ SwDocStatSubType eSta=DS_PARA;
+ switch (pTmp->cDat[1])
+ {
+ case 'W':eSta=DS_WORD; break;
+ case 'S':eSta=DS_PAGE; break;
+ }
+ InsField(SwDocStatField,RES_DOCSTATFLD,eSta);
+ }
+ break;
+ case '-':
+ case '+':
+ if (pTmp->cDat[0]=='-' || pTmp->cDat[2]=='_')
+ {
+ SwHiddenTxtField aFld((SwHiddenTxtFieldType*)
+ rDoc.GetSysFldType(RES_HIDDENTXTFLD),
+ FALSE,aEmptyStr,String((sal_Char *)(
+ pTmp->cDat+2),pTmp->cDat[1]));
+ rDoc.Insert(aPaM,SwFmtFld(aFld));
+ }
+ else
+ {
+ SwDBField aFld((SwDBFieldType*)rDoc.
+ InsertFldType(SwDBFieldType(&rDoc, String(
+ (sal_Char *)(pTmp->cDat+2),pTmp->cDat[1]), SwDBData())));
+ aFld.ChangeFormat(UF_STRING);
+ rDoc.Insert(aPaM,SwFmtFld(aFld));
+ }
+ break;
+ } // switch
+ pTmp=pTmp->pNxt;
+ } // while(pTmp)
+ } // if(pFrm)
+ }
+ else return FALSE; // Insert oder SplitNode ging nicht
+ return TRUE; // Ok.
+}
+
+Sw6Layout::Sw6Layout(SvStream &rInp,ULONG *pErrno,const String *pFileName): //$ istream
+ Sw6File(rInp,2048,258,pErrno),pMyName(pFileName),
+ pDocInfo(NULL), nLastFontMatch( USHRT_MAX ),
+ lLin(0)
+// Konstruktor der Klasse Sw6Layout
+{
+ pLay=new LAYDESC; // Neuer LAYDESC noetig
+ Glieder[0]=FALSE; // Noch keine Gliederungen
+ Glieder[1]=FALSE;
+ Glieder[2]=FALSE;
+ Glieder[3]=FALSE;
+ Glieder[4]=FALSE;
+}
+
+Sw6Layout::~Sw6Layout(void)
+// Destruktor Sw6Layout
+{
+ if (pLay) DELETEZ(pLay); // LAYDESC wech
+ DelHForm(); // Loesche noch pFrm
+}
+
+// --- SwSw6Parser ---
+
+BOOL SwSw6Parser::Ueberlese(const long Blk)
+// Ueberlesen eines Writer-Dateiblocks
+{
+ long Nxt;
+ String Stg;
+
+ Nxt=lLin+Blk;
+ while (lLin<Nxt)
+ {
+ if (!ReadLn(Stg)) return FALSE;
+ if (Eof())
+ {
+ *pErr=ERR_SW6_UNEXPECTED_EOF;
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+BOOL SwSw6Parser::ReadDocInfo(void)
+// Einlesen des DocInfo-Blocks
+// Wird auch gleich ins Doc gegeben
+{
+ BOOL bRet = FALSE, bIsTrans = IsTrans();
+ SetTrans( TRUE );
+
+ short Idx;
+ if (ReadLn(pDat->DocInfo.Autor) &&
+ ReadLn(pDat->DocInfo.Kateg))
+ {
+ bRet = TRUE;
+ pDat->DocInfo.Autor=pDat->DocInfo.Autor;
+ pDat->DocInfo.Kateg=pDat->DocInfo.Kateg;
+
+ for (Idx=0;Idx<4;Idx++)
+ {
+ String &rTmp=pDat->DocInfo.Thema[Idx];
+ if (ReadLn(rTmp))
+ {
+ rTmp.EraseLeadingChars();
+ rTmp.EraseTrailingChars();
+ }
+ else
+ {
+ bRet = FALSE;
+ break;
+ }
+ }
+ for (Idx=0;Idx<4;Idx++)
+ {
+ String &rTmp=pDat->DocInfo.Keys[Idx];
+ if (ReadLn(rTmp))
+ {
+ rTmp.EraseLeadingChars();
+ rTmp.EraseTrailingChars();
+ }
+ else
+ {
+ bRet = FALSE;
+ break;
+ }
+ }
+ }
+ SetTrans( bIsTrans );
+ return TRUE;
+}
+
+BOOL SwSw6Parser::CallParser()
+// Wird von ReadDoc aufgerufen. Gibt FALSE zurueck wenn es
+// einen Fehler gab. Ungeklaert ob Stream noch geschlossen
+// werden muss, und wer wie die Fehlermeldungen ausgibt...
+{
+ short Idx; // Index
+ short Anz; // Anzahl der Bloecke
+ long Blk[20]; // Zeilenzahl je Block
+ sal_Char Ver; // Versionskennung Datei
+ String Stg; // Zum Einlesen
+
+
+ if (Sw6LayoutOk() && pDat!=NULL) // Sonst gibt Aerger!!!
+ {
+ lLin=0; // Wieder von vorne
+ Seek(0);
+ if (!ReadLn(Stg))
+ return FALSE; // Lese Dateikennung
+ Ver = Stg.GetChar( ByteString(DOKUKENN).Search('#') );
+ Stg.SetChar((ByteString(DOKUKENN).Search('#')), '#');
+ if( Stg.EqualsAscii(DOKUKENN) )
+ {
+ if (!ReadLn(pDat->LayName)) // Name Layoutdatei
+ return FALSE;
+ if (!ReadLn(Stg)) // Druckerkennung
+ return FALSE;
+ while (Stg.Search('\\')!=STRING_NOTFOUND)
+ {
+ Stg.Erase(0,Stg.Search('\\')+1);
+ } // Nur den GPM-Dateinamen bitte
+ SetGpmFile(Stg); // Melde richtige Gpmdatei an
+
+ if (!ReadLn(Stg)) // Anzahl Bloecke
+ return FALSE;
+ if (0==(Anz=Stg.ToInt32()))
+ {
+ *pErr = ERR_SWG_FILE_FORMAT_ERROR;
+ return FALSE; // Es muessen mehrere Bloecke da sein
+ }
+ for (Idx=0; Idx<Anz; Idx++)
+ { // Lese Zeilen ein
+ if (!ReadLn(Stg))
+ return FALSE;
+ Blk[Idx]=Stg.ToInt32();
+ }
+ if (Anz>11 && Blk[11]!=0)
+ {
+ *pErr=ERR_SW6_PASSWD;
+ return FALSE; // Passwort-Dateien kann ich nicht
+ }
+ if (Anz>0) // LeseHistInfo
+ {
+ if (!Ueberlese(Blk[0])) return FALSE;
+ }
+ if (Anz>1) // LeseDocInfo
+ {
+ if (ReadDocInfo())
+ {
+ SfxDocumentInfo aInfo(*pDoc->GetInfo());
+ SfxStamp aTmp;
+ if (pDat->DocInfo.Autor.Len())
+ {
+ aTmp=aInfo.GetCreated();
+ aTmp.SetName(pDat->DocInfo.Autor);
+ aInfo.SetCreated(aTmp);
+ }
+ if (pDat->DocInfo.Kateg.Len())
+ {
+ aInfo.SetTitle(pDat->DocInfo.Kateg);
+ }
+ short n;
+ for (n=0; n<4; n++)
+ {
+ if (pDat->DocInfo.Thema[n].Len())
+ {
+ String s(aInfo.GetTheme());
+ if (s.Len() &&
+ s.GetChar( s.Len() ) !=' ' &&
+ s.GetChar( s.Len() ) !='-')
+ {
+ s.Insert(' ');
+ }
+ s+=pDat->DocInfo.Thema[n];
+ aInfo.SetTheme(s);
+ }
+ } // for n
+ for (n=0; n<4; n++)
+ {
+ if (pDat->DocInfo.Keys[n].Len())
+ {
+ String s(aInfo.GetKeywords());
+ if (s.Len() &&
+ s.GetChar( s.Len() )!=' ' &&
+ s.GetChar( s.Len() )!='-')
+ {
+ s.Insert(' ');
+ }
+ s+=pDat->DocInfo.Keys[n];
+ aInfo.SetKeywords(s);
+ }
+ } // for n
+ pDoc->SetInfo(aInfo);
+ }
+ else return FALSE;
+ }
+ if (Anz>2) // LeseLayInfo
+ {
+ if (!LeseLayInfo(Ver==AVERSION)) return FALSE;
+ }
+ if (Anz>3) // ReadExtra(FNotenlink)
+ {
+ MerkeNoten(FNot);
+ if (!IgnExtra(TRUE)) return FALSE;
+ }
+ if (Anz>4) // ReadExtra(ENotenLink)
+ {
+ MerkeNoten(ENot);
+ if (!IgnExtra(TRUE)) return FALSE;
+ }
+ if (Anz>5) // ReadExtra(ANotenLink)
+ {
+ MerkeNoten(ANot);
+ if (!IgnExtra(TRUE)) return FALSE;
+ }
+ if (Anz>6 && Blk[6]) // ReadHartKopf
+ {
+ if (!LeseKoFu(TRUE)) return FALSE;
+ }
+ if (Anz>7 && Blk[7]) // ReadHartFuss
+ {
+ if (!LeseKoFu(FALSE)) return FALSE;
+ }
+ for (Idx=8; Idx<Anz; Idx++)
+ { // Sonstige Bloecke ueberlesen
+ if (!Ueberlese(Blk[Idx])) return FALSE;
+ }
+ InsertLayouts(*pDoc,pPaM); // Layouts in das Dokument schieaen
+ ResetLay(*pDoc); // Ab hier wird Haupttext gelesen
+ if (Anz>11 && Blk[11]!=0)
+ {
+ if (!ActivatePass() ||
+ !ReadLn(Stg) || !Stg.EqualsAscii("PASS"))
+ {
+ *pErr=ERR_SW6_PASSWD;
+ return FALSE;
+ }
+ }
+ do { // Zeile Haupttext lesen
+ SetAlayTrans();
+ if (!ReadLn(Stg)) return FALSE;
+ pDoc->SetTxtFmtColl(*pPaM,GetAlay());
+ if (TstSlay()) SetSlay(*pDoc,*pPaM);
+ if (!InsertLine(*pDoc,*pPaM,Stg,Eof()))
+ {
+ return FALSE;
+ }
+ } while (!Eof()); // Rest der Datei bis eof()
+ *pErr = 0;
+ return TRUE;
+ }
+ else
+ {
+ *pErr=ERR_SW6_NOWRITER_FILE;
+ }
+ }
+ return FALSE;
+}
+
+SwSw6Parser::SwSw6Parser(SwDoc *pSwDoc,const SwPaM &rSwPaM,
+ SvStream *pIstream,BOOL bNewDoc,
+ ULONG *pErrno,const String *pFileName):
+ pDoc(pSwDoc),bNew(bNewDoc),
+ Sw6Layout(*pIstream,pErrno,pFileName)
+
+// Konstruktor wie ihn der SWG benoetigt
+{
+ pDat=new DATEIDESC;
+ pPaM=new SwPaM( *(rSwPaM.GetPoint() ) );
+ SetDocInfo(&pDat->DocInfo);
+
+ SwTxtNode *pTxtNode=0;
+
+ // Ist das ein SwPaM auf einen TextNode?
+ if (0==(pTxtNode=pDoc->GetNodes()[pPaM->GetPoint()->nNode]->GetTxtNode()))
+ {
+ // Ist keiner, dann machen wir uns einen
+ pDoc->GetNodes().MakeTxtNode(
+ pPaM->GetPoint()->nNode,
+ (SwTxtFmtColl*)pDoc->GetDfltTxtFmtColl(), 0 );
+ // Da zeigt jetzt auch der StartIdx hin
+ pPaM->GetPoint()->nNode-=1;
+ }
+}
+
+SwSw6Parser::~SwSw6Parser(void)
+// Destructor von SwSw6Parser
+{
+ if (pDat) delete pDat;
+ if (pPaM) delete pPaM;
+}
+
+ULONG Sw6Reader::Read( SwDoc &rDoc,SwPaM &rPam,const String &rFileName)
+{
+ ULONG nRet = ERR_SWG_READ_ERROR;
+#ifndef COMPACT
+
+ if( pStrm )
+ {
+ //JP 18.01.96: Alle Ueberschriften sind normalerweise ohne
+ // Kapitelnummer. Darum hier explizit abschalten
+ // weil das Default jetzt wieder auf AN ist.
+ if( !bInsertMode )
+ SetNoOutlineNum( rDoc );
+
+ SwSw6Parser *pSw6Parser = new SwSw6Parser( &rDoc, rPam, pStrm,
+ !bInsertMode, &nRet, &rFileName );
+ pSw6Parser->CallParser();
+ delete pSw6Parser;
+ }
+ else
+ ASSERT( !this, "SW6-Read ohne Stream" );
+#endif
+ return nRet;
+}
+
+
+
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */