Hallo Leute, suche eine Font mit 3x5. Ich hoffe das ist nicht zu klein, ich konnte nichts gescheites finden.... Danke
... schrieb: > suche eine Font mit 3x5. Ich hoffe das ist nicht zu klein Doch, ist es. Denk' doch bloß mal ein wenig nach, z.B. über das "m". Da sind drei senkrechte Striche darzustellen und dazwischen zwei Freiräume, also fünf Elemente nebeneinander. Du hast aber nur drei... Mit 3x5 gehen alle Ziffern und einige Buchstaben und Sonderzeichen, aber ein vollständiger ASCII-Zeichensatz ist damit nicht möglich. Notdürftig bekommt man vielleicht noch alle Großbuchstaben gebacken, aber die sind dann teilweise schon sehr schlecht lesbar bzw. nicht voneinander oder von einer Ziffer zu unterscheiden. Das Minimum für eine halbwegs brauchbare alphanumerische Darstellung ist eine 5x7-Matrix (zzgl. mindestens ein Element Zeichen- und Zeilenabstand). Eben so, wie es bei den üblichen Textdisplays gelöst ist. Damit läßt sich der vollständige ASCII-Zeichensatz ganz gut darstellen (wenn auch ohne Unterlängen) und darüber hinaus auch die meisten Zeichen aller auf der lateinische Schrift basierenden Sprachen wenigstens einigermaßen lesbar.
Da frage ich mich, wie beim Sinclair ZX-Spectrum, bei 256 Pixeln waagerecht, 64 Zeichen (mit Zwischenraum) dargestellt werden konnten? Da blieben für jedes Zeichen nur 3 mal 7(oder 8) Pixel. "Tasword Two" (C) hatte aber den kompletten Zeichensatz plus Sonderzeichen!
okay, dann erhöhe ich mal auf 4x7 :-) dann müsste ich noch ein bisschen löten, aber von der Eletkronik her wäre das möglich. Großbuchstaben reichen, das kleine m ist wirklich kacke Das Große W wird dann auch nicht gescheit gehen... Ab wann kann man den alles sauber dastellen? Höher als 7 kann ich auf keinen Fall und größer als vier geht nur mit Laufschrift
Schnappschuss schrieb: > 3 x 5 Font: Das ist kein Font sondern Selbstbetrug. Da kannst du genausogut Kästchen über Arialbuchstaben zeichnen und behaupten, es wäre ein 2x2 Font. Gruss Reinhard
Sir Clive Sinclair schrieb: > Da frage ich mich, wie beim Sinclair ZX-Spectrum, bei 256 Pixeln > waagerecht, 64 Zeichen (mit Zwischenraum) dargestellt werden konnten? Da > blieben für jedes Zeichen nur 3 mal 7(oder 8) Pixel. Eben. W und w z.B. unterscheiden sich nur noch in der Höhe. Diese Möglichkeit hast du bei 3x5 dann auch nicht mehr. Deswegen reduziert sich das auf Ziffern und Großbuchstaben. Und wirklich gut lesbar ist es trotzdem nicht. Wie übrigens auch nicht die Schrift auf dem Screenshot. Das geht bei richtigen Wörtern noch einigermaßen, aber bei "Ctrl W" z.B. muß man schon etwas überlegen, um dahinterzukommen, welches Zeichen gemeint sein könnte. Sowas ist das krasse Gegenteil von "ergonomisch".
... schrieb: > Ab wann kann man den alles sauber dastellen? Höher als 7 kann ich auf > keinen Fall und größer als vier geht nur mit Laufschrift Mit 4x5 sollten sich zumindest alle Ziffern und Großbuchstaben schon recht ordentlich lesbar darstellen lassen. Mit 4x7 reicht's auch noch für lesbare "Ä", "Ö" und "Ü" und Sachen wie etwa das "$".
Hi EA eDIP Displays haben einen 3x5 Zeichensatz: http://www.lcd-module.de/fileadmin/pdf/grafik/edip128-6.pdf S.19. MfG Spess
Schnappschuss schrieb: > 3 x 5 Font: http://www.cufonfonts.com/de/font/7088/3x5 Wenn das in der Vorschau auf der Seite ein 3x5 Font sein soll, kann ich das nur als schlechten Scherz bezeichnen.
Magnus M. schrieb: > Wenn das in der Vorschau auf der Seite ein 3x5 Font sein soll, kann ich > das nur als schlechten Scherz bezeichnen. Es ist einer. Er stellt halt das dar, was mit 3x5 möglich ist. Für natürlichen Text ist das sogar notfalls ausreichend (zum Glück sind wir Menschen ja wunderbare Mustererkennungsmaschinen). Aber es ist furchtbar anstrengend und fehlerträchtig, einen Text mit so einem Font zu lesen. Jemanden dazu zu zwingen grenzt an vorsätzliche Körperverletzung.
Hi
>Es ist einer
Klar. Mit unterschiedlich abgerundeten oder abgeschnittenen Pixeln.
MfG Spess
Spess53 schrieb: > EA eDIP Displays haben einen 3x5 Zeichensatz: Einige Zeichen sind 6 Pixel hoch, aber das liesse sich auch noch eliminieren, ansonsten ein sorgfältig entworfener Font, sogar mit Euro-Zeichen. Zum Lesen eines Romans natürlich nicht zu empfehlen. Spess53 schrieb: > Klar. Mit unterschiedlich abgerundeten oder abgeschnittenen Pixeln. Das ist reine Verarschung und hat mit Font nichts zu tun. Eigentlich eine Frechheit sowas als Font zu veröffentlichen. Gruss Reinhard
c-hater schrieb: > Es ist einer. Er stellt halt das dar, was mit 3x5 möglich ist. Offensichtlich verstehst du die Natur eines Pixel-Fonts überhaupt nicht. Das ist ein Outline-Font mit drübergemalten Kästchen. Gruss Reinhard
Cool Danke damit kann ich schon was anfangen ... @Sir Clive Sinclair (Gast) super ich dachte nicht dass man das so gut lesbar in der Größe schafft. Ich glaube ich zeichne mir den nach. Der Font ist echt weltklasse. Nach eine Frage... Mit welchem Programm macht man das am besten? Mir fällt nur gimp ein und das dann als h file abspeichern. Dann kommt dann sowas raus...
1 | static char header_data[] = { |
2 | 0,0,0, |
3 | 0,0,0, |
4 | 0,0,0, |
5 | 0,0,0, |
6 | 0,0,0 |
7 | };
|
Das müsste man dann wieder einlesen und umformatieren... Schön ist was anderes :-) Bin für Vorschläge offen.
... schrieb: > Mit welchem Programm macht man das am besten? Was willst du denn mit dem Font anfangen? LEDs ansteuern? Ein LCD-Display? Und womit, µC, PC, oder was? Gruss Reinhard
ich habe leds geschenkt bekommen und mir die zu einem display zusammen gepappt. aber das spielt doch eigentlich keine rolle, oder? Ob µC oder Pc spielt auch keine rolle... ist aber irgendso ne lpc17xx gurke. Suche jetzt nur ein Programmchen womit ich mir meine fonts selbst zusammen malen kann... wenns das nicht gibt nehme ich gimp grüsse
Naja, sowas ist die perfekte Gelegenheit, ein Stündchen mit Karopapier zu verbringen. Danach hat man die Muster bei HEX im Kopf.
... schrieb: > aber das spielt doch eigentlich keine rolle, oder? Doch - je nach dem, ob du dein Display spalten- oder zeilenweise ansteuerst, musst du die Matrizen für die Zeichen aufbauen. Bei einem Bildschirm z.B. brauchst du zuerst die ersten Zeilen aller Zeichen in der Zeile, danach alle 2. Zeilen usw. Also ist es zweckmässig die Pixel Zeile für Zeile zu speichern. Es ist recht ärgerlich, wenn man mit dem Erfassen fertig ist und dann feststellt, dass die Matrix verkehrt aufgebaut ist. Dann muss man sich ein Programm schnitzen, das die Matrix um 90 Grad dreht, oder man fängt von vorne an. Aber du musst das nicht glauben, mach einfach, dann siehst du weiter wenn du die Software schreibst. Gruss Reinhard
Hey, die Schrift von Sir Clive Sinclair ist für die Größe sogar richtig gut. Perfekt für Indizes auf einem kleinen Display. Es fehlen zwar ein paar Buchstaben (V,J,X,q,Z,z - liegt wohl am englischen Englisch), aber die lassen sich recht leicht ergänzen. Viele Grüße Nicolas
Reinhard Kern schrieb: > Es ist recht ärgerlich, wenn man mit dem Erfassen fertig ist und dann > feststellt, dass die Matrix verkehrt aufgebaut ist. Dann muss man sich > ein Programm schnitzen, das die Matrix um 90 Grad dreht, oder man fängt > von vorne an. Aber du musst das nicht glauben, mach einfach, dann siehst > du weiter wenn du die Software schreibst. > > Gruss Reinhard Hallo Rinhard, Danke für deine Tips. Bei einem Monitor mag das vielleicht stimmen, ich habe aber immer noch einen Speicher dazwischen und somit sollte es egal sein. Ich denke trotzdem noch mal drüber nach. Danke. Nicolas S. schrieb: > Hey, > die Schrift von Sir Clive Sinclair ist für die Größe sogar richtig gut. > Perfekt für Indizes auf einem kleinen Display. Es fehlen zwar ein paar > Buchstaben (V,J,X,q,Z,z - liegt wohl am englischen Englisch), aber die > lassen sich recht leicht ergänzen. Hey, kannst du die Schrift mal hochladen? Ich hätte diese auch gerne. Selbst zeichnen mach nicht sooooo viel Spaß. Schon mal Danke!
... schrieb: > ich habe aber immer noch einen Speicher dazwischen > und somit sollte es egal sein. Das hat mit dem Speicher garnichts zu tun, sondern damit, wie du deine Anzeige ansteuerst, z.B. wenn du LEDs multiplext. Du kannst zwar entweder Spalten oder Zeilen multiplexen, aber das legst du mit deiner Hardware fest, nachträglich kannst du das nicht mehr ändern. Es stellen sich ausserdem mehr Fragen als nur Spalte oder Zeile, die Frage ist auch, welches Pixel zuerst. Natürlich kannst du alles in der Software wieder glattbügeln, aber allein die Umkehrung eines Bytes in der Reihenfolge MSB oder LSB first ist eben unschön und überflüssig, wenn man die Daten gleich richtig anlegt. Gruss Reinhard
Reinhard Kern schrieb: > ... schrieb: >> ich habe aber immer noch einen Speicher dazwischen >> und somit sollte es egal sein. > > Das hat mit dem Speicher garnichts zu tun, sondern damit, wie du deine > Anzeige ansteuerst, z.B. wenn du LEDs multiplext. Du kannst zwar > entweder Spalten oder Zeilen multiplexen, aber das legst du mit deiner > Hardware fest, nachträglich kannst du das nicht mehr ändern. > > Es stellen sich ausserdem mehr Fragen als nur Spalte oder Zeile, die > Frage ist auch, welches Pixel zuerst. > > Natürlich kannst du alles in der Software wieder glattbügeln, aber > allein die Umkehrung eines Bytes in der Reihenfolge MSB oder LSB first > ist eben unschön und überflüssig, wenn man die Daten gleich richtig > anlegt. Hallo Reinhard, dann verstehe ich es wirklich nicht. Ich habe einen Buchstaben im Speicher. Jetzt möchte ich diesen auf ein Display, oder was auch immer schreiben. Hierzu schreibe ich diesen in den Speicher. Ob der jetzt Zeilenweise oder Spaltenweise abgelegt ist, spielt doch keine Rolle. ICh kann doch einfach die innere und äußere Schleife tauschen. Ob MSB oder LSB ist dann die Durchlaufrichtung der Schleife. Ist der Speicher beschrieben, baller ich den aufs Display und gut ist (habe zwei Speicher). Meiner Ansicht nach gibt es da nichts glatt zu bügeln sondern es ist einfach egal. Nur so als Hinweis. Ich weder beratungsresistent, noch möchte ich mich streiten. Ich verstehe es einfach nur nicht. Vielleicht kannst du mal ein Beispiel nennen. Dann werde ich das berücksichtigen. Viele liebe Grüße ...
... schrieb: > ICh kann doch einfach die innere und äußere Schleife tauschen. Wenn Du Deine Zeichen Pixel für Pixel ausgibst, ja. Aber aus Performancegründen gewöhnt man sich so etwas schnell ab - und gibt die Bitmuster in Form kompletter Bytes aus. Und da sollte der Bitmapfont schon zur Organisation des Displays passen.
... schrieb: > Dann kommt dann sowas raus...static char header_data[] = { > 0,0,0, > 0,0,0, > 0,0,0, > 0,0,0, > 0,0,0 > }; Deine Formatierung legt nahe, dass du jeweils 3 Byte für jedes Zeichen vorgesehen hast, also die 3 Spalten. Bildschirme und die üblichen HD44780-LCDs (für Custom-Zeichen) wollen aber ein Byte für jede Zeile haben. Siehe hier: http://www.circuitvalley.com/2012/02/lcd-custom-character-hd44780-16x2.html Das geht natürlich viel leichter, wenn du deine Pixel gleich zeilenweise definierst. Es gibt übrigens einige (sehr alte) Programme für den Entwurf von Dot-Fonts, ich habe selbst mal sowas geschrieben weil ich kyrillische Fonts für meine Steuerungen brauchte, aber das war vor 30 Jahren oder so und ist nicht mehr auffindbar. Man braucht sowas heute kaum noch. Du würdest dich übrigens beim Entwurf SEHR viel leichter tun, wenn du Binär-Konstanten verwenden könntest, weil du dann das Zeichen vor dir siehst. Leider kann das C nicht, entweder musst du das per Header in dein C einführen oder du verwendest Assembler.
1 | z.B. (5x7,A,MASM) |
2 | db 00100b |
3 | db 01010b |
4 | db 10001b |
5 | db 11111b |
6 | db 10001b |
7 | db 10001b |
Gruss Reinhard
Hallo zusammen, es scheint ja wirklich unglaublich abschreckend zu sein, mal selbst ein wenig binärkopfrechnen zu machen. Hier ist der Schriftsaft nach Beitrag "Re: Suche Font für LED Matrix 3x5" zum Nutzen und ergänzen:
1 | // 3x5-Nichtproportionalschrift |
2 | // ab Zeichen 32 |
3 | // unvollstaendig |
4 | const unsigned char PROGMEM Font36Lookup [] = { |
5 | 3, // Schriftbreite |
6 | 0x00, 0x00, 0x00, // sp |
7 | 0x00, 0x5e, 0x00, // ! * |
8 | 0x06, 0x00, 0x06, // " * |
9 | 0xff, 0xff, 0xff, // # |
10 | 0x48, 0xd6, 0x24, // $ * |
11 | 0x46, 0x18, 0x62, // % * |
12 | 0xff, 0xff, 0xff, // & |
13 | 0x00, 0x06, 0x00, // ' * |
14 | 0x38, 0x44, 0x82, // ( * |
15 | 0x82, 0x44, 0x38, // ) * |
16 | 0x14, 0x08, 0x3E, // * |
17 | 0x10, 0x38, 0x10, // + * |
18 | 0xa0, 0x60, 0x00, // , * |
19 | 0x10, 0x10, 0x10, // - * |
20 | 0x60, 0x60, 0x00, // . * |
21 | 0x60, 0x18, 0x06, // / * |
22 | 0x7c, 0x42, 0x7c, // 0 * |
23 | 0x44, 0x7e, 0x40, // 1 * |
24 | 0x64, 0x52, 0x4c, // 2 * |
25 | 0x4a, 0x4a, 0x34, // 3 * |
26 | 0x38, 0x24, 0x7e, // 4 * |
27 | 0x4e, 0x4a, 0x32, // 5 * |
28 | 0x3c, 0x4a, 0x32, // 6 * |
29 | 0x62, 0x1a, 0x06, // 7 * |
30 | 0x76, 0x4a, 0x76, // 8 * |
31 | 0x4c, 0x52, 0x3c, // 9 * |
32 | 0x6c, 0x6c, 0x00, // : * |
33 | 0xac, 0x6c, 0x00, // ; * |
34 | 0x10, 0x28, 0x44, // < * |
35 | 0x28, 0x28, 0x28, // = * |
36 | 0x44, 0x28, 0x10, // > * |
37 | 0xFF, 0xFF, 0xFF, // ? |
38 | 0xFF, 0xFF, 0xFF, // @ |
39 | 0x7c, 0x12, 0x7c, // A * |
40 | 0x7c, 0x4a, 0x34, // B * |
41 | 0x3c, 0x42, 0x42, // C * |
42 | 0x7e, 0x42, 0x3c, // D * |
43 | 0x7e, 0x4a, 0x42, // E * |
44 | 0x7e, 0x0a, 0x0a, // F * |
45 | 0x3c, 0x52, 0x34, // G * |
46 | 0x7e, 0x08, 0x7e, // H * |
47 | 0x42, 0x7e, 0x42, // I * |
48 | 0x30, 0x40, 0x3e, // J * |
49 | 0x7e, 0x18, 0x66, // K * |
50 | 0x7e, 0x40, 0x40, // L * |
51 | 0x7e, 0x1c, 0x7e, // M * |
52 | 0x7e, 0x02, 0x7e, // N * |
53 | 0x3c, 0x42, 0x3c, // O * |
54 | 0x7e, 0x12, 0x0c, // P * |
55 | 0x7e, 0x62, 0xfe, // Q * |
56 | 0x7e, 0x32, 0x4e, // R * |
57 | 0x44, 0x4a, 0x32, // S * |
58 | 0x02, 0x7e, 0x02, // T * |
59 | 0x7e, 0x40, 0x7e, // U * |
60 | 0x3e, 0x40, 0x3e, // V * |
61 | 0x3e, 0x7c, 0x3e, // W * |
62 | 0x66, 0x18, 0x66, // X * |
63 | 0x0e, 0x70, 0x0e, // Y * |
64 | 0x62, 0x5a, 0x46, // Z * |
65 | 0x00, 0x7e, 0x42, // [ * |
66 | 0x06, 0x18, 0x60, // backslash * |
67 | 0x42, 0x7e, 0x00, // ] * |
68 | 0x04, 0x02, 0x04, // ^ * |
69 | 0x40, 0x40, 0x40, // _ * |
70 | 0x00, 0x02, 0x04, // ` * |
71 | 0x74, 0x54, 0x78, // a * |
72 | 0x7e, 0x48, 0x30, // b * |
73 | 0x38, 0x44, 0x44, // c * |
74 | 0x30, 0x48, 0x7e, // d * |
75 | 0x38, 0x54, 0x48, // e * |
76 | 0x7c, 0x0a, 0x02, // f * |
77 | 0x98, 0xa4, 0x7c, // g * |
78 | 0x7e, 0x08, 0x70, // h * |
79 | 0x48, 0x7a, 0x40, // i * |
80 | 0x88, 0xfa, 0x00, // j * |
81 | 0x7e, 0x18, 0x64, // k * |
82 | 0x3e, 0x40, 0x40, // l * |
83 | 0x7c, 0x38, 0x7c, // m * |
84 | 0x7C, 0x04, 0x78, // n * |
85 | 0x38, 0x44, 0x38, // o * |
86 | 0xFc, 0x24, 0x18, // p * |
87 | 0x18, 0x24, 0xfc, // q * |
88 | 0x78, 0x04, 0x04, // r * |
89 | 0x48, 0x54, 0x24, // s * |
90 | 0x04, 0x3e, 0x44, // t * |
91 | 0x7C, 0x40, 0x7C, // u * |
92 | 0x3c, 0x40, 0x3c, // v * |
93 | 0x3c, 0x78, 0x3c, // w * |
94 | 0x6c, 0x10, 0x6c, // x * |
95 | 0x9c, 0xa0, 0x7c, // y * |
96 | 0x64, 0x54, 0x4c, // z * |
97 | 0xFF, 0xFF, 0xFF, // A |
98 | 0xFF, 0xFF, 0xFF, // O |
99 | 0xFF, 0xFF, 0xFF, // U |
100 | 0xFF, 0xFF, 0xFF, // a |
101 | 0xFF, 0xFF, 0xFF, // o |
102 | 0xFF, 0xFF, 0xFF, // u |
103 | 0xFF, 0xFF, 0xFF, // ß |
104 | 0xfc, 0x40, 0x7c, // µ * |
105 | 0xFF, 0xFF, 0xFF, // < |
106 | 0xFF, 0xFF, 0xFF, // > |
107 | }; |
Bitte bei Ergänzungen re-posten!
Reinhard Kern schrieb: > Leider kann das C nicht, entweder musst du das per Header in > dein C einführen oder du verwendest Assembler. C selbst leider nicht, der GCC schon: http://gcc.gnu.org/onlinedocs/gcc/Binary-constants.html
Font36Lookup ist 3x6, nicht 3x5. Siehe Anhang. Hier gibt es viele andere Schriftarten, aber mit speziellem Datenformat: https://github.com/olikraus/u8g2/wiki/fntlistall
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.