Code archives/Graphics/BMPFont

This code has been declared by its author to be Public Domain code.

Download source code

BMPFont by maverick692003
Create BMPs out of TrueType Fonts and use them.
;--------------------------------------------------------------------------;
; BMPFont v1.0                                                             ;
;--------------------------------------------------------------------------;
; Latest Changes: 20.05.2003                                               ;
;--------------------------------------------------------------------------;
;                                                                          ;
; Font = BMPFont_Load(File$,Width,Height)                                  ;
;                                                                          ;
; File$ <-------------- Name of Bitmap Font                                ;
; Width <-------------- Width of a single Char in pixel                    ;
; Height <------------- Height of a single Char in pixel                   ;
;                                                                          ;
;--------------------------------------------------------------------------;
;                                                                          ;
; BMPFont_Print(X,Y,Txt$,Center_X,Center_Y,Font)                           ;
;                                                                          ;
; X <------------------ X Position                                         ;
; Y <------------------ Y Position                                         ;
; Txt$ <--------------- String to print                                    ;
; Center_X <----------- true/false - to center on X-Position               ;
; Center_Y <----------- true/false - to center on Y-Position               ;
; Font <--------------- font loaded with BMPFont_Load                      ;
;                                                                          ;
;--------------------------------------------------------------------------;
;                                                                          ;
; succ = BMPFont_Create(FontName$,FontSize,Width,Height,File$)             ;
;                                                                          ;
; Returns true/false if file was saved                                     ;
;                                                                          ;
; FontName$ <---------- String, TrueType Font Filename, ex.: "Arial"       ;
; FontSize <----------- Fontheight in pixel                                ;
; Width <-------------- Size of width a single char should use             ;
; Height <------------- Size of height a single char should use            ;
; File$ <-------------- String, Filenmae where BMP should be saved to      ;
;                                                                          ;
;--------------------------------------------------------------------------;
; Simple Example code                                                      ;
;--------------------------------------------------------------------------;
; BMPFONT_Create("Arial",30,30,30,"test.bmp")                              ;
; font=BMPFONT_Load("test.bmp",30,30)                                      ;
; ClsColor 0,0,120                                                         ;
; Repeat                                                                   ;
; Cls                                                                      ;
; 	BMPFont_Print(50,50,"TEST",0,0,font)                                   ;
;	Flip                                                                   ;
; Until KeyHit(1)                                                          ;
; End                                                                      ;
;--------------------------------------------------------------------------;


Function BMPFont_Load(File$,Width,Height)
	font = 0
	font = LoadAnimImage(file$,width,height,0,127-31)
	If font=0 Then font=False
	Return font
End Function

Function BMPFont_Print(X,Y,Txt$,Center_X,Center_Y,Font) 
  If Font 
    lang=Len(txt$) 
    w=ImageWidth(Font) 
    h=ImageHeight(Font) 
    width=w*lang 
    If center_x Then x=x-(width/2) 
    If center_y Then y=y-(h/2) 
    For i=1 To lang 
      DrawImage Font,x,y,(Asc(Mid(txt$,i,1)))-32 
      x=x+w 
    Next 
  EndIf    
End Function 

Function BMPFont_Create(FontName$,FontSize,Width,Height,File$)
	font = LoadFont(FontName$,FontSize)
	SetFont font

	myFont = CreateImage (width*16,height*6)
	SetBuffer ImageBuffer(myFont)
	frame=0
	
	x = width/2
	y = height/2

	For i=32 To 127
		Text x,y,Chr(i),True,True
		x = x + width
		If x>width*16 Then x=width/2 : y=y+height
	Next
	
	Return SaveImage (myFont,File$)
End Function

Comments

EOF2004
Nice. Works well for creating my font packs in Image Packer.

Some modifications I made:

* Made everything LOCAL to avoid variable clashes

* BMPFont_Create()
Set the buffer back to previous one in use.
Added optional BOLD/ITALIC parameters.


Any chance I can supply this with Image Packer as an additional aid to creating font packs?
Full credit will be given.


maverick692007
Any chance I can supply this with Image Packer as an additional aid to creating font packs?


yes, feel free to use it...


Code Archives Forum