When to use this skill
Allows you to work with fonts. Use this skill when working with font operations, text display, text formatting, or any font-related operations in LÖVE games.
Common use cases
- Loading and managing font files
- Rendering text with different styles and sizes
- Working with text formatting and layout
- Handling international text and Unicode characters
- Implementing custom text rendering effects
Functions
love.font.newBMFontRasterizer - Creates a new BMFont Rasterizer.
love.font.newBMFontRasterizer(imageData: ImageData, glyphs: string, dpiscale: number) -> rasterizer: Rasterizer: No description
love.font.newBMFontRasterizer(fileName: string, glyphs: string, dpiscale: number) -> rasterizer: Rasterizer: No description
love.font.newGlyphData(rasterizer: Rasterizer, glyph: number): Creates a new GlyphData.
love.font.newImageRasterizer(imageData: ImageData, glyphs: string, extraSpacing: number, dpiscale: number) -> rasterizer: Rasterizer: Creates a new Image Rasterizer.
love.font.newRasterizer - Creates a new Rasterizer.
love.font.newRasterizer(filename: string) -> rasterizer: Rasterizer: No description
love.font.newRasterizer(data: FileData) -> rasterizer: Rasterizer: No description
love.font.newRasterizer(size: number, hinting: HintingMode, dpiscale: number) -> rasterizer: Rasterizer: Create a TrueTypeRasterizer with the default font.
love.font.newRasterizer(fileName: string, size: number, hinting: HintingMode, dpiscale: number) -> rasterizer: Rasterizer: Create a TrueTypeRasterizer with custom font.
love.font.newRasterizer(fileData: FileData, size: number, hinting: HintingMode, dpiscale: number) -> rasterizer: Rasterizer: Create a TrueTypeRasterizer with custom font.
love.font.newRasterizer(imageData: ImageData, glyphs: string, dpiscale: number) -> rasterizer: Rasterizer: Creates a new BMFont Rasterizer.
love.font.newRasterizer(fileName: string, glyphs: string, dpiscale: number) -> rasterizer: Rasterizer: Creates a new BMFont Rasterizer.
love.font.newTrueTypeRasterizer - Creates a new TrueType Rasterizer.
love.font.newTrueTypeRasterizer(size: number, hinting: HintingMode, dpiscale: number) -> rasterizer: Rasterizer: Create a TrueTypeRasterizer with the default font.
love.font.newTrueTypeRasterizer(fileName: string, size: number, hinting: HintingMode, dpiscale: number) -> rasterizer: Rasterizer: Create a TrueTypeRasterizer with custom font.
love.font.newTrueTypeRasterizer(fileData: FileData, size: number, hinting: HintingMode, dpiscale: number) -> rasterizer: Rasterizer: Create a TrueTypeRasterizer with custom font.
Types
GlyphData: A GlyphData represents a drawable symbol of a font Rasterizer.
love.GlyphData.getAdvance() -> advance: number: Gets glyph advance.
love.GlyphData.getBearing() -> bx: number, by: number: Gets glyph bearing.
love.GlyphData.getBoundingBox() -> x: number, y: number, width: number, height: number: Gets glyph bounding box.
love.GlyphData.getDimensions() -> width: number, height: number: Gets glyph dimensions.
love.GlyphData.getFormat() -> format: PixelFormat: Gets glyph pixel format.
love.GlyphData.getGlyph() -> glyph: number: Gets glyph number.
love.GlyphData.getGlyphString() -> glyph: string: Gets glyph string.
love.GlyphData.getHeight() -> height: number: Gets glyph height.
love.GlyphData.getWidth() -> width: number: Gets glyph width.
Rasterizer: A Rasterizer handles font rendering, containing the font data (image or TrueType font) and drawable glyphs.
love.Rasterizer.getAdvance() -> advance: number: Gets font advance.
love.Rasterizer.getAscent() -> height: number: Gets ascent height.
love.Rasterizer.getDescent() -> height: number: Gets descent height.
love.Rasterizer.getGlyphCount() -> count: number: Gets number of glyphs in font.
love.Rasterizer.getGlyphData(glyph: string) -> glyphData: GlyphData: Gets glyph data of a specified glyph.
love.Rasterizer.getHeight() -> height: number: Gets font height.
love.Rasterizer.getLineHeight() -> height: number: Gets line height of a font.
love.Rasterizer.hasGlyphs(glyph1: string or number, ...: string or number) -> hasGlyphs: boolean: Checks if font contains specified glyphs.
Enums
HintingMode: True Type hinting mode.
normal: Default hinting. Should be preferred for typical antialiased fonts.
light: Results in fuzzier text but can sometimes preserve the original glyph shapes of the text better than normal hinting.
mono: Results in aliased / unsmoothed text with either full opacity or completely transparent pixels. Should be used when antialiasing is not desired for the font.
none: Disables hinting for the font. Results in fuzzier text.
Examples
Loading and using fonts
-- Load a font file
local font = love.graphics.newFont("arial.ttf", 24)
-- Set as default font
love.graphics.setFont(font)
-- Draw text
love.graphics.print("Hello World!", 100, 100)
Text formatting
-- Create fonts with different styles
local titleFont = love.graphics.newFont(36)
local bodyFont = love.graphics.newFont(18)
local boldFont = love.graphics.newFont("bold.ttf", 20)
function love.draw()
love.graphics.setFont(titleFont)
love.graphics.print("Game Title", 100, 50)
love.graphics.setFont(bodyFont)
love.graphics.printf("This is a paragraph of text that will be wrapped to fit within the specified width.", 100, 150, 400, "left")
love.graphics.setFont(boldFont)
love.graphics.print("Important Message!", 100, 300)
end
Best practices
- Load fonts during initialization to avoid runtime delays
- Use appropriate font sizes for different screen resolutions
- Consider memory usage when loading multiple fonts
- Handle font loading errors gracefully
- Test text rendering on target platforms
Platform compatibility
- Desktop (Windows, macOS, Linux): Full font support
- Mobile (iOS, Android): Full support with some font limitations
- Web: Good support but some fonts may not be available
1---2name: love-font3description: Allows you to work with fonts. Use this skill when working with font operations, text display, text formatting, or any font-related operations in LÖVE games.4license: MIT5---67## When to use this skill8Allows you to work with fonts. Use this skill when working with font operations, text display, text formatting, or any font-related operations in LÖVE games.910## Common use cases11- Loading and managing font files12- Rendering text with different styles and sizes13- Working with text formatting and layout14- Handling international text and Unicode characters15- Implementing custom text rendering effects1617## Functions1819- `love.font.newBMFontRasterizer` - Creates a new BMFont Rasterizer.20 - `love.font.newBMFontRasterizer(imageData: ImageData, glyphs: string, dpiscale: number) -> rasterizer: Rasterizer`: No description21 - `love.font.newBMFontRasterizer(fileName: string, glyphs: string, dpiscale: number) -> rasterizer: Rasterizer`: No description22- `love.font.newGlyphData(rasterizer: Rasterizer, glyph: number)`: Creates a new GlyphData.23- `love.font.newImageRasterizer(imageData: ImageData, glyphs: string, extraSpacing: number, dpiscale: number) -> rasterizer: Rasterizer`: Creates a new Image Rasterizer.24- `love.font.newRasterizer` - Creates a new Rasterizer.25 - `love.font.newRasterizer(filename: string) -> rasterizer: Rasterizer`: No description26 - `love.font.newRasterizer(data: FileData) -> rasterizer: Rasterizer`: No description27 - `love.font.newRasterizer(size: number, hinting: HintingMode, dpiscale: number) -> rasterizer: Rasterizer`: Create a TrueTypeRasterizer with the default font.28 - `love.font.newRasterizer(fileName: string, size: number, hinting: HintingMode, dpiscale: number) -> rasterizer: Rasterizer`: Create a TrueTypeRasterizer with custom font.29 - `love.font.newRasterizer(fileData: FileData, size: number, hinting: HintingMode, dpiscale: number) -> rasterizer: Rasterizer`: Create a TrueTypeRasterizer with custom font.30 - `love.font.newRasterizer(imageData: ImageData, glyphs: string, dpiscale: number) -> rasterizer: Rasterizer`: Creates a new BMFont Rasterizer.31 - `love.font.newRasterizer(fileName: string, glyphs: string, dpiscale: number) -> rasterizer: Rasterizer`: Creates a new BMFont Rasterizer.32- `love.font.newTrueTypeRasterizer` - Creates a new TrueType Rasterizer.33 - `love.font.newTrueTypeRasterizer(size: number, hinting: HintingMode, dpiscale: number) -> rasterizer: Rasterizer`: Create a TrueTypeRasterizer with the default font.34 - `love.font.newTrueTypeRasterizer(fileName: string, size: number, hinting: HintingMode, dpiscale: number) -> rasterizer: Rasterizer`: Create a TrueTypeRasterizer with custom font.35 - `love.font.newTrueTypeRasterizer(fileData: FileData, size: number, hinting: HintingMode, dpiscale: number) -> rasterizer: Rasterizer`: Create a TrueTypeRasterizer with custom font.3637## Types3839- `GlyphData`: A GlyphData represents a drawable symbol of a font Rasterizer.40 - `love.GlyphData.getAdvance() -> advance: number`: Gets glyph advance.41 - `love.GlyphData.getBearing() -> bx: number, by: number`: Gets glyph bearing.42 - `love.GlyphData.getBoundingBox() -> x: number, y: number, width: number, height: number`: Gets glyph bounding box.43 - `love.GlyphData.getDimensions() -> width: number, height: number`: Gets glyph dimensions.44 - `love.GlyphData.getFormat() -> format: PixelFormat`: Gets glyph pixel format.45 - `love.GlyphData.getGlyph() -> glyph: number`: Gets glyph number.46 - `love.GlyphData.getGlyphString() -> glyph: string`: Gets glyph string.47 - `love.GlyphData.getHeight() -> height: number`: Gets glyph height.48 - `love.GlyphData.getWidth() -> width: number`: Gets glyph width.4950- `Rasterizer`: A Rasterizer handles font rendering, containing the font data (image or TrueType font) and drawable glyphs.51 - `love.Rasterizer.getAdvance() -> advance: number`: Gets font advance.52 - `love.Rasterizer.getAscent() -> height: number`: Gets ascent height.53 - `love.Rasterizer.getDescent() -> height: number`: Gets descent height.54 - `love.Rasterizer.getGlyphCount() -> count: number`: Gets number of glyphs in font.55 - `love.Rasterizer.getGlyphData(glyph: string) -> glyphData: GlyphData`: Gets glyph data of a specified glyph.56 - `love.Rasterizer.getHeight() -> height: number`: Gets font height.57 - `love.Rasterizer.getLineHeight() -> height: number`: Gets line height of a font.58 - `love.Rasterizer.hasGlyphs(glyph1: string or number, ...: string or number) -> hasGlyphs: boolean`: Checks if font contains specified glyphs.5960## Enums6162- `HintingMode`: True Type hinting mode.63 - `normal`: Default hinting. Should be preferred for typical antialiased fonts.64 - `light`: Results in fuzzier text but can sometimes preserve the original glyph shapes of the text better than normal hinting.65 - `mono`: Results in aliased / unsmoothed text with either full opacity or completely transparent pixels. Should be used when antialiasing is not desired for the font.66 - `none`: Disables hinting for the font. Results in fuzzier text.6768## Examples6970### Loading and using fonts71```lua72-- Load a font file73local font = love.graphics.newFont("arial.ttf", 24)7475-- Set as default font76love.graphics.setFont(font)7778-- Draw text79love.graphics.print("Hello World!", 100, 100)80```8182### Text formatting83```lua84-- Create fonts with different styles85local titleFont = love.graphics.newFont(36)86local bodyFont = love.graphics.newFont(18)87local boldFont = love.graphics.newFont("bold.ttf", 20)8889function love.draw()90 love.graphics.setFont(titleFont)91 love.graphics.print("Game Title", 100, 50)9293 love.graphics.setFont(bodyFont)94 love.graphics.printf("This is a paragraph of text that will be wrapped to fit within the specified width.", 100, 150, 400, "left")9596 love.graphics.setFont(boldFont)97 love.graphics.print("Important Message!", 100, 300)98end99```100101## Best practices102- Load fonts during initialization to avoid runtime delays103- Use appropriate font sizes for different screen resolutions104- Consider memory usage when loading multiple fonts105- Handle font loading errors gracefully106- Test text rendering on target platforms107108## Platform compatibility109- **Desktop (Windows, macOS, Linux)**: Full font support110- **Mobile (iOS, Android)**: Full support with some font limitations111- **Web**: Good support but some fonts may not be available