fonts
This commit is contained in:
214
examples/FontFamilyDemo.lua
Normal file
214
examples/FontFamilyDemo.lua
Normal file
@@ -0,0 +1,214 @@
|
||||
-- Font Family Demo
|
||||
-- Demonstrates how to use custom fonts with FlexLove theme system
|
||||
|
||||
local FlexLove = require("libs.FlexLove")
|
||||
local Gui = FlexLove.GUI
|
||||
local Color = FlexLove.Color
|
||||
local Theme = FlexLove.Theme
|
||||
|
||||
-- Initialize FlexLove with base scaling and theme
|
||||
Gui.init({
|
||||
baseScale = { width = 1920, height = 1080 },
|
||||
theme = "space",
|
||||
})
|
||||
|
||||
-- Create a simple theme with custom fonts
|
||||
local customTheme = Theme.new({
|
||||
name = "Custom Font Theme",
|
||||
|
||||
-- Define font families
|
||||
-- Note: These paths are examples - replace with your actual font files
|
||||
fonts = {
|
||||
-- You can reference fonts by name in your elements
|
||||
-- default = "path/to/your/font.ttf",
|
||||
-- heading = "path/to/your/heading-font.ttf",
|
||||
-- mono = "path/to/your/monospace-font.ttf",
|
||||
},
|
||||
|
||||
colors = {
|
||||
background = Color.new(0.1, 0.1, 0.15, 1),
|
||||
text = Color.new(0.9, 0.9, 0.95, 1),
|
||||
},
|
||||
})
|
||||
|
||||
-- Set the custom theme as active
|
||||
-- Theme.setActive(customTheme)
|
||||
|
||||
-- Create main container
|
||||
local container = Gui.new({
|
||||
x = 100,
|
||||
y = 100,
|
||||
width = 1720,
|
||||
height = 880,
|
||||
backgroundColor = Color.new(0.1, 0.1, 0.15, 1),
|
||||
cornerRadius = 10,
|
||||
positioning = "flex",
|
||||
flexDirection = "vertical",
|
||||
padding = { top = 40, horizontal = 40, bottom = 40 },
|
||||
gap = 30,
|
||||
})
|
||||
|
||||
-- Title
|
||||
Gui.new({
|
||||
parent = container,
|
||||
text = "Font Family Demo",
|
||||
textSize = "3xl",
|
||||
textColor = Color.new(1, 1, 1, 1),
|
||||
textAlign = "center",
|
||||
-- fontFamily = "heading", -- Uncomment to use custom heading font from theme
|
||||
})
|
||||
|
||||
-- Description
|
||||
Gui.new({
|
||||
parent = container,
|
||||
text = "FlexLove supports custom font families through the theme system",
|
||||
textSize = "md",
|
||||
textColor = Color.new(0.8, 0.8, 0.9, 1),
|
||||
textAlign = "center",
|
||||
-- fontFamily = "default", -- Uncomment to use custom default font from theme
|
||||
})
|
||||
|
||||
-- Example 1: Default System Font
|
||||
local example1 = Gui.new({
|
||||
parent = container,
|
||||
width = "100%",
|
||||
backgroundColor = Color.new(0.15, 0.15, 0.2, 1),
|
||||
cornerRadius = 8,
|
||||
padding = { top = 20, horizontal = 20, bottom = 20 },
|
||||
positioning = "flex",
|
||||
flexDirection = "vertical",
|
||||
gap = 10,
|
||||
})
|
||||
|
||||
Gui.new({
|
||||
parent = example1,
|
||||
text = "1. Default System Font",
|
||||
textSize = "lg",
|
||||
textColor = Color.new(0.3, 0.7, 1, 1),
|
||||
})
|
||||
|
||||
Gui.new({
|
||||
parent = example1,
|
||||
text = "This text uses the default system font (no fontFamily specified)",
|
||||
textSize = "md",
|
||||
textColor = Color.new(0.9, 0.9, 0.95, 1),
|
||||
})
|
||||
|
||||
-- Example 2: Font from Theme
|
||||
local example2 = Gui.new({
|
||||
parent = container,
|
||||
width = "100%",
|
||||
backgroundColor = Color.new(0.15, 0.15, 0.2, 1),
|
||||
cornerRadius = 8,
|
||||
padding = { top = 20, horizontal = 20, bottom = 20 },
|
||||
positioning = "flex",
|
||||
flexDirection = "vertical",
|
||||
gap = 10,
|
||||
})
|
||||
|
||||
Gui.new({
|
||||
parent = example2,
|
||||
text = "2. Font from Theme",
|
||||
textSize = "lg",
|
||||
textColor = Color.new(0.3, 0.7, 1, 1),
|
||||
})
|
||||
|
||||
Gui.new({
|
||||
parent = example2,
|
||||
text = "Use fontFamily='default' to reference fonts defined in your theme",
|
||||
textSize = "md",
|
||||
textColor = Color.new(0.9, 0.9, 0.95, 1),
|
||||
-- fontFamily = "default", -- Uncomment when you have fonts defined in theme
|
||||
})
|
||||
|
||||
-- Example 3: Direct Font Path
|
||||
local example3 = Gui.new({
|
||||
parent = container,
|
||||
width = "100%",
|
||||
backgroundColor = Color.new(0.15, 0.15, 0.2, 1),
|
||||
cornerRadius = 8,
|
||||
padding = { top = 20, horizontal = 20, bottom = 20 },
|
||||
positioning = "flex",
|
||||
flexDirection = "vertical",
|
||||
gap = 10,
|
||||
})
|
||||
|
||||
Gui.new({
|
||||
parent = example3,
|
||||
text = "3. Direct Font Path",
|
||||
textSize = "lg",
|
||||
textColor = Color.new(0.3, 0.7, 1, 1),
|
||||
})
|
||||
|
||||
Gui.new({
|
||||
parent = example3,
|
||||
text = "You can also specify a direct path: fontFamily='path/to/font.ttf'",
|
||||
textSize = "md",
|
||||
textColor = Color.new(0.9, 0.9, 0.95, 1),
|
||||
-- fontFamily = "path/to/your/font.ttf", -- Uncomment with actual font path
|
||||
})
|
||||
|
||||
-- Example 4: Different Sizes with Same Font
|
||||
local example4 = Gui.new({
|
||||
parent = container,
|
||||
width = "100%",
|
||||
backgroundColor = Color.new(0.15, 0.15, 0.2, 1),
|
||||
cornerRadius = 8,
|
||||
padding = { top = 20, horizontal = 20, bottom = 20 },
|
||||
positioning = "flex",
|
||||
flexDirection = "vertical",
|
||||
gap = 10,
|
||||
})
|
||||
|
||||
Gui.new({
|
||||
parent = example4,
|
||||
text = "4. Multiple Sizes",
|
||||
textSize = "lg",
|
||||
textColor = Color.new(0.3, 0.7, 1, 1),
|
||||
})
|
||||
|
||||
local sizeContainer = Gui.new({
|
||||
parent = example4,
|
||||
positioning = "flex",
|
||||
flexDirection = "vertical",
|
||||
gap = 5,
|
||||
})
|
||||
|
||||
local sizes = { "xs", "sm", "md", "lg", "xl", "xxl" }
|
||||
for _, size in ipairs(sizes) do
|
||||
Gui.new({
|
||||
parent = sizeContainer,
|
||||
text = "Text size: " .. size,
|
||||
textSize = size,
|
||||
textColor = Color.new(0.9, 0.9, 0.95, 1),
|
||||
-- fontFamily = "default", -- Same font, different sizes
|
||||
})
|
||||
end
|
||||
|
||||
-- Instructions
|
||||
Gui.new({
|
||||
parent = container,
|
||||
text = "To use custom fonts: 1) Add font files to your project, 2) Define them in theme.fonts, 3) Reference by name in elements",
|
||||
textSize = "sm",
|
||||
textColor = Color.new(0.6, 0.6, 0.7, 1),
|
||||
textAlign = "center",
|
||||
})
|
||||
|
||||
-- LÖVE callbacks
|
||||
function love.load()
|
||||
print("Font Family Demo loaded")
|
||||
print("Add your custom font files and update the theme definition to see custom fonts in action")
|
||||
end
|
||||
|
||||
function love.update(dt)
|
||||
Gui.update(dt)
|
||||
end
|
||||
|
||||
function love.draw()
|
||||
love.graphics.clear(0.05, 0.05, 0.08, 1)
|
||||
Gui.draw()
|
||||
end
|
||||
|
||||
function love.resize(w, h)
|
||||
Gui.resize()
|
||||
end
|
||||
Reference in New Issue
Block a user