190 lines
4.7 KiB
Nim
190 lines
4.7 KiB
Nim
import pixie, pixie/fileformats/png, strformat
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/Roboto-Regular.ttf")
|
|
font.size = 64
|
|
let image = newImage(200, 100)
|
|
image.fill(rgba(255, 255, 255, 255))
|
|
image.fillText(font, "fill", rgba(0, 0, 0, 255))
|
|
image.writeFile("tests/fonts/image_fill.png")
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/Roboto-Regular.ttf")
|
|
font.size = 64
|
|
let image = newImage(200, 100)
|
|
image.fill(rgba(255, 255, 255, 255))
|
|
image.strokeText(font, "stroke", rgba(0, 0, 0, 255))
|
|
image.writeFile("tests/fonts/image_stroke.png")
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/Roboto-Regular.ttf")
|
|
font.size = 64
|
|
let mask = newMask(200, 100)
|
|
mask.fillText(font, "fill")
|
|
writeFile("tests/fonts/mask_fill.png", mask.encodePng())
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/Roboto-Regular.ttf")
|
|
font.size = 64
|
|
let mask = newMask(200, 100)
|
|
mask.strokeText(font, "stroke")
|
|
writeFile("tests/fonts/mask_stroke.png", mask.encodePng())
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/Changa-Bold.svg")
|
|
font.size = 48
|
|
let mask = newMask(200, 100)
|
|
mask.fillText(font, "Changa")
|
|
writeFile("tests/fonts/svg_changa.png", mask.encodePng())
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/DejaVuSans.svg")
|
|
font.size = 48
|
|
let mask = newMask(200, 100)
|
|
mask.fillText(font, "Deja vu ")
|
|
writeFile("tests/fonts/svg_dejavu.png", mask.encodePng())
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/IBMPlexSans-Regular.svg")
|
|
font.size = 48
|
|
let mask = newMask(200, 100)
|
|
mask.fillText(font, "IBM ")
|
|
writeFile("tests/fonts/svg_ibm.png", mask.encodePng())
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/Moon-Bold.svg")
|
|
font.size = 48
|
|
let mask = newMask(200, 100)
|
|
mask.fillText(font, "Moon ")
|
|
writeFile("tests/fonts/svg_moon.png", mask.encodePng())
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/Ubuntu.svg")
|
|
font.size = 48
|
|
let mask = newMask(200, 100)
|
|
mask.fillText(font, "Ubuntu ")
|
|
writeFile("tests/fonts/svg_ubuntu.png", mask.encodePng())
|
|
|
|
proc doDiff(rendered: Image, name: string) =
|
|
let
|
|
master = readImage(&"tests/fonts/masters/{name}.png")
|
|
(_, diffImage) = diff(master, rendered)
|
|
rendered.writeFile(&"tests/fonts/rendered/{name}.png")
|
|
diffImage.writeFile(&"tests/fonts/diffs/{name}.png")
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/Roboto-Regular.ttf")
|
|
font.size = 72
|
|
|
|
let image = newImage(200, 100)
|
|
image.fill(rgba(255, 255, 255, 255))
|
|
image.fillText(font, "asdf", rgba(0, 0, 0, 255))
|
|
|
|
doDiff(image, "basic1")
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/Roboto-Regular.ttf")
|
|
font.size = 72
|
|
|
|
let image = newImage(200, 100)
|
|
image.fill(rgba(255, 255, 255, 255))
|
|
image.fillText(font, "A cow", rgba(0, 0, 0, 255))
|
|
|
|
doDiff(image, "basic2")
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/Roboto-Regular.ttf")
|
|
font.size = 24
|
|
|
|
let image = newImage(200, 100)
|
|
image.fill(rgba(255, 255, 255, 255))
|
|
image.fillText(font, "A bit of text HERE", rgba(0, 0, 0, 255))
|
|
|
|
doDiff(image, "basic3")
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/Roboto-Regular.ttf")
|
|
font.size = 24
|
|
font.lineHeight = 100
|
|
|
|
let image = newImage(200, 100)
|
|
image.fill(rgba(255, 255, 255, 255))
|
|
image.fillText(font, "Line height", rgba(0, 0, 0, 255))
|
|
|
|
doDiff(image, "basic4")
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/Ubuntu-Regular.ttf")
|
|
font.size = 24
|
|
|
|
let image = newImage(200, 100)
|
|
image.fill(rgba(255, 255, 255, 255))
|
|
image.fillText(font, "Another font", rgba(0, 0, 0, 255))
|
|
|
|
doDiff(image, "basic5")
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/Aclonica-Regular.ttf")
|
|
font.size = 24
|
|
|
|
let image = newImage(200, 100)
|
|
image.fill(rgba(255, 255, 255, 255))
|
|
image.fillText(font, "Different font", rgba(0, 0, 0, 255))
|
|
|
|
doDiff(image, "basic6")
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/Roboto-Regular.ttf")
|
|
font.size = 24
|
|
|
|
let image = newImage(200, 100)
|
|
image.fill(rgba(255, 255, 255, 255))
|
|
image.fillText(
|
|
font,
|
|
"First line",
|
|
rgba(0, 0, 0, 255)
|
|
)
|
|
image.fillText(
|
|
font,
|
|
"Second line",
|
|
rgba(0, 0, 0, 255),
|
|
vec2(0, font.defaultLineHeight)
|
|
)
|
|
|
|
doDiff(image, "basic7")
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/Roboto-Regular.ttf")
|
|
font.size = 24
|
|
|
|
let
|
|
image = newImage(200, 100)
|
|
layout = font.typeset(
|
|
"Wrapping text to new line",
|
|
bounds = vec2(200, 0)
|
|
)
|
|
|
|
image.fill(rgba(255, 255, 255, 255))
|
|
|
|
for path in layout:
|
|
image.fillPath(path, rgba(0, 0, 0, 255))
|
|
|
|
doDiff(image, "basic8")
|
|
|
|
block:
|
|
let font = readFont("tests/fonts/Roboto-Regular.ttf")
|
|
font.size = 24
|
|
|
|
let
|
|
image = newImage(200, 100)
|
|
layout = font.typeset(
|
|
"Supercalifragilisticexpialidocious",
|
|
bounds = vec2(200, 0)
|
|
)
|
|
|
|
image.fill(rgba(255, 255, 255, 255))
|
|
|
|
for path in layout:
|
|
image.fillPath(path, rgba(0, 0, 0, 255))
|
|
|
|
doDiff(image, "basic9")
|