Wie funktioniert proportionales Charset?

Es gibt 27 Antworten in diesem Thema, welches 4.174 mal aufgerufen wurde. Der letzte Beitrag (1. April 2022 um 14:08) ist von Retrofan.

  • Dazu finde ich bisher keine Details: wie funktioniert am 64er ein proportionales Charset wie hier him Bild bei den Vandalism News:
    Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Spontan fallen mir nur zwei Methoden ein: eine Zeichenroutine für den Hires-Mode oder ein charset, welches die wichtigsten Kombinationen irgendwie über Schnittmengen abbildet, aber das kann ich mir schwer vorstellen.

  • Und dann die Antwort für die Community hier posten ;)

    Wissen ist das einzige Gut, das sich beim Teilen vermehrt. Also seid vorsichtig damit!

  • eine Zeichenroutine für den Hires-Mode

    das isses.

    Tale-X: zufrieden ?? :P

    Viele Grüße,
    GI-Joe
    Bitte melde dich an, um diesen Link zu sehen. * Bitte melde dich an, um diesen Link zu sehen. * Bitte melde dich an, um diesen Link zu sehen. * Bitte melde dich an, um diesen Link zu sehen. * Bitte melde dich an, um diesen Link zu sehen. * Bitte melde dich an, um diesen Link zu sehen.

  • 'Hoogo' hatte in meinem 80-Zeichen-Thread (Bitte melde dich an, um diesen Link zu sehen.) was passendes gepostet: Bitte melde dich an, um diesen Link zu sehen.

    Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • Sieht schon ziemlich geil aus, auch das Farbschema... irgendwie wuenschte ich jetzt, ich wuerde an einem Computer sitzen, dessen Interface so aussieht :hand

    - neue Spiele für den C64 -
    Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.Bitte melde dich an, um diesen Link zu sehen.

  • GI-Joe: ich war in Gedanken bei der Baustelle, wie man effizient unterschiedliche Zeichenbreiten verwaltet (Wertetabelle über alle Zeichen, ein Nibble/Zeichen?) :schande: Das Malen im Hiresmodus war für mich selbstverständlich...

    Wissen ist das einzige Gut, das sich beim Teilen vermehrt. Also seid vorsichtig damit!

  • Amica Paint hat als Begrenzung das am weitesten rechts gesetze PIxel in der oberten Pixelreihe.

    KI-Verwendung in diesem Posting: Rechtschreibkontrolle des Browsers.
    Abweichungen aufgrund des technischen Fortschritts oder individueller Vorlieben vorbehalten.

  • Man könnte auch bei jedem Pixelzeichen die Breite mitspeichern, oder beim Einlesen ermitteln.

    Mal hier, mal da, mal dort. Aber auf jeden Fall auf der Bitte melde dich an, um diesen Link zu sehen.! Und hier Bitte melde dich an, um diesen Link zu sehen.!

  • Wenn man eh Platz fuer Bitmap etc uebrig hat, wird es an einer einfachen Tabelle wohl nicht scheitern.
    Bei Maniac Mansion Gold hab ich in den Docs auch einen prop-Text-plotter geschrieben:
    Bitte melde dich an, um diesen Link zu sehen.
    Man will sowas ja moeglichst schnell und nicht zwingend moeglichst klein haben. Ansonsten wuerden ja sogar 2 bit reichen als Pointer auf 4 verschiedene Breiten.
    Aber das wuerde ich eher nicht empfehlen :)

    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.

  • Wieso als Pointer? 4 oder 8 Breiten (3 Bit) reichen vollkommen um die Breite festzulegen. Selbst Drucker und Schreibmaschinen mit Proportionalschriift haben nicht mehr verschiedene Buchstabenbreiten.

    Mal hier, mal da, mal dort. Aber auf jeden Fall auf der Bitte melde dich an, um diesen Link zu sehen.! Und hier Bitte melde dich an, um diesen Link zu sehen.!

  • Naja...wenn du nur 2 verschiedene Breiten hast (4 oder 8), reicht ja 1 Bit :)
    Würde ich aber nicht machen, da man dann doch oft mehr als 2 verschiedene Breiten braucht.

  • Nochmal in kurz:
    um 4 verschiedene Breiten anzugeben braucht man nicht 3 bit (Breite in Pixeln 0...7) sondern es reichen 2 bit (Breite aus Tabellen-Entrag 0..3).
    Je nach Font kann man auch das 8. Byte nehmen (idR sind Zeichen ja eher 7 Pix hoch, etc), aber wie gesagt. An DER Stelle will man ja doch lieber schnell als klein sein.

    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen.

  • Ich wüsste auch nicht, warum man für +/- 85 Mehr-Bytes solche Verrenkungen machen sollte um die Breite irgendwo zu 'verstecken'.

    Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen. Bitte melde dich an, um diesen Link zu sehen.

    Ex-TLI (The Level 99 Industries) & Ex-TNP (The New Patriots) & Ex-TEA (The East Agents) & ?

  • Du mußt keine Zähler prüfen, sondern nur schauen ob Dein Schieberegister leer ist. Wenn ja: Nächstes Zeichen holen.

    KI-Verwendung in diesem Posting: Rechtschreibkontrolle des Browsers.
    Abweichungen aufgrund des technischen Fortschritts oder individueller Vorlieben vorbehalten.

  • Das Prinzip funktioniert ja letztlich immer gleich, egal ob es nun um Sprite Font, aus mehreren Tiles bestehendem Font oder einem "echten" Proportionalfont geht. Ich würde zu 3 Breiten raten.
    "I" und evtl. n Haufen Sonderzeichen schmal
    "M/W" breit
    alles andere normal.
    Man kann sich dann ne Lookup-Tabelle bauen, die genau so sortiert ist wie die Chars von 0 bis 255 und Breiten enthält.
    Heißt, nach LDA TEXT kommt noch sowas wie ( PHA ) TAX LDA TABELLEBREITE,X usw usw, dann springt man in eine Plotroutine

  • Eins wird bei PropSchrift oft übersehen: Wie man in den Beispielbildern
    sieht, sind auch die Abstände zwischen Zeichen nicht immer gleichgross.
    Das dient dazu, alle Zeilen eines Absatz gleichlange zu zeichnen.
    Sowas geht nur in Hires.

  • Blocksatz lässt sich leicht errechnen:
    Man braucht die Breite aller Buchstaben einer Zeile in Pixel und zeiht das von der Bildschirmbreite ab. Dadurch weiß man, wieviele leere Pixel man hat.
    Man braucht die Anzahl der Leerzeichen in der Textzeile und die Breite eines Leerzeichens und man muss wissen, wie breit diese zusammen sind und das nochch von obigen leeren Pixels abziehen..
    Wie breit dann ein Leerzeichen wird, kann man dann errechnen. Anzahl leere Pixel durch Anzahl Leerzpixel teilen. Das Ergebnis addiert man zu der Breite eines normalen Leerzeichen und hat damit die Breite der Leerzeichen der aktuellen Zeile.

    Die Kunst dabei ist nur, was macht man bei der Division mit einer wahrscheinlich entsehenden Kommastelle? Einfach ab/aufrunden ergibt einen flatternden Rand. Da muss man sich was überlegen.

    Mal hier, mal da, mal dort. Aber auf jeden Fall auf der Bitte melde dich an, um diesen Link zu sehen.! Und hier Bitte melde dich an, um diesen Link zu sehen.!

    Einmal editiert, zuletzt von 1ST1 (16. August 2016 um 12:30)

  • Proportionalschrift heißt jetzt aber noch nicht automatisch Blocksatz, das wäre schon wieder ein Schritt weiter.

    Aber klar, hier gehen von HiRes ("normales" Charset) aus.

  • Die Kunst dabei ist nur, was macht man bei der Division mit einer wahrscheinlich entsehenden Kommastelle? Einfach ab/aufrunden ergibt einen flatternden Rand. Da muss man sich was überlegen.

    Da sollte ein Algorithmus ähnlich dem Bresenham-Linienalgorithmus weiterhelfen.

    10 x=rnd(-1963):fori=1to81:y=rnd(1):next
    20 forj=1to5:printchr$(rnd(1)*16+70);:next
    30 printint(rnd(1)*328)-217

    Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen. - Bitte melde dich an, um diesen Link zu sehen.