packages feed

nano-ui-sdl-0.1.0.0: lib/NanoUI/Sdl/Font/Resolve.hs

module NanoUI.Sdl.Font.Resolve
  ( embeddedFontSource
  , resolveNanoUIFont
  , defaultFontSearch
  , defaultFontSearchMono
  ) where

import NanoUI.Sdl.Font (FontSource (..))
import NanoUI.Sdl.Font.Inter (fontInterBytes, fontInterLabel)
import NanoUI.Sdl.Font.Search (searchFonts)
import NanoUI.Sdl.NanoUIFont (NanoUIFont (..))

embeddedFontSource :: FontSource
embeddedFontSource = FontFromMemory fontInterBytes fontInterLabel

defaultFontSearch :: NanoUIFont
defaultFontSearch =
  FontSearch
    [ "Inter"
    , "Montserrat"
    , "Work Sans"
    , "Roboto"
    , "Open Sans"
    , "Helvetica Neue"
    ]

defaultFontSearchMono :: NanoUIFont
defaultFontSearchMono =
  FontSearch
    [ "Consolas"
    , "Courier New"
    , "Liberation Mono"
    , "DejaVu Sans Mono"
    , "monospace"
    ]

resolveNanoUIFont :: NanoUIFont -> IO FontSource
resolveNanoUIFont DefaultFont = pure embeddedFontSource
resolveNanoUIFont (FontFilePath path) = pure (FontFromPath path)
resolveNanoUIFont (FontSearch names) =
  searchFonts names >>= \case
    Just path -> pure (FontFromPath path)
    Nothing -> pure embeddedFontSource