Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 09.06.2010, 14:39 Titel: Wordprogramm selbst schreiben -> Fonts |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.06.2010, 15:10 Titel: |
|
|
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 |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 09.06.2010, 15:17 Titel: |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.06.2010, 19:24 Titel: |
|
|
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 |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 09.06.2010, 19:37 Titel: |
|
|
defenitiv nicht  |
|
Nach oben |
|
 |
-schumi-

Anmeldungsdatum: 28.10.2009 Beiträge: 131 Wohnort: Südbayern
|
Verfasst am: 09.06.2010, 20:22 Titel: |
|
|
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.06.2010, 20:26 Titel: |
|
|
-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 |
|
 |
-schumi-

Anmeldungsdatum: 28.10.2009 Beiträge: 131 Wohnort: Südbayern
|
Verfasst am: 09.06.2010, 20:29 Titel: |
|
|
Oha, da hab ich gagge verzählt
Aber bei den Standard-Windows Schriftarten sind es nicht viele
(Da find Ich in der Liste blos "Courier" + "Courier New") |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.06.2010, 20:31 Titel: |
|
|
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 |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.06.2010, 20:32 Titel: |
|
|
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 |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 09.06.2010, 20:35 Titel: |
|
|
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
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
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 |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 09.06.2010, 20:58 Titel: |
|
|
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
(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 |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 09.06.2010, 21:01 Titel: |
|
|
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
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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.06.2010, 21:15 Titel: |
|
|
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 |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 09.06.2010, 21:17 Titel: |
|
|
ok, werde es gleich mal umsetzen |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 09.06.2010, 21:25 Titel: |
|
|
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 |
|
 |
Muttonhead

Anmeldungsdatum: 26.08.2008 Beiträge: 565 Wohnort: Jüterbog
|
Verfasst am: 10.06.2010, 19:28 Titel: |
|
|
...(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 |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 10.06.2010, 20:38 Titel: |
|
|
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 |
|
 |
Andy19312
Anmeldungsdatum: 22.10.2005 Beiträge: 428
|
Verfasst am: 11.06.2010, 20:19 Titel: Ein kleines Texteditorprog |
|
|
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 |
|
 |
|