Oletko kyllästynyt siihen että CoolBasic-pelit tukee vain ja ainoastaan Windossin fonts kansiossa olevia fontteja? Nyt ei ole enää hätää. TL Font System on saapunut markkinoille. Se on yksinkertainen rasterifontti systeemi joka mahdollistaa erilaisten fonttien käytön peleissäsi.
Vähän tuunaamalla vielä saat tehtyä jopa omat uniikit fontit, mutta se jätetään kotitehtäväksi(?)
Koodia ei ole ihan kauheasti kommentoitu joten toivotaan että koodi itse selittäisi itsensä jos haluat saada sen toiminnasta jotain selkoa.
The Ohje kirjoitti:
Funktion käyttö fontti konvertterissa
MakeTLFFont(uuden tiedoston nimi, kirjaimen ruudun leveys, kirjaimen ruudun korkeus, fontin nimi Fonts kansiossa, fontin koko [, paksu fontti, kursivoitu fontti, alleviivattu fontti])
The Ohje kirjoitti:
Funktioiden käyttö itse systeemissä
LoadTLFFont(.tlf fontin tiedostonimi[, R, G, B]) - Palauttaa uuden fontin ID numeron. Voit määrittää värin fontille latausvaiheessa
SetTLFFont(fontin ID numero) - Laittaa ladatun fontin käyttöön
TLFText(teksti, x, y[, kirjainten väli]) - Tulostaa tekstin annettuun paikkaan
TLFTextWidth(teksti[, kirjainten väli]) - Laskee annetun merkkijonon pituuden pikseleinä
TLFTextHeight(teksti) - Palauttaa annetun merkkijonon korkeuden pikseleinä
Fonttikonvertterin koodi
Global screenw, screenh
screenw=600
screenh=100
SCREEN screenw, screenh
Dim TLFFont(256)
Global SaveTemp
SaveTemp=False
//---
// Luodaan fontti
font=MakeTLFFont("times.tlf", 25, 30, "Times New Roman", 20)
// Funktiot
Function MakeTLFFont(newfpath$, fw, fh, fontname$, fontsize, bold=0, italic=0, underline=0)
	CenterText screenw/2, screenh/2, "Odota hetki... Fonttia "+fontname$+" muutetaan .tlf muotoon", 2
	DrawScreen
	SetFont LoadFont(fontname$, fontsize, bold, italic, underline)
	img	= MakeImage(fw*16,fh*16)
	DrawToImage img
	For i=1 To 256
		l$=Chr(i)
		w=TextWidth(l$)
		h=TextHeight(l$)
		If w<fw And h<fh Then
			CenterText x*fw+fw/2,-(y*fh+fh/2), l$, 2
		EndIf
		x+1
		If i Mod 16 = 0 Then y+1:x=0
	Next i
	DrawToScreen
	If SaveTemp Then SaveImage img, "temp.bmp"
	//---
	f	= OpenToWrite(newfpath$)
	If f=0 Then MakeError "Unable To Create "+newfpath$
	WriteInt f, fw
	WriteInt f, fh
	x=0
	y=0
	For i=1 To 256
		l$=Chr(i)
		lw=TextWidth(l$)
		temp		= MakeImage(fw,fh)
		TLFFont(i)	= MakeImage(lw, fh)
		// Kirjain temppiin reunojen kanssa
		DrawToImage temp
			DrawImageBox img, 0, 0, x*fw, y*fh, fw, fh
		DrawToScreen
		// Reunat pois plz
		DrawToImage TLFFont(i)
			DrawImageBox temp, 0, 0, fw/2-lw/2, 0, lw, fh
		DrawToScreen
		DeleteImage temp
		x+1
		If i Mod 16 = 0 Then y+1:x=0
	Next i
	For i=1 To 256
		l$=Chr(i)
		lw=TextWidth(l$)
		WriteShort f, i
		WriteInt f, lw
		For y=0 To fh
			For x=0 To ImageWidth(TLFFont(i))
				PickImageColor TLFFont(i), x, y
				r	= getRGB(RED)
				g	= getRGB(GREEN)
				b	= getRGB(BLUE)
				// Tarkistetaan onko pikseli erivärinen kun musta ja jos ON
				// niin kirjota se ylös ja jos ei niin älä
				If r<>0 And g<>0 And b<>0 Then
					WriteByte f, 1 'Joo
				Else
					WriteByte f, 0 'Ei
				EndIf
			Next x
		Next y
	Next i
	CloseFile f
EndFunctionItse fonttisysteemi
Global CurFontID, UsingFont
UsingFont=-1
Const FONTCOUNT = 5 // Saa muuttaa tarpeen mukaan
Const LETTERIMG = 0 // Älä muuta
Const LETTERWIDTH = 1 // Sama homma
Dim TLFFont(256, 1, FONTCOUNT)
// Ylläolevat vakiot ja globaalit on pakolliset
//---
font=LoadTLFFont("times.tlf", Rand(100,255), Rand(100,255), Rand(100,255))
SetTLFFont(font)
Color 255,255,255
Repeat
	Text 0,0,"FPS: "+FPS()
	s$	= "Hei täähän toimii hienosti!"
	s2$	= Date()+" "+Time()
	TLFText(s2$, MouseX()-TLFTextWidth(s$)/2, MouseY()-TLFTextHeight(s$)/2)
	TLFText(s$, 200-TLFTextWidth(s$)/2, 70)
	DrawScreen
Forever
Function SetTLFFont(fontid) ' Vaihtaa fontin aktiiviseksi. Tämä funktio syö LoadTLFFontin palauttamia ID numeroita
	If fontid<0 Or fontid>CurrentFontID Then Return 0
	UsingFont=fontid
EndFunction
Function LoadTLFFont(filepath$, r=255, g=255, b=255) ' Lataa fontin ja palauttaa sen ID numeron
	f	= OpenToRead(filepath$)
	fw	= ReadInt(f)
	fh	= ReadInt(f)
	Color r, g, b
	For i=1 To 256
		lid	= ReadShort(f)
		lw	= ReadInt(f)
		TLFFont(i, LETTERWIDTH, CurFontID)	= lw
		TLFFont(i, LETTERIMG, CurFontID)	= MakeImage(lw, fh)
		DrawToImage TLFFont(i, LETTERIMG, CurFontID)
		For y=0 To fh
			For x=0 To lw
				pix=ReadByte(f)
				If pix=1 Then
					Dot x, y
				EndIf
			Next x
		Next y
		DrawToScreen
	Next i
	CloseFile f
	fontid=CurFontID
	CurFontID+1
	Return fontid
EndFunction
Function TLFTextWidth(txt$, spacing=0) ' Tekstin leveys senhetkisellä fontilla
	fontid=UsingFont
	If fontid=-1 Then Return 0
	l = Len(txt$)
	For i=1 To l
		letter$ = Mid(txt$, i, 1)
		lw = TLFFont(Asc(letter$), LETTERWIDTH, fontid)+spacing
		width+lw
	Next i
	Return width
EndFunction
Function TLFTextHeight(txt$) ' Tekstin korkeus senhetkisellä fontilla
	fontid=UsingFont
	If fontid=-1 Then Return 0
	lh = TLFFont(1, LETTERIMG, fontid)
	Return ImageHeight(lh)
EndFunction
Function TLFText(txt$, x, y, spacing=0)
	fontid=UsingFont
	If fontid=-1 Then Return 0
	l = Len(txt$)
	For i=1 To l
		letter$ = Mid(txt$, i, 1)
		lw = TLFFont(Asc(letter$), LETTERWIDTH, fontid)+spacing
		DrawImage TLFFont(Asc(letter$), LETTERIMG, fontid), x, y
		x+lw
	Next i
EndFunctionAihe on jo aika vanha, joten et voi enää vastata siihen.