Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Wordprogramm selbst schreiben -> Fonts
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 09.06.2010, 14:39    Titel: Wordprogramm selbst schreiben -> Fonts Antworten mit Zitat

Hallo zusammen,
kennt jemand von euch zufällig eine Seite, bei der die Fonts in xy Grafiken angezeigt werden?

Ich meine z.B. Buchstabe a = xy Grafik dies und Buchstabe b = xy Grafik das.

Wenn ich solche Grafiken hätte, könnte ich leicht die xy Koordinaten auslesen und über einen Screen ausgeben.

Je nachdem wie weit mein Textpuffer ist, habe ich dann immer einen anderen Text stehen.

Ich wollte erst einmal die Standartfonts Arial, Times New Roman und Courier New umsetzen.
In den verschiedensten Größen

Cu Andy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.06.2010, 15:10    Titel: Antworten mit Zitat

Wenn du Truetype-Schriftarten verwenden möchtest, schau dir mal die Freetype-Bibliothek an. Es ist nicht gerade trivial, solche Schriftarten zu rendern (ohne Hilfsbibliotheken).
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 09.06.2010, 15:17    Titel: Antworten mit Zitat

Werd ich mir nachher, nach der Schule mal ausführlich anschauen.
Bisher bin ich davon begeistert.

Hab mal ein kleines Proggi geschrieben:

Taste w u. s = Asci Charackter vor und zurück
Taste a u. d = Schriftgöße ändern

http://andybos.an.funpic.de/Word/Times%20New%20Roman.zip

Das was mich wundert ist:
Die Hoehe der bmp Dateien ist immer gleich groß, jedoch nicht die Breite.
Ist die Breite bei einer Schriftgröße nicht vorgegeben, wie auch die Hoehe?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.06.2010, 19:24    Titel: Antworten mit Zitat

Schau dir mal die Schrift hier im Forum Pixel für Pixel an und überleg dann mal, ob das "i" wirklich genau so breit wie das "W" ist. Nachmessen ist erlaubt.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 09.06.2010, 19:37    Titel: Antworten mit Zitat

defenitiv nicht zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
-schumi-



Anmeldungsdatum: 28.10.2009
Beiträge: 131
Wohnort: Südbayern

BeitragVerfasst am: 09.06.2010, 20:22    Titel: Antworten mit Zitat

Die Buchstaben sind (soweit ich weis) nur bei Lucida Console immer gleich groß
(Deshalb nimm ich das auch bei FB-Edit her, -> übersichtlicher)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.06.2010, 20:26    Titel: Antworten mit Zitat

-schumi- hat Folgendes geschrieben:
Das ist nur (soweit ich weis) bei Lucida Console so


So? FontProp.bas liefer mir unter anderem:

Zitat:
8514oem
Fixedsys
Terminal
Courier
t!s-b-strict v0.7
t!s-b-struct v0.7
t!s-MicroKnight v0.7
t!s-mO'sOul v0.7
t!s-P0T-NOoDLE v0.7
t!s-Topaz+ v0.7
t!s-Topaz v0.7
Marlett
BatangChe
GungsuhChe
Courier New
GulimChe
DotumChe
Lucida Console
MingLiU
MingLiU_HKSCS
MingLiU-ExtB
MingLiU_HKSCS-ExtB
MS Gothic
MS Mincho
SimSun
NSimSun
SimSun-ExtB
Simplified Arabic Fixed
Miriam Fixed
Rod
FangSong
SimHei
KaiTi
DFKai-SB
Consolas
Fixedsys Excelsior 2.00
MT Extra
Jokerman Alts LET
Tiranti Solid LET
barcode font
DeluxeFont
Manaspace
Opus Percussion
Perfect DOS VGA 437 Win
Perfect DOS VGA 437
Shift
WP IconicSymbolsA
WP IconicSymbolsB
WP Japanese
Writers bold
Writers original
Writers 2
DejaVu Sans Mono

Ich glaube, das sind ein paar mehr Fonts als nur "Lucida Console"! Es gibt wesentlich mehr proportionale Schriftarten, als du dir denken kannst!
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
-schumi-



Anmeldungsdatum: 28.10.2009
Beiträge: 131
Wohnort: Südbayern

BeitragVerfasst am: 09.06.2010, 20:29    Titel: Antworten mit Zitat

Oha, da hab ich gagge verzählt grinsen
Aber bei den Standard-Windows Schriftarten sind es nicht viele
(Da find Ich in der Liste blos "Courier" + "Courier New")
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.06.2010, 20:31    Titel: Antworten mit Zitat

Zitat:

Fixedsys
Terminal
Marlett (ok, sind keine buchstaben aber egal)
DejaVu Sans Mono

Und die ganzen Ming, Sun, Che und wie auch immer sie heißen mögen, ist alles Standardmäßig bei Windows dabei. (Benuter von Betriebssystemen, die 2001 veröffentlicht wurden, werden einen Großteil davon nicht haben).
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 09.06.2010, 20:31    Titel: Antworten mit Zitat

Meine erste Times New Roman Schrift mit einer Schriftgröße von 20

http://andybos.an.funpic.de/Word/20.zip
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.06.2010, 20:32    Titel: Antworten mit Zitat

Andy19312 hat Folgendes geschrieben:
Meine erste Times New Roman Schrift mit einer Schriftgröße von 20

Und wo ist der Code? EXEn werden nicht ausgeführt!
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 09.06.2010, 20:35    Titel: Antworten mit Zitat

Code:

screenres 600,400,32
dim text as string
dim as integer i,a,ii
dim suchen as string
dim asci as integer

text = "Ich finde, dass freebasic eine schöne Sprache ist"
redim array(1 to 10000000) as string
dim as string x,y,f
dim as integer xplan,yplan
dim as integer suchen1,suchen2

for ii = 1 to len(text)

    suchen = mid(text,ii,1)
    asci = asc(suchen)
    a = 0
    open str(asci)+".bin" for input as #1
    do
    a = a + 1
    input #1, array(a)
    loop until eof(1)
    close #1

    for i = 1 to a   
    if xplan > 580 then
        yplan = yplan + val(y)
        xplan = 0
    end if
        suchen1 = instr(array(i),"|")
        suchen2 = instr(array(i),"-")
       
        x = mid(array(i),1,suchen1-1)
        y = mid(array(i),suchen1+1,suchen2-1)
        f = mid(array(i),suchen2+1, len(array(i)))

        if f = "1" then
        pset(xplan+val(x),yplan+val(y)),&h000000
        else
        pset(xplan+val(x),yplan+val(y)),&hffffff
        end if
    next

    xplan = xplan + val(x)
next
sleep


schwups code ist da zwinkern

Wie man sehen kann, wird jedes Asci Charackter aus dem Filevorrat ausgelesen.
xplan wird addiert, so dass das nächste Zeichen nebendran gezeichnet wird.
yplan wird addiert, wenn die Screenbreite überschritten wird, so dass der Text in die nächste Zeile gelangt grinsen

Edit: Mich hatte es selbst gefuchst, dass man nicht andere Fonts nehmen konnte.
Jetzt hat es ein Ende.
Aber alleine für alle Schriftgrößen von Times New Roman hab ich alleine schon 26 MB Festplattenspeicher benötigt.
Naja
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 09.06.2010, 20:58    Titel: Antworten mit Zitat

Keine Ahnung, ob das das dienlich ist - Volta hat einen Artikel über Schriftarten unter FreeBASIC verfasst. Das Erstellen nichtproportionaler Schriftarten ist damit recht aufwändig, weil die Schriftart in einem BMP liegen muss und du die Pixelbreite jedes Zeichens bestimmen musst (im Beispiel ist es die konstante Breite 8), dafür kannst du einen einmal eingelesenen Schriftsatz einfach über DRAW STRING ausgeben.

Was anderes:
Code:
suchen = mid(text,ii,1)
asci = asc(suchen)

geht schneller mit
Code:
ascii = text[ii-1]

(mit "schneller" meine ich die Verarbeitungsgeschwindigkeit)
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 09.06.2010, 21:01    Titel: Antworten mit Zitat

wollte halt auch mal ein bischen basteln.

Aber momentan lese ich ja die Daten von Dateien aus.
Das ist recht lahm.

Anderst würde es aussehen, wenn ich alle Dateien sepperat in einen array laden würde und dann erst mit der Textausgabe beginne.
Das wäre aber endlos langer Code weinen

16 * 223 = 3568 Arrays, da x y und Farbwert
3568 * 3 = 10704 Arrays, wahnsinn

Edit: Obwohl ich könnte die Arrays deklarieren und den Programmierschnipsel, indem ich einen anderen Code drüber laufen lasse, ist mir gerade aufgefallen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.06.2010, 21:15    Titel: Antworten mit Zitat

dein code ist auch extrem ineffizient.
hier nur einige wenige, aber hilfreiche vorschläge:
- gescheites dateiformat entwickeln
-- sodass alle zeichen in einer datei liegen
-- pro pixel auch wirklich nur ein bit belegt wird (also 8 pixel in einem byte)
- die datei nur einmal in ein array von variabler größe laden
- auf dieses array während dem ausgeben des textes zugreifen.

variables array is nich nur flexibler, es hat auch den vorteil, dass es automatisch nicht aufm stack landet, der nur sehr begrenzt groß (bzw klein) ist.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 09.06.2010, 21:17    Titel: Antworten mit Zitat

ok, werde es gleich mal umsetzen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 09.06.2010, 21:25    Titel: Antworten mit Zitat

Ist schon ein wenig aelter, aber hab vor ewigkeiten einfach die Fonts die ich gerade brauchte zu einer funktion verarbeitet, war noch keine endgueltige und perfekte loesung aber zumindest nicht auf externe dateien angewiesen...

Um die Fonts zu einer Funktion zu erstellen hatte ich FB_MakeFont von stevie verwendet und ein bastelcode geschrieben der das fuer mich automatisch macht...

hab mal SPrint und ein Beispiel hochgeladen

http://www.freebasic-portal.de/porticula/functionsprint-bi-1109.html

http://www.freebasic-portal.de/porticula/spfftimes-bi-1110.html
.oO(Glaub der hat den code bisschen verwurschtelt?!)

wenn ich den bastelcode gefunden hab kann ich den auch noch hinterherjagen
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 565
Wohnort: Jüterbog

BeitragVerfasst am: 10.06.2010, 19:28    Titel: Antworten mit Zitat

...(Werbung) ich hatte mir da mal ein kleines Tool geschrieben, in Purebasic 3.nochwas, das einen beliebigen Font in eine Bitmap presst.

Basierend auf Voltas Font-Tutorial (link siehe oben bei nemored) ist ein Beispiel mit im Archiv, wie man den erzeugten BitmapFont in FB benutzt.

http://www.freebasic-portal.de/downloads/sonstiges/charset2fbfont-88.html
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 10.06.2010, 20:38    Titel: Antworten mit Zitat

Außerdem gibt's natürlich noch den "Bitmap Font Builder" (google), der das auch sehr gut macht und die buchstabenbreiten in mehreren formaten exportieren kann.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 11.06.2010, 20:19    Titel: Ein kleines Texteditorprog Antworten mit Zitat

Hab mir 3 Stunden den Kopf zerbrochen und bin dann zu folgendem Ergebnis gekommen.

Mit der Schriftgröße 20 und andere Schriftgrößen, kann ich Times New Roman schreiben.

Mit Enter natürlich ein Zeilenumbruch.
Schreibt man eine Zeile voll, schreibt es in die nächste Zeile.

Hier das Proggi:

http://andybos.an.funpic.de/Word/201.zip

Cu Andy

Wäre über Lob bzw. Kritik erfreut.

Ich frage mich selbst, weshalb ich mit
do
textu = GETKEY
wandel = chr(textu)

text = text + wandel
loop

der Text zwar so sein soll, wie er ist, er aber trotzdem was anderes anzeigt.

Achso, gebe ich ein

text ="Freebasic ist schön"

dann zeigt er mir den Text richtig an

gibts da ein Problem mit getkey?

@Jojo ich hab den ASCI-Font-Gelump in eine Datei geschaufelt und greife dann nur verschiedene Bereiche darinne ab.
Natürlich wenn alles in einem Array "Arbeitsspeicher" ist.


Zuletzt bearbeitet von Andy19312 am 11.06.2010, 20:26, insgesamt 2-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz