Datenstruktur fr Bitmap-Schriftarten

record
  Bitmap: Word;		{ Offset zu Zeichenbitmap im Bitmap-Segment}
  Position: Word;	{ Horizontale Startstelle }
end;

sentinel: Position = -1

Prozedur: Belegung der Bitmapoffsetliste ist quellenabhngig.

Liste ist evtl. zu gro fr den Stack... Daher TempMem verwenden;
String auf Stack kopieren (auch fr Metafiling).

Ausgabe:
* Bitmap-Byte lesen
* Bitmap-Manipulationen auf jedem gelesenen Bitmap-Byte!
  -- vor Weitergabe an Ausgabeproc
* Ausgabe-Byte sammeln
* Kursive Ausgabe durch Verschiebung gesamter Zeilen (keine Bmp-Mani)

Ausgabeproc: Ausgabe eines aligned-Bytes (16: direkt, 256 geteilt)

Clipping:
* Liste durchsuchen nach erstem sichtbaren Element
* bei geraden Schriften nur einmal (Init-Schritt); bei kursiven Schriften
  nach jeder Zeile updaten.

>> wegen BakMode/BakCol und Clipping masks und der daraus reultierenden
   Portzugriffe ist dieses Verfahren vermutlich nicht effizienter als
   das Coloumn-Cache-Verfahren. Daher sollte letzteres angewandt werden.


>> Kombination Coloumn Cache -- Vorverarbeitung


Tabelle s.o. wird im TempMem neben der ColCache-struc angelegt;
Sortierung (linear backward insertion) wird durchgefhrt, um ColCache-
Rckwrtsschritte zu vermeiden.

Procs:

# spec createproc
# InsertElement		(atx, bitpos)


Bitmap-Manipulationen


Bold		trivial
Thin            erfordert eine Definition der Buchstabengrenzen!

  
    *****  +++++++
  *********++++++++
  **     **++      ++
  **     **++      ++
  *********+++++++++ 	>>
  *********++++++++++
  **     **++      ++
  **     **+++++++++
  **     **++++++++

  




X   1. Win-Create

X   2. Insertion

    3. Thin

    4. Italics

    5. Convert-Table-Konzept umstellen

    6. Fr Large Fonts:
       kein VESA-like banking, sondern Tabelle mit pointers
       (auch fr tT geeignet)



Wegen Sortierung/backward write ist mit jedem Spalten-Eintrag das
Attribut zu speichern (WORD); ein Attributwechsel wird nicht durch
explizite Dummy-Eintrge hergestellt, sondern bei Vergleich des
bisherigen mit dem gewnschten Attribut.

* WriteMode
* Color
* BakColor

Arbeitsschritte bei Vordergrund- und Hintergrundwechsel; Verschachtelung

  xxxxx  +++++
  xxxx    ++++
  xxx      +++

  xxx**+++
  xxxx++++
  xxx  +++
     :		Hintergrund- und Hintergrundfarbwechsel

1. Normal draw bis zur Farbwechselstelle (:)
2. Beibehalten des nichtgezeichneten Anteils
3. Odern mit den neuen Vordergrunddaten, Left clip neu setzen
4. Normal draw

Vorteile:
-- Draw forward (positive Charspaces) korrekt untersttzt,
   d.h. Bak-nderung zum Beginn des Zeichens
-- Draw backward ist konsistent (kein doppeltes Pixel gedrawed)
Nachteil:
-- Zeichenteileinfrbungen (Vordergrund) bei berlappung.

Eine fortgeschrittene Methode zur Vermeidung der Zeichenteileinfrbungen
ist zu aufwendig und erfordert die Abkehr vom Straight-forward CC.
Es wrde erfordert, den Speicher fr Vorder- und Hintergrundbitmap zu
unterscheiden.



Details:
-- einem Right-end-ColFlush darf kein ClearCol folgen...
-- Belegung der Bits des Attrib/reserved
   * Attributbits ftXXXX
   * 1 Vordergrundbit
   * 1 Hintergrundfarbbit
   * 1 Hintergrundmodusbit

   --> siehe myfodef.asm



