Code archives/Graphics/BMPFont

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

Download source code

BMPFont by maverick69
(Posted 24 years ago)
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

Jim Brown
(Posted 23 years ago)
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.

maverick69
(Posted 19 years ago)
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