Skip to main content

examples/typefaces.exs

System.put_env("SKIA_EX_BUILD", "1")
Mix.install([
  {:rustler, "~> 0.38.0", runtime: false},
  {:rustq, "~> 0.5", runtime: false},
  {:skia, path: Path.expand("..", __DIR__)}
])

{:ok, families} = Skia.Typeface.families()
families = Enum.take(families, 8)
IO.inspect(families, label: "families")

family = Enum.find(families, &String.contains?(&1, "Sans")) || List.first(families) || "DejaVu Sans"
{:ok, typeface} = Skia.Typeface.match_family(family, weight: 700)
{:ok, info} = Skia.Typeface.info(typeface)
font = Skia.Font.new(typeface, size: 28)
{:ok, metrics} = Skia.Font.metrics(font)
{:ok, glyphs} = Skia.Font.glyph_ids(font, "Typeface")

IO.inspect(info, label: "typeface")
IO.inspect(metrics, label: "metrics")
IO.inspect(glyphs, label: "glyph ids")

doc =
  Skia.canvas(280, 100)
  |> Skia.clear("#111827")
  |> Skia.text("Typeface", x: 24, y: 58, font: font, fill: "#f8fafc")

{:ok, png} = Skia.to_png(doc)
File.write!("typefaces.png", png)