Skip to content
Skeptim edited this page Apr 27, 2024 · 16 revisions

font(text, x, y, [transcolor], [char width], [char height], [fixed=false], [scale=1], [alt=false]) -> text width

Parameters

  • text : The string to be printed.
  • x, y : Coordinates of print position.
  • transcolor : The palette index to use for transparency.
  • char width : Distance between start of each character, in pixels.
  • char height : Distance vertically between start of each character, in pixels, when printing multi-line text.
  • fixed : Indicates whether the font is fixed width (defaults to false ie variable width).
  • scale : Font scaling (defaults to 1).
  • alt : If set to true, the second 128 foreground tiles (#384–511) are used for the font rather than the first 128 (#256-383) as if set to false.

Returns

  • text width : Returns the width of the rendered text in pixels.

Description

This function will draw text to the screen using the foreground spritesheet as the font. Sprite #256 is used for ASCII code 0, #257 for code 1 and so on. The character 'A' has the ASCII code 65 so will be drawn using the sprite with sprite #321 (256+65). See the example below or check out the In-Browser Demo.

  • To simply print text to the screen using the system font, please see print.
  • To print to the console, please see trace.
  • There may never be more than 128 ASCII characters within a single font() call. The first 32 ASCII characters, which serve as object characters, are unused by text, therefore effectively only 96 characters are available for text.

For list of ASCII codes, please refer to this link.

Font color

You can change the font color with poke4 by swapping the color of the font sprites before using font and swapping back afterward.

sprite_color=12 --color of you font sprites in sprite editor
new_color=3 --color you want to use
poke4(0x3FF0*2+initial_color,new_color) -- swaps sprite_color and new_color
font(...)
poke4(0x3FF0*2+new_color,initial_sprite_color) -- change it back

Example

Example

-- title:  Font Demo
-- author: paul59
-- desc:   Shows the working of font()
-- script: lua


function TIC()
	cls()
	-- The # character is ascii code 35
	-- so the sprite with ID 256+35 (#291)
	-- will be used to draw that character

	-- A and B have ascii codes 65 and 66.
	-- Sprites 256+65 (#321) and 256+66
	-- (#322) will be used to draw those
	-- letters

	font('#AB',20,20,2,9,9,true,3)

	-- The above prints '#AB' at position
	-- 20,20. The sprites use color 2 as
	-- transparency colorkey, are drawn 9
	-- pixels apart with fixed width and
	-- scaled up by a factor of 3
end

Blit Segment

To use the font() function while keeping the tiles used by the custom font minimal, one may opt to manipulate RAM to draw sprites at a lower bit depth. Whichever blit segment local indexing parameter is set, the first foreground tile page relative to the local indexing parameter will be used to render the font() function. Positions of ASCII characters relative to a given sprite page remains the same as in 4 bits per pixel (i.e. if blit segment is set to 8, then the characters use sprites within a 16×16 tile perimeter starting with #1024).

Clone this wiki locally