Retrofans gut lesbare Bitmap-Fonts für allerlei Zwecke

Es gibt 34 Antworten in diesem Thema, welches 5.350 mal aufgerufen wurde. Der letzte Beitrag (6. August 2025 um 17:31) ist von Tobias.

  • Ein weiterer wichtiger Faktor ist die Vollständigkeit und Kompatibilität der Zeichenbelegung (Encoding) im Font. Für Systemfonts verwende ich natürlich die Zeichenbelegung des jeweiligen Originals, beim C64/VC20/CBM also PETSCII inkl. aller Symbole. Für universelle Fonts (vorwiegend für den Bitmap-Mode) setze ich meistens auf DIN/ISO-Encoding (ISO Latin 9 aka Bitte melde dich an, um diesen Link zu sehen.), weil das die Kompatibilität mit moderneren Plattformen (von Amiga/CX16 bis PC/Mac) erhöht und man international den Datenaustausch erleichtert. So sind in den Zeichensätzen Umlaute, Akzentbuchstaben usw. enthalten. Ich kann aber auf Wunsch für bestimmte Projekte auch Zeichensätze mit angepassten Belegungen erzeugen (und habe das auch schon getan).

    Wäre das auch mit UTF-8 erhältlich?

  • War mit der Frage aus Bitte melde dich an, um diesen Link zu sehen. evtl. "8859-1" statt "UTF-8" gemeint? Es wäre naheliegend, da die Codepoints 0 bis 255 übereinstimmen.

    Nein, UTF-8 ist gemeint, weil webtechnisch dominant und daher auch plattformübergreifend eine, wenn nicht DIE große Rolle spielt. Mit ISO hab ich nichts am Hut, auch meine EMails sind nach UTF-8 encodiert.

  • War mit der Frage aus Bitte melde dich an, um diesen Link zu sehen. evtl. "8859-1" statt "UTF-8" gemeint? Es wäre naheliegend, da die Codepoints 0 bis 255 übereinstimmen.

    Nein, UTF-8 ist gemeint, weil webtechnisch dominant und daher auch plattformübergreifend eine, wenn nicht DIE große Rolle spielt. Mit ISO hab ich nichts am Hut, auch meine EMails sind nach UTF-8 encodiert.

    Ich wiederhol mich mal:

    Das eine hat mit dem anderen nichts zu tun.

    UTF-8 definiert, wie Codepoints in Bytesequenzen kodiert werden. Dieser Thread behandelt aber Zeichensätze (mit bis zu 255 Zeichen). Wenn Du Dich also für einen bestimmten Zeichensatz interessierst bzw. ihn bei Retrofan "bestellen" willst, dann musst Du die gewünschten Zeichen aufzählen oder eben das Set beim Namen nennen. "ISO-8859-1" wäre z.B. so ein Name, aber "UTF-8" eben nicht.

    ...und falls Du einen vollständigen Unicode-Zeichensatz haben willst (die Menge an Codepoints, die mit UTF-8 abbildbar sind), lautet die Antwort "Nein", denn so eine große Bitmap bekommt Retrofan in absehbarer Zeit nicht fertig, und in den Speicher des C64 passt die auch nicht.

    Yes, I'm the guy responsible for the Bitte melde dich an, um diesen Link zu sehen. cross assembler. And some Bitte melde dich an, um diesen Link zu sehen..

    Einmal editiert, zuletzt von Mac Bacon (27. April 2023 um 20:21)

  • Der aktuelle Stand des Font-Headers (128 Bytes = 16 Chars) in grafischer Form:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Ein Quadrat entspricht einem Char (= 8 Bytes). Ich bekomme den Header noch voll ... ;)

    Bitte melde dich an, um diesen Link zu sehen. | Meine Lieblings-Themen im Forum64:

    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. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.

  • Was mir bis zuletzt in meinem Arsenal fehlte, war ein Font, wie ihn z.B. GEOS als Standardschrift und in seinen Menüs einsetzt: 1 px starke Linien aber nicht besonders schmal, sondern "normal" breit. Gut lesbar mit gut unterscheidbaren Zeichen, ausreichend Abstand und einem gewissen Charakter.

    Darüber hinaus soll er den Grundregeln folgen, die ich anfangs formulierte: 6 px Versalhöhe (oberste Pixelzeile weitgehend frei), einheitliche x-Höhe (5 px), 1 px Unterlänge.

    Diesen Font habe ich kürzlich von den grundsätzlichen Zeichenformen her fertiggestellt, allerdings fehlen noch die ganzen zusätzlichen ISO Latin 9 Zeichen, die Dickten-Tabelle und der Header. Ich wollte ihn trotzdem schonmal zeigen. Hiermit sind im Schnitt rund 70 Zeichen/Zeile darstellbar. Diese Schrift kombiniert ein wenig GEOS-Feeling mit dem starren 8 px Zeilenraster, für das die meisten meiner Bitmap-Fonts gebaut sind.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Es gibt auf Basis dieses Zeichensatzes auch einen monospaced Font mit 5 px breiten Zeichen, der genau 64 Zeichen/Zeile erreicht. Demnächst auf diesem Kanal ... ;)

    Bitte melde dich an, um diesen Link zu sehen. | Meine Lieblings-Themen im Forum64:

    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. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.

  • Es gibt auf Basis dieses Zeichensatzes auch einen monospaced Font mit 5 px breiten Zeichen, der genau 64 Zeichen/Zeile erreicht. Demnächst auf diesem Kanal ...

    Hier ist er nun:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bis ich die Binaries veröffentliche, muss ich noch einige Details klären. Ich benötige z.B. einen Generator für den Header. Aber ich möchte auch noch ein paar Tests auf echten CRTs durchführen. Und ich bin auch noch nicht mit allen internationalen Zeichen durch.

    Bitte melde dich an, um diesen Link zu sehen. | Meine Lieblings-Themen im Forum64:

    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. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.

  • Wäre eine Kombination von Bitte melde dich an, um diesen Link zu sehen. und Bitte melde dich an, um diesen Link zu sehen. dann das Extrem, was man (inklusive der menschlichen "Fehlerkorrektur") gerade noch so lesen - ich sage jetzt mal bewusst: entziffern - könnte?
    Anwendungsgebiete wären z.B. Texte, Sprechblasen in Hires-Grafiken... bei insbes. vertikal eingeschränkten (oft: 96 Zeilen) Diashows (z.B. StripStream) oder Adventures (z.B. D42).
    Könnte man einen solchen Mini(mal)-Font auch als TTF machen, damit man den z.B. in Photoshop am PC einfach in Grafiken nutzen kann?

  • Wäre eine Kombination von Bitte melde dich an, um diesen Link zu sehen. und Bitte melde dich an, um diesen Link zu sehen. dann das Extrem, was man (inklusive der menschlichen "Fehlerkorrektur") gerade noch so lesen - ich sage jetzt mal bewusst: entziffern - könnte?

    Im Schnitt verbraucht der Proportionalfont (Bitte melde dich an, um diesen Link zu sehen.) weniger Platz, daher macht eine Kombination mE kaum Sinn. Ich kann aber noch schmaler. ;) Ich habe einen 80-Zeichen-Font für den C64 gezeichnet und auch hier eine Proportional-Variante passend dazu, die auf ähnlich viele Zeichen pro Zeile kommt – mit besserer Lesbarkeit. Auf guten CRTs mit guter C64-Anbindung kann man den 80Z-Font durchaus lesen, wobei die etwas breiteren Fonts natürlich immer etwas besser zu entziffern sind.

    Und man kann natürlich auch vertikal noch etwas kleiner werden. Ich finde 6px Versalgröße den Sweetspot bei 8px hohen Zeichen bzw. Zeilenabstand. Aber wenn man die Zeichenhöhe/Zeilenabstand nicht auf 8 festlegt, kann man mit den Zeichen noch 1px kleiner werden, um Platz zu sparen.

    Bitte melde dich an, um diesen Link zu sehen. | Meine Lieblings-Themen im Forum64:

    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. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.

  • Wenn Du mal Zeit und Lust hast, kannst Du ja mal an einem solchen Minimalst-Font basteln. Also horizontal und vertikal soweit geschrumpft wie möglich. :)

    • Offizieller Beitrag
    • Interessanter Beitrag

    Ich bastele z.Z. wieder ein wenig an Fonts herum und optimiere u.a. meinen 80-Zeichen-Font. Zum Testen erzeuge ich immer wieder unscharfe Darstellungen (wie hier), um in etwa die Qualität eines guten CRTs zu simulieren. Ich habe das mit den CRT-Simulationen von VICE und Denise verglichen und grob passt das. Der nächste Schritt ist dann immer der Test im Emulator (mit CRT-Sim) und in größeren Abständen auf echter Hardware (C64/S-Video/1084S).

    Hier ist der aktuelle Stand des 80-Zeichen-Fonts (also mit 3 Pixeln je Zeichen plus 1 Pixel Abstand auf der X-Achse):

    Bitte melde dich an, um diesen Anhang zu sehen.

    Ich finde die Lesbarkeit schon sehr gut – wahrscheinlich nicht weit entfernt vom maximal möglichen. Unterschiede zu manch anderen 80-Zeichen-Fonts: 6px hohe Versalien (dadurch weniger hoch/verzerrt und größerer Durchschuss). 5px hohe x-Höhe (Kleinbuchstaben), dadurch größere Darstellung als bei nur 4px. Recht "geschlossene"* Formen, also möglichst verbundene Linien und oft mit Pixeln geschlossene Ecken/Rundungen. Dadurch hat die Schrift einen etwas eckigen Charakter aber bricht durch Unschärfen nicht so schnell weg. Zudem werden die horizontalen Linien der Zeilen verstärkt, was den Lesefluss leichter/schneller machten sollte.

    *) Was ich meine, ist folgendes:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Links sieht man eine sehr offene Zeichendarstellung, bei der u.a. Rundungen durch Weglassen von Pixeln dargestellt werden, rechts sieht man eine maximal geschlossene Darstellung, bei der möglichst viele Pixel gesetzt sind und in der Mitte sieht man meinen gewählten Mittelweg.

    Mit nur wenigen Anpassungen kann der Zeichensatz auch als 44-Zeichen-Font für den VC20 und als doppelt breiter Multicolor-Font beim C64 dienen.

    Bitte melde dich an, um diesen Link zu sehen. | Meine Lieblings-Themen im Forum64:

    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. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.

  • Ich habe kürzlich eine schon etwas ältere Anregung von Tobias aufgegriffen und einen möglichst kleinen Font gestaltet/gepixelt. Dafür ist der erste Schritt, erst einmal zu gucken, wie klein man denn werden möchte, bzw. wie viele Pixel in der Höhe man für Großbuchstaben, die x-Höhe und die Unterlänge nutzen möchte. Nach einigen Experimenten bin ich zu dem Schluss gekommen, dass ich zum einen einen vollständigen ASCII-Zeichensatz mit Groß- und Kleinbuchstaben zeichnen möchte und zum anderen habe ich mich (auch deswegen) für 4 Pixel Versalhöhe und 3 Pixel x-Höhe entschieden. Unterlänge ist 1 Pixel hoch. Wenn man noch kleiner wird, kann man wahrscheinlich keine Klein- und Großbuchstaben mehr realisieren und das Erkennen geht doch teils schon ins Raten über.

    Mein Ergebnis:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Die 2. Abbildung versucht wieder, eine CRT-Darstellung anzunähern. Wie zu erkennen, habe ich eine fette Variante (mit identischen Maßen) gleich mit-umgesetzt. Das Binary bleibe ich euch auch hier noch eine Zeit lang schuldig, weil ich die einzelnen Zeichen erstmal in ein geeignetes Raster bringen muss.

    Wenn jemand Verbesserungsvorschläge hat, kann er sie hier gerne posten. Und wenn jemand Lust hat, den Font in ein (Vektor-) TTF oder OTF (für PC und Mac) zu verwandeln, wäre ich dem gegenüber sehr aufgeschlossen (Klartext: ich würde mich darüber freuen). ;)

    Bitte melde dich an, um diesen Link zu sehen. | Meine Lieblings-Themen im Forum64:

    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. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.

  • Wenn man noch kleiner wird, kann man wahrscheinlich keine Klein- und Großbuchstaben mehr realisieren und das Erkennen geht doch teils schon ins Raten über.

    Ja, bei den 3x3 Pixeln (4x4 inkl. "Luft") kann man da wirklich nur Großbuchstaben machen, wenn alle Buchstaben unterschiedlich und halbwegs als sie selbst erkennbar:search: sein sollen.

    Falls der Minimini-Font eine Anwendung hat, dann als systematische Beschriftung in Hires-Bildern, z.B. in Grafikadventures mit eingeschränktem Platz. NOTAUSGANG, ACHTUNG! ... solche Sachen. ;) Sicher wird man damit keine Textverarbeitung machen wollen.


    Dein Font braucht mit 1 px "Zeilenabstand" 7 px Höhe, oder? Z.B. beim "j"

    Ingesamt schaut der Font etwas eckig aus, z.B. das "k". Aber das wirst Du wegen CRT-Unschärfe extra so gemacht haben vermute ich?

  • Dein Font braucht mit 1 px "Zeilenabstand" 7 px Höhe, oder?

    Ja, das ergibt sich aus 4px Versalhöhe + 1px Unterlänge, 1 px für i/j-Punkte + 1 px minimaler Zeilendurchschuss. Klar, ich könnte natürlich i und j kleiner machen, um eine weitere Pixelzeile einzusparen aber letztlich ging es mir nicht um den minimalen Platzbedarf, sondern um Ästhetik und Lesbarkeit, trotz der geringen Grund-Höhe.

    Wer aber nur die Versalien und Ziffern verwenden möchte, der kann (bis auf den Spezialfall Q) auch mit 5px Zeilenhöhe auskommen.

    Aber das wirst Du wegen CRT-Unschärfe extra so gemacht haben vermute ich?

    Richtig vermutet.

    Bitte melde dich an, um diesen Link zu sehen. | Meine Lieblings-Themen im Forum64:

    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. | Bitte melde dich an, um diesen Link zu sehen. | Bitte melde dich an, um diesen Link zu sehen.

  • Versalhöhe

    Da vielleicht nicht jeder (also zumindest auf mich trifft das zu) so firm ist wie Du bei Schriftarten und diesen Begrifflichkeiten, hier eine Veranschaulichung: :)

    Bitte melde dich an, um diesen Link zu sehen.