BitmapFont 1.13: Systemnaher Loader für Bitmap-Fonts

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

d-bug

Betreff: BitmapFont 1.13: Systemnaher Loader für Bitmap-Fonts

BeitragSo, Nov 26, 2006 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Version 1.13
BitmapFont lädt einen BMP-oder PNGFont und fügt ihn so in das System ein, dass er mit den normalen ImageFont-Funktionen benutzt werden kann. Der geladene Font kann also mit DrawText gezeichnet werden und die Manipulationen, wie SetScale, SetRotation usw. sind auch ohne weiteres möglich.

Download:
Den Download gibt es hier.


Version History:
Da dieser Post zu lang wurde, hab ich die History nach hier verlagert.


cheers
  • Zuletzt bearbeitet von d-bug am Mo, Mai 18, 2009 17:29, insgesamt 20-mal bearbeitet

D2006

Administrator

BeitragSo, Nov 26, 2006 23:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist echt gut geworden und in meinem Spiel so gut wie eingebaut.

Bin stolz auf dich! Wink
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

hamZta

Administrator

BeitragSo, Nov 26, 2006 23:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Sehr hilfreich! Läuft einwandfrei auf dem Mac!

Vielen Dank

hamZta
Blog.

BladeRunner

Moderator

BeitragMo, Nov 27, 2006 0:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe einen Bug zu verzeichnen- ich lud einen Zeichensatz ein welcher den zur Verfügung stehenden Platz nicht komplett ausnutzt. Der Rest des Zeichensatzes ist transparent.
Beim einzeichnen musste ich feststellen dass die Zeichen auf eine Grundlinie versetzt werden, wenn sie nicht bis komplett auf den 'boden' reichen. Dadurch wird das Bild verzerrt. Ich musste in den Zeichensatz in die Ecken der einzelnen Zeichen punkte mit Transparenz 1 einzeichnen um das zu vermeiden.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

d-bug

BeitragMo, Nov 27, 2006 8:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal Danke, für die Resonanz!

@Blade
Kannst du mir vielleicht den besagten Font mal per PM zukommen lassen? Am liebsten die Version, die du nicht nachbearbeitet hast. Man ist ja schließlich faul. Smile

Grüße

d-bug

BeitragMo, Nov 27, 2006 19:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Version 1.01
deswegen auch der Doppelpost (Gnade! *winsel*)

Download und Beschreibung gibts im ersten Post. Oder beim nächsten synchronisieren über
den BlitzHelp-Module Server!

Grüße²
  • Zuletzt bearbeitet von d-bug am Fr, Feb 02, 2007 18:33, insgesamt einmal bearbeitet

d-bug

BeitragFr, Jan 26, 2007 17:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Version 1.02

Download und Beschreibung gibts im ersten Post. Oder beim nächsten synchronisieren über
den BlitzHelp-Module Server!

cheers
  • Zuletzt bearbeitet von d-bug am Fr, Feb 02, 2007 18:33, insgesamt einmal bearbeitet

d-bug

BeitragFr, Feb 02, 2007 18:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Version 1.05

Download und Beschreibung gibts im ersten Post. Oder beim nächsten synchronisieren über
den BlitzHelp-Module Server!

cheers

d-bug

BeitragSo, Feb 04, 2007 14:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Version 1.06

Download und Beschreibung gibts im ersten Post. Oder beim nächsten synchronisieren über
den BlitzHelp-Module Server!

cheers

(Erschütternd, dass ich ewig diesen Thread selber pushen muss, aber es schreibt ja niemand sonst etwas hier rein Very Happy)

Plasma

Betreff: he

BeitragSo, Feb 04, 2007 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
ich nutze das teil schon yay
kommt gut rüber in zusammenhang mit dem programm vonsuco-x
habe nur vergessen mich zu bedanken .

mfg

Vertex

BeitragSo, Feb 04, 2007 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Wird eigentlich Kerning unterstützt? Nicht, dass ich beispielsweise Helvetica als monospace Schrift gerendert bekomme.
vertex.dreamfall.at | GitHub

d-bug

BeitragSo, Feb 04, 2007 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
@vertex
Nein, Kerning wird nicht unterstützt, auf den Gedanken bin ich garnicht gekommen. Ursprünglich war der Loader auch nur für Bitmapfonts gedacht, um diese so einfach wie möglich nach BMax zu bekommen, ohne sich extra eine eigene DrawText Funktion schreiben zu müssen. Bitmapfonts gibt es nicht all zu viele mit Kerning, zumindest hab ich noch keinen gefunden. TTF Fonts kann man damit nur laden, wenn man sie vorher mit Suco-X' Font Extractor bearbeitet hat. Dann sind sie allerdings keine TTF Fonts mehr.
Ich denke auch nicht, dass TImageFont Kerning unterstützt. Da muss ich mich nochmal mit beschäftigen.

cheers

Horst der Biber

BeitragMi, Feb 14, 2007 20:26
Antworten mit Zitat
Benutzer-Profile anzeigen
hab s jetzt erst entdeckt..
echt cool das ding! voll einfach und so. danke!

hab nur ne kleine veränderung vorgenommen
und zwar hab ich das
Code: [AUSKLAPPEN]
'Reelle Breite aus der Pixmap auslesen
For y = 0 Until tilesize
   For x = 0 Until tilesize
      If ((font.Glyphs[index].G_Pixmap.ReadPixel(x,y) Shr 24) & $FF) > $00
         If StartX = 0 Or StartX < x StartX = x
      EndIf
      If ((font.Glyphs[index].G_Pixmap.ReadPixel(tilesize - x - 1,y) Shr 24) & $FF) > $00
         If EndX = 0 Or EndX > (tilesize - x - 1) EndX = (tilesize - x - 1)
      EndIf
   Next
Next
'Reelle Höhe aus der Pixmap auslesen
For x = 0 Until tilesize
   For y = 0 Until tilesize
      If ((font.Glyphs[index].G_Pixmap.ReadPixel(x,y) Shr 24) & $FF) > $00
         If StartY = 0 Or StartY < y StartY = y
      EndIf
      If ((font.Glyphs[index].G_Pixmap.ReadPixel(x,tilesize - y - 1) Shr 24) & $FF) > $00
         If EndY = 0 Or EndY > (tilesize - y - 1) EndY = (tilesize - y - 1)
      EndIf
   Next
Next
'Glyph-Koordinaten und Abmaße setzen
font.Glyphs[index].G_Width = StartX - EndX
font.Glyphs[index].G_Height = StartY - EndY
font.Glyphs[index].G_X = -EndX
font.Glyphs[index].G_Y = -StartY
font.Glyphs[index].G_Advance = font.Glyphs[index].G_Width + charspaceing
If (font.Glyphs[index].G_Height + 1) > font.FontHeight
   font.FontHeight = (font.Glyphs[index].G_Height + 1)
EndIf

mit dem
Code: [AUSKLAPPEN]
'Reelle Breite aus der Pixmap auslesen
For y = 0 Until tilesize-1
   For x = 0 Until tilesize-1
      If ((font.Glyphs[index].G_Pixmap.ReadPixel(x,y) Shr 24) & $FF) > $00
         If EndX < x Then EndX = x
      EndIf
   Next
Next
'Reelle Höhe aus der Pixmap auslesen
For x = 0 Until tilesize-1
   For y = 0 Until tilesize-1
      If ((font.Glyphs[index].G_Pixmap.ReadPixel(x,y) Shr 24) & $FF) > $00
         If EndY < y Then EndY = y
      EndIf
   Next
Next
'Glyph-Koordinaten und Abmaße setzen
font.Glyphs[index].G_Width = EndX +1
font.Glyphs[index].G_Height = -(EndY +1) ' <-- Edit
font.Glyphs[index].G_X = 0
font.Glyphs[index].G_Y = 0
font.Glyphs[index].G_Advance = font.Glyphs[index].G_Width + charspaceing
If (font.Glyphs[index].G_Height + 1) > font.FontHeight
   font.FontHeight = (font.Glyphs[index].G_Height + 1)
EndIf
ersetzt.

und ne tolle font hab ich auch gemalt Razz
user posted image

hier der code zum laden von dem ding
Code: [AUSKLAPPEN]
SetMaskColor 100,120,80
Local charlist:String="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ™abcdefghijklmnopqrstuvwxyzäöüß.:,;!?€(/)"
SetImageFont LoadBitmapFont("bmpfont.png",16,7,charlist,1)

d-bug

BeitragMi, Feb 14, 2007 20:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke Horst!

Deine Änderung werde ich so allerdings nicht übernehmen. Wink
Sie sorgt lediglich dafür, dass jetzt die Chars alle Links im Tile sein müssen,
damit die Breite noch stimmt. Eine Höhenberechnung wird in der nächsten Version eh nicht mehr verfügbar sein. Ab dann muss die höhe des Fonts = der Tilehöhe sein und deren Inhalt muss im Image ausgerichtet sein. Dies flog raus, weil Fonts mit Kleinbuchstaben, die die Nulllinie unterschreiten (g, p, q...) falsch berechnet und gezeichnet werden. Dazu will mir keine Lösung einfallen, weil es einfach zu viele verschiedene Fonts gibt um das in eine gute, einfach Lösung zu packen. Ich bleib aber am Ball!

Aber diese Version wird noch nicht veröffentlicht, da es da noch ein paar Fixes zu machen gibt. Hab ich aber gerade keine Zeit zu.

Außerdem will ich mir noch Gedanken über Kerning machen. Aber das kommt sicher erst im übernächsten Release. Das scheint mir eine recht umfangreiche Kiste zu werden.
 

Ronny

BeitragMo, Feb 19, 2007 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie waers, jedem Glyph eine Pixelreihe mehr zu spendieren... bspweise immer links, in diesem koennte man bequem per Bildbearbeitung speziell gefaerbte Pixel unterbringen - ein magenta farbener Pixel bestimmt dann die Baseline etc.
Gleiches koennte man natuerlich auch horizontal machen - um nette Kernings festlegen zu koennen. Anders als bei Konfigurationsdateien hat der Fontdesigner dann gleich visuell die Moeglichkeit, sich die Sachen zurechtzubasteln.


bye Ron

d-bug

BeitragDi, Feb 20, 2007 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Version 1.10

Download und Beschreibung gibts im ersten Post. Oder beim nächsten synchronisieren über
den BlitzHelp-Module Server!


@Ronny:
Leider bedarf es da wahrscheinlich wieder eines speziellen Fonttools weil 99% aller User zu faul sind ihre bisherigen Fonts per Hand umzuarbeiten. Die Idee ansich ist aber nicht schlecht.


cheers
  • Zuletzt bearbeitet von d-bug am Mi, Feb 21, 2007 18:20, insgesamt 2-mal bearbeitet
 

Ronny

BeitragMi, Feb 21, 2007 0:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ansonsten waere da noch die Moeglichkeit... die "durchschnittliche" Stelle zu berechnen, an der ein Zeichen aufhoert (also maxY) - obwohl, was noch besser waere - fuer jedes ermittelte "maxY" wird ein temporaerer Zaehler eingebracht... der Zaehler mit der hoechsten Anzahl, ist die Stelle, an der die Baseline der Zeichen liegt...

Aehnlich kann man mit der "Oberkante" verfahren, wobei hier aber sicherlich die zweithaeufigste Erwaehnung wichtig waere... sie stellt die Oberkante fuer kleine Buchstaben dar (zwar ist mit "b, d, t, f, l..." eine Ausnahme zu sehen, allerdings sind die anderen Buchstaben vorwiegend auf gleicher Hoehe anzusiedeln (bei Standardschrift-Design).


bye Ron

d-bug

BeitragMi, Feb 21, 2007 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Version 1.11

Download und Beschreibung gibts im ersten Post. Oder beim nächsten synchronisieren über
den BlitzHelp-Module Server!

cheers
  • Zuletzt bearbeitet von d-bug am Fr, Nov 16, 2007 23:17, insgesamt einmal bearbeitet

Justus

BeitragFr, März 16, 2007 12:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich war ja zuerst skeptisch was Bitmap-Fonts angeht, aber dein Modul hat mich absolut überzeugt und die Funktionen werden ab sofort von mir genutzt. Vielen Dank auch an Suco-X, der diesen wunderbaren FontExtractor programmiert hat.

d-bug

BeitragFr, Nov 16, 2007 23:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Version 1.12
Kleinerer BugFix für die Freunde des PowerPCs. Dank BigEndian Architektur konnten auf älteren Macs keine
Suco-bzw. Candyfonts geladen werden. Das wurde nun behoben.

Download und Beschreibung gibts im ersten Post.

cheers

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group