1
1
Fork 0
mirror of https://github.com/QB64Official/qb64.git synced 2024-07-05 17:00:26 +00:00
qb64/internal/help/_LOADFONT.txt

95 lines
5.1 KiB
Plaintext

The '''_LOADFONT''' function loads a TrueType font (.TTF) file of a specific size and style and returns a [[LONG]] font handle value > 0.
{{PageSyntax}}
: handle& = {{KW|_LOADFONT}} (''TTF_filename$'', ''size%''[, "MONOSPACE|, BOLD|, ITALIC|, UNDERLINE|, UNICODE|, DONTBLEND"])
{{PageDescription}}
* The assigned [[LONG]] font ''handle'' variable return value designates a font style to be used somewhere in a program.
* ''TTF_filename$'' is the filename of '''truetype''' fonts only. Can include the path to the font file. Best to include font files with a program.
* ''Size'' is the [[INTEGER]] height of the font. If the size is too large or small an [[ERROR Codes|error]] will occur!
* ''Style'' parameter(s) used, if any, are literal [[STRING]]s(in quotes) or variable text parameters.
:* '''"Monospace" has limited font file selections and cannot be used with variable width fonts!
:* '''"DONTBLEND"''' turns off [[_ALPHA]] blending of fonts. This can also be done with the [[_DONTBLEND]] statement.
:* You can pass different font styles using different predefined [[STRING]] variable lists. You '''can''' include an empty style string!
* '''Always check that font handle values are greater than 0 before using them or [[ERROR Codes|illegal function errors]] may occur!'''
* '''NOTE: SCREEN 0 can only use ONE font on a screen page! Thus a style like underline would affect the entire page.'''
* Font sizes can be found using the [[_FONTHEIGHT]] function. Font ''size''s can also affect [[SCREEN (statement)|SCREEN]] sizes!
* [[_FONTWIDTH]] can only measure MONOSPACE fonts! '''"MONOSPACE" cannot be used on a variable width font.'''
* [[_PRINTWIDTH]] can measure the width of a string of text in '''graphics modes only'''. Use one character to get the font's width.
<center> '''Font Handles'''</center>
* Multiple fonts will require multiple font variable handles unless used and freed consecutively.
* Font handles with values greater than 0 that are '''no longer used''' should be freed using [[_FREEFONT]].
* '''Predefined QB64''' font handle numbers can be substituted before freeing a font handle:
**'''_FONT 8 ''' - default font for [[SCREEN (statement)|SCREEN]] 1, 2, 7, 8 or 13
**'''_FONT 14''' - default font for [[SCREEN (statement)|SCREEN]] 9 or 10
**'''_FONT 16''' - default font for [[SCREEN (statement)|SCREEN]] 0 ({{KW|WIDTH}} 80, 25 text only), 11 or 12
**'''_FONT 9, 15''' and '''17''' are the double width versions of 8, 14 and 16 respectively in text '''SCREEN 0 only'''.
* Once the font is changed to a predefined value, the font handle value can be freed using [[_FREEFONT]] for another font type.
* Font handle values of -1 (load failure) '''do not''' need to be freed! '''An [[ERROR Codes|error]] will occur if you try to free invalid handles!'''
<center> '''Font File Specs'''</center>
* Windows users should find '''TTF''' font files in the C:\WINDOWS\FONTS folder, but don't depend on unusual ones being there.
* '''Check the font file name! The name in the "viewer" is NOT necessarily the file's name! Use the name in properties!'''
* If a program is on a different drive than Windows, [[ENVIRON$]]("SYSTEMROOT") will return the path to the "WINDOWS" folder. Normally "C:\WINDOWS". Then add the "\FONTS\" folder and the font '''.TTF''' filename to the path [[STRING]].
''Example 1:'' You need to know that if you are in a text mode (such as SCREEN 0 - the default) then you will only be able to use mono-spaced (fixed width) fonts.
{{CodeStart}}
rootpath$ = {{Cl|ENVIRON$}}("SYSTEMROOT") 'normally "C:\WINDOWS"
fontfile$ = rootpath$ + "\Fonts\cour.ttf" 'TTF file in Windows
style$ = "monospace, italic, bold" 'font style is not case sensitive
f& ={{Cl|_LOADFONT}}(fontfile$, 30, style$)
{{Cl|_FONT}} f&
{{Cl|PRINT}} "Hello!"
{{CodeEnd}}
{{OutputStart}}
'''''Hello!'''''
{{OutputEnd}}
''Note:'' 30 means each row of text (including vertical spacing) will be exactly 30 pixels high. This may make some program screens larger. If you don't want a style listed just use style$ = "" if using a [[STRING]] variable for different calls.
''Example 2:'' In a 32-bit graphics mode you can alpha blend onto the background:
{{CodeStart}}
i& ={{Cl|_NEWIMAGE}}(800,600,32)
{{Cl|SCREEN (statement)|SCREEN}} i&
{{Cl|COLOR}} &HC0FFFF00,&H200000FF
f& ={{Cl|_LOADFONT}}("C:\Windows\Fonts\times.ttf", 25) 'normal style
{{Cl|PRINT}} "Hello!"
{{CodeEnd}}
{{OutputStart}}
Hello!
{{OutputEnd}}
:''Note:'' You can load a fixed width font file without using the "monospace" option and it will be treated as variable width. This can be useful because LOCATE treats the horizontal position as an offset in pixels for variable width fonts.
''See also:''
* [[_FONT]], [[_FONT (function)]]
* [[_FREEFONT]]
* [[_PRINTSTRING]], [[_PRINTWIDTH]]
* [[_PRINTMODE]], [[_PRINTMODE (function)]]
* [[_FONTHEIGHT]], [[_FONTWIDTH]]
* [[Text Using Graphics]] {{text|(Demo)}}
* [[Windows_Libraries#Font_Dialog_Box|Windows Font Dialog Box]]
{{PageNavigation}}