Hello, Guest the thread was called3.3k times and contains 29 replays

last post from GoDot at the

Characterfox Handbuch?

  • Ich suche das Handbuch zum Characterfox. Bei Retroport lässt es sich nicht runterladen und die Kurzreferenz dort (wie gut Matthias Rose das damals auch alles gemacht hat!) ist mir zu kurz. Vielleicht hat es ja einer?


    Außerdem interessiert mich, wie genau der Header eines Printfox-Zeichensatzes aufgebaut ist. Da ist also die Kennung "z", darauf folgt die Zeichenbreite in Kacheln (1..3) und die Höhe in Pixeln (5..42). Das Byte, was dann folgt, ist mir nicht klar, meist steht da $92 (aber nicht immer). Was dann kommt, sind wohl die individuellen Zeichenbreiten der (max.) 114 Chars in Pixels (also max. 24). Dann kommt die Zeichenhöhe ohne Unterlänge (also der Offset der Baseline von oben). Dann folgt ein letztes Headerbyte, das meist $00 ist, manchmal aber auch den gleichen Wert hat wie die Zeichenbreite. Hat einer mehr Ahnung?


    Grund für das Ganze: Ich habe mit Entsetzen festgestellt, dass es für GoDot keinen Lader für die Printfox-Zeichensätze gibt! Das darf ja wohl nicht wahr sein! :-)


    Arndt

  • Mit dem Handbuch für Printfox könnte ich dienen...

    Super! Dann versuche ich mich mal an der zweiten Frage. :)


    Ich hatte vor Urzeiten mal ein Progrämmchen geschrieben das u.a. auch fonts von printfox einlesen konnte. An die Quelle für die Infos über den Aufbau kann ich mich leider nicht mehr erinnern, aber den Quellcode habe ich immerhin noch. Und danach zu urteilen sind die fonts folgendermaßen aufgebaut:


    - Kennung für Font (dez. 90)
    - Fontnummer (1 Byte)
    - Zeichenbreite (Breite in Bytes, 1 Byte)
    - Zeichenhöhe (1 Byte)
    - Code des letzten Character im Font (1 Byte)
    - Breite der einzelnen Character (in Pixeln, 114 Byte)
    - Höhe ohne Unterlänge (1 Byte)
    - Character spacing (also die Anzahl an Pixeln die zwischen 2 Zeichen frei gelassen werden sollten, 1 Byte)


    Nun kommen noch die gfx-Daten, gecharpackt
    - das Format ist das übliche: escape, runlength, value
    - Escapecode ist 0x9b
    - runlength ist 16bit groß (lowbyte, highbyte)


    Die entpackten Daten sehen nun folgendermaßen aus:
    - für jedes Zeichen gibt es eine "kleine Bitmap". Diese kleinen Bitmaps stehen nun alle hintereinander weg im Speicher. Das erste Zeichen ist das Leerzeichen (dez. 32), das letztes Zeichen ist im Header angegeben. Es gibt also "Code des letzten Character im Font"-32 kleine Bitmaps
    - jede Bitmap ist Zeichenbreite * Zeichenhöhe Bytes groß (Werte aus dem Header)


    - diese Bitmaps sind aufgebaut wie Sprites; die Bytes stehen also einfach Spalte für Spalte, Zeile für Zeile hintereinanderweg. Nur sind es halt nicht 3*21 Bytes sondern Breite*Höhe Bytes


    Tja, und das müsste es auch "schon" gewesen sein. Jedenfalls soweit ich es gerade aus dem Quellcoder herauslesen kann...
    Habe daraus gerade mal ein Programm zur Anzeige von Printfoxfonts auf der Kommandozeile gebastelt, kann man mit "fontreader pfoxfont" starten. Geladen werden die Fonts in "void loadPrintfoxFont (char *filename)".

  • - Code des letzten Character im Font (1 Byte)

    - Character spacing (also die Anzahl an Pixeln die zwischen 2 Zeichen frei gelassen werden sollten, 1 Byte)

    Ah! Vielen Dank, Rapid Eraser! Genau das hab ich gesucht! Jippi! :-)


    Mit dem Handbuch für Printfox könnte ich dienen...

    Nee, das hab ich schon und es nützt hier nichts. Aber danke!


    Arndt

  • NICE FIND! Vielen Dank dafür! Ebenso für Deine Erläuterung des Font-Dateiformats!

    Yo, archive.org ist halt immer meine erste Anlaufstelle bei einem 404. Da kann man oft noch einiges retten, gerade auch bei Retro-Seiten - welche über die Jahre häufig leider auch nur schlecht gepflegt werden. :/


    Im Zuge dessen mal eine Frage an Arndt: Gibt es auf deiner Webseite auch irgendwo eine Beschreibung der einzelnen Grafikformate? Das würde ich selber äußerst begrüßen, da deine Seite ja eine der wenigen Seiten zum Thema ist die noch gepflegt wird.


    Und im Anschluss noch eine zweite Frage an alle: Weiss zufällig jemand wie die Fonts von Printshop/Printmaster/Newsroom aufgebaut sind?* :)


    * diese Frage hatte ich hier im Forum vor recht genau 10 Jahren schoneinmal gestellt; damals gab es jedoch leider keine Antworten darauf. Ich gebe die Hoffnung aber nicht auf das sich mittlerweile mal jemand damit auseinandergesetzt hat. =)

  • PS: Was mir gerade auffällt: Laut Handbuch des CharacterFox, Seite 35, scheint der "empfohlende Abstand" (also das Character Spacing?) auch negative Werte annehmen zu können?!?
    Ich hatte das damals nie großartig getestet und kann mich auch nicht daran erinnern jemals einen Printfoxfont mit negativem Spacing gesehen zu haben. Vielleicht mag die Überprüfung ja heute jemand nachholen? :) Wäre ja schon interessant zu wissen ob/wie negative Werte für das Character-Spacing gespeichert werden.

  • Weiss zufällig jemand wie die Fonts von Printshop/Printmaster/Newsroom aufgebaut sind?*

    Gibt es auf deiner Webseite auch irgendwo eine Beschreibung der einzelnen Grafikformate?

    Antwort auf beide Fragen: Geh einfach auf meine Webseite, da steht's dann bei jedem Lader und Saver dabei! :-) Hehe...


    Und schon mal ein Zwischenstand, ich kann jetzt schon mal die Printfox-Fonts mit einem Byte Breite und beliebiger Höhe einlesen. Ich mach das gleich so, dass sie im Char-Format abgespeichert werden können, wie eine normaler Zeichensatz. Hier mal ein paar Beispiele:



    Die oberen drei sind drei verschiedene Größen von einem Font (Höhe: 7, 8 und 9), die anderen, damit man Unterschiede sieht. ;-) Bei den Neunern wird (hoffentlich) klar, was ich mit Char-Format meine (sie sind zwei Chars hoch).


    Bei den größeren Fonts hab ich noch ein paar Denkfehler drin, da kommt Gewurschtel raus.


    Arndt

  • Und schon haben wir's! ;-)



    Das sind also die großen Größen (bis 3x6 ganz unten, wenn da auch die unteren zwei Kachelzeilen ungenutzt sind). Jetzt geht's an die Usability. Ich habe vor, die Fonts in Abschnitten laden zu können (die großen passen nicht komplett auf den Bildschirm und würden auch in ein Standard-Fontfile nicht reinpassen. Sollte ich die Zeichen umordnen? Printfox fängt immer mit dem Leerzeichen an, gefolgt von den Zahlen (mit und ohne Shift), dann die Großbuchstaben. Standardfonts fangen doch mit dem Großbuchstaben an, wenn ich das richtig verfolgt habe?


    Na ja, noch ein bisschen Arbeit...


    Arndt

  • So, da haben wir (fast fertig) ein neues Modul: mod.PFoxFonts (Name ist noch nicht ganz klar). Sieht so aus:



    Man sucht auf Disk den Font aus, den man sich anschauen möchte und kriegt erst mal die Infos dazu (Größe in Kacheln, Höhe in Pixel, Anzahl Zeichen im Set und ein Shape, damit man eine Vorstellung hat, wie groß die Zeichen sind). Wenn der Font im Speicher ist, schaut man ihn sich per "Show" an. Das sieht z.B. so aus (hier der Font zs100 von der Characterfox-Diskette):



    Mit dem Gadget "Division" soll der Font in Abschnitten geladen werden (kommt noch), mit Save kann man das dann als C64-Font abspeichern (kommt auch noch). Wenn das fertig ist, mach ich einen Font-Creator für GoDot-Fonts (das lohnt sich jetzt).


    Schön! :-)


    Arndt

  • Antwort auf beide Fragen: Geh einfach auf meine Webseite, da steht's dann bei jedem Lader und Saver dabei! :-) Hehe...

    Ah ja, jetzt habe ich die Beschreibungen auch gefunden. Topfit! :D


    Allerdings geht es da wohl nur um Beschreibungen für Grafiken, nicht aber für Fonts, kann das sein?
    Naja. Ich habe mir gerade eben nocheinmal Printmaster angesehen, und irgendwie habe ich den Eindruck als könnte man dort sowieso nicht so ohne weiteres neue Fonts einbinden. Teile davon - also zumindest die preview Bilder - scheinen im Hauptprogramm hardcodiert zu sein. :/
    Hmm, das wäre wohl eine Sache der man an einem langen Winterabend mal auf den Grund gehen könnte...



    Und das negative Spacing braucht man bei Buchstaben wie V und A, die kann man dann untereinander schieben.

    Ach sicher, klar. :)


    Ich habe vor, die Fonts in Abschnitten laden zu können (die großen passen nicht komplett auf den Bildschirm und würden auch in ein Standard-Fontfile nicht reinpassen.

    Der Screenshot schaut schon sehr gut aus! Aber einen Font "in Abschnitten" laden? Ernsthaft? Das klingt für micht ersteinmal... naja... ausgesprochen umständlich, sorry. :/
    Wäre es eine Alternative aus dem Font-Creator ein Standalone-Programm zu machen? Gerne mit GoDot Oberfläche, aber da muss doch zumindest ein ganzer Zeichensatz in den Speicher passen.


    Und ja - ich wäre, genau wie ZeroZero, sehr dafür das du die Reihenfolge der PFox-Zeichen anpasst. Grundsätzlich schwöre ich selber auf den Leitsatz: "Mach es einheitlich". Erfahrungsgemäß freuen sich da am Ende alle Beteiligten drüber. :)

  • Allerdings geht es da wohl nur um Beschreibungen für Grafiken, nicht aber für Fonts, kann das sein?

    Ja, nur Grafik. Mit Fonts hab ich mich lange Zeit nicht beschäftigt (war im Projekte-Ordner abgelegt...) ;-)

    Aber einen Font "in Abschnitten" laden? Ernsthaft? Das klingt für micht ersteinmal... naja... ausgesprochen umständlich, sorry.

    Her ein Screenshot, wie das gemeint ist:



    Ganz oben der Abschnitt "Großbuchstaben" ("Upper") eines 2x2-Charsets (zs17 von der Characterfox-Disk 1), darunter die anderen Abschnitte, hier gefaket eingeblendet: "Lower" (Kleinbuchstaben), "Digit" (Zahlen und Satzzeichen) und der Rest ("Extra"), wobei der hier eher leer ist (sind bis zu 18 Zeichen).

    Wäre es eine Alternative aus dem Font-Creator ein Standalone-Programm zu machen?

    War bisher nicht mein Ziel, aber wenn ich so darüber nachdenke... Na, bearbeiten kann man die Zeichen schon:



    Das hier ist EditMask, da gehen aber auch andere Module. Aber was speziell für Fonts? Ja. Doch. ;-)

    Und ja - ich wäre, genau wie ZeroZero, sehr dafür das du die Reihenfolge der PFox-Zeichen anpasst.

    Mach ich, jedenfalls bei den Fonts, die auch tatsächliche 1x1-Fonts sind, wie der System-Font. Bei den anderen ist es ja eher egal.


    Ich bin kurz vor fertig mit dem Modul.


    Arndt

  • Ganz oben der Abschnitt "Großbuchstaben" ("Upper") eines 2x2-Charsets (zs17 von der Characterfox-Disk 1), darunter die anderen Abschnitte, hier gefaket eingeblendet: "Lower" (Kleinbuchstaben), "Digit" (Zahlen und Satzzeichen) und der Rest ("Extra"), wobei der hier eher leer ist (sind bis zu 18 Zeichen).

    Verstehe ich das jetzt richtig, man kann also sowohl einen kompletten Zeichensatz laden als auch nur einzelne Abschnitte/Zeichen davon? Das wäre natürlich nett. ^^


    Mach ich, jedenfalls bei den Fonts, die auch tatsächliche 1x1-Fonts sind, wie der System-Font. Bei den anderen ist es ja eher egal.

    Humm, das klingt jetzt nicht so als plantest du auch Saver für die verschiedenen Fontformate zu realisieren. Oder? Das fänd ich persönlich sehr schade. In der Hinsicht herrscht imho noch ein echter Nachholbedarf an Tools. Es gibt ja viele schöne Programme um irgendetwas Drucken zu können, aber i.d.R. kaum Zeichensätze bzw. Konverter bzw. Editoren dafür. :(


    Ich bin kurz vor fertig mit dem Modul.

    Uff, du gehst ja ab wie dir Feuerwehr! 8\|



    PS: Da ich gerade dabei bin diverse Zeichensatzformate zu revers engineern - hat zufällig jemand hier die Software "Technicus"? Die schien wohl auch ziemlich gut drucken zu können, und falls sie eigene Fonts nutzte wäre es doch ein Jammer wenn das Wissen darum verloren ginge ohne das es einen Fontkonverter o. ä. gäbe.


    PPS: Was ich schon immer mal Fragen wollte (wahrscheinlich weiss Retrofan die Antwort ganz genau, und vielleicht schaut er ja zufällig auch mal in diesen Thread) - was ist eigentlich der Unterschied zwischen einem Charset und einem Font? Aus meiner gaanz dunklen Erinnerung heraus würde ich jetzt mal vermuten das bei einem Font noch das Mapping der graphischen Repräsentation auf die semantischen Symbole festgelegt ist, bei einem Characterset jedoch nicht. Aber das ist jetzt halt nur ganz wild geraten...
    Weiss da jemand mehr drüber als ich? :)

  • man kann also sowohl einen kompletten Zeichensatz laden als auch nur einzelne Abschnitte/Zeichen davon?

    Ja, genau so! :-)

    das klingt jetzt nicht so als plantest du auch Saver für die verschiedenen Fontformate zu realisieren.

    Ich kenn die Fontformate gar nicht. Ich re-engineere nur verschiedene Großfonts und sehe, dass es da Unterschiede gibt, wie die einzelnen Komponenten eines ganzen Zeichens zusammengebaut sind. Meinst du das?

    was ist eigentlich der Unterschied zwischen einem Charset und einem Font

    Für mich ist ein CHarset der reine Datensatz, also die Bytes die das Zeichen ausmachen, ohne weitere Informationen.


    Ich hab dann schon mal mit meinem (noch nicht ganz fertigen Modul) den zs40 von den Basisdisks der PFox-Reihe (der heißt eigentlich "Arnold Böcklin") in einen 3x3-GoDot-Font konvertiert. Macht sich gut! ;-) Mein Plan mit dem GoDot-Font-Creator scheint ganz gute Ergebnisse zu bringen. Und deine Anregungen zu einem allgemeinen Font-Creator bewege ich in Gedanken auch. Immerhin sind die Routinen für sowas ja schon lange in GoDot drin (PatternEd).


    Arndt

  • Ich kenn die Fontformate gar nicht. Ich re-engineere nur verschiedene Großfonts und sehe, dass es da Unterschiede gibt, wie die einzelnen Komponenten eines ganzen Zeichens zusammengebaut sind. Meinst du das?

    Ich meinte es im Sinne von Konvertierung; also ob man einen Printfox-Font in die GoDot-Font-Maschinerie laden, ihn ggf. mit GoDot-Werkzeugen bearbeiten und ihn anschließend als z.B. Geos-Font abspeichern kann. Oder so. In Demos/Intros verwendet man ja gerne auch mal größere Zeichensätze, aber ich kenne auf dem c64 so gut wie gar keine Tools dafür*. Da muss man sich immer eigene Lösung für zurechtbasteln. X/



    * Auf Anhieb fällt mir da nur der 8x8-Editor von Megastyle ein.

  • So Leute, das Modul zum Einlesen von Printfox-Zeichensätzen in GoDot ist fertig. Hier was zum darüber Lesen. Dass es funktioniert, sieht man an diesem Bild:



    Da hab ich so einen von Printfox konvertierten Font (ich glaube, zs74 von der Characterfox-Disk) mal in vchar64 geladen. Sieht doch ordentlich aus! Allerdings ist bei 3x3-Fonts ein wenig Nachbearbeitung nötig, denn die Geometrie der GoDot-Daten lässt sich in vchar64 nicht abbilden. Darum meine Bitte: Wer testet mal ein bisschen rum und macht Vorschläge, wie das Modul verbessert werden könnte. Wäre lieb! :-)<3:-)


    Download am besten von hier aus (Link auf GoDot im Einleitungstext dort)


    Danke schon mal!


    Arndt

  • Ich meinte es im Sinne von Konvertierung; also ob man einen Printfox-Font in die GoDot-Font-Maschinerie laden, ihn ggf. mit GoDot-Werkzeugen bearbeiten und ihn anschließend als z.B. Geos-Font abspeichern kann. Oder so. In Demos/Intros verwendet man ja gerne auch mal größere Zeichensätze, aber ich kenne auf dem c64 so gut wie gar keine Tools dafür*. Da muss man sich immer eigene Lösung für zurechtbasteln. X/


    * Auf Anhieb fällt mir da nur der 8x8-Editor von Megastyle ein.

    Och, da gibt es aber jede Menge - z.B. wenn man auf csdb nach "x char edit" sucht. Es gibt auch welche, die verschiedene Groessen koennen.