Code archives/Miscellaneous/B+ LoadFont Validation
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
| BLITZPLUS ONLY! Will not work for B3D! ________________ The following code allows the user to check for whether a font will load correctly or not. Either supply an installed font "Internal Name" such as "Arial Narrow" or "Courier" etc. Or the fully qualified path to a TTF file. | |||||
;The functions - Please include both functions in your programs for this to work.
;Before using LoadFont, check the font will load correctly by calling ValidateFont()
;If the font loads and is printable by Blitz, then ValidateFont() will return TRUE
Function ValidateFont%(Name$)
Local Font=LoadFont(Name,0)
Local Validate=( Lower(Name)=Lower(FontName(Font)) ) + ( RetrieveFileName(Name)=Lower(FontName(Font)) )
FreeFont Font
Return Validate
End Function
Function RetrieveFileName$(FilePath$)
Local TestPath$=Lower(FilePath)
If (FileType(FilePath)=2)
DebugLog("Path leads to directory, not file")
Return ""
End If
If (Not(Instr(FilePath,"\")))
Return RetrieveFileName(SystemProperty("appdir")+FilePath)
End If
If (FileType(FilePath)<>1)
If (Left(TestPath,Len(SystemProperty("appdir"))) = Lower(SystemProperty("appdir")))
DebugLog("File does not exist")
Return ""
Else
Return RetrieveFileName(SystemProperty("appdir")+FilePath)
End If
End If
Local ns_Iterbyte%
Local ns_Len=Len(TestPath)
For ns_Iterbyte = ns_Len To 1 Step -1
If (Mid(TestPath,ns_Iterbyte,1)="\")
; Trim target from path
TestPath=(Right(TestPath,ns_Len-ns_Iterbyte))
Exit
EndIf
Next
If (Instr(TestPath,"."))
If (Lower(Right(TestPath,4)=".ttf"))
TestPath=Left(TestPath,Len(TestPath)-4)
End If
End If
Return TestPath
End Function |
Comments
None.
Code Archives Forum