ktx-font 0.1.0.0 → 0.1.0.1
raw patch · 3 files changed
+22/−12 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- CHANGELOG.md +5/−0
- ktx-font.cabal +1/−5
- src/Codec/Ktx2/Font.hs +16/−7
CHANGELOG.md view
@@ -6,6 +6,11 @@ and this project adheres to the [Haskell Package Versioning Policy](https://pvp.haskell.org/). +## 0.1.0.1 - 2026-03-18++- Make plane rescaling depend on `layout.atlas.sizeUnit`.+ * 1.0 if already caps-sized, unitsPerEm/capHeight otherwise.+ ## 0.1.0.0 - 2025-12-30 Initial release.
ktx-font.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: ktx-font-version: 0.1.0.0+version: 0.1.0.1 synopsis: GPU-ready rasterized fonts category: Graphics author: IC Rainbow@@ -22,10 +22,6 @@ source-repository head type: git location: https://gitlab.com/dpwiz/ktx--flag executables- manual: True- default: False library exposed-modules:
src/Codec/Ktx2/Font.hs view
@@ -46,6 +46,7 @@ import GHC.Generics (Generic, Generic1) import Graphics.MSDF.Atlas.Compact (Compact, compact) import Graphics.MSDF.Atlas.Compact qualified as Compact+import Graphics.MSDF.Atlas.Layout qualified as Layout import KB.Text.Shape qualified as TextShape import KB.Text.Shape.FFI.Enums qualified as KBTS import KB.Text.Shape.FFI.Handles (Font(..), intHandle)@@ -77,25 +78,33 @@ kbtsData <- Font.extractBlob ttfData 0 font <- createFont kbtsData 0- capsScale <- withFontData font $ pure . Font.emToCaps+ rescale <-+ case layout.atlas.sizeUnit of+ Just Layout.CapsHeight -> pure id+ Nothing -> do+ factor <- withFontData font $ pure . Font.emToCaps+ pure $ scalePlanes factor destroyFont font sourceKtx <- Ktx2.fromFile pathKtx2 let- atlas = capScalePlanes capsScale $ compact layout+ atlas = rescale $ compact layout atlasData = ByteString.toStrict $ encode atlas kvd = KVD.insertBytes KTX_KEY_atlas (Zstd.compress 19 atlasData) $ KVD.insertBytes KTX_KEY_kbts (Zstd.compress 19 kbtsData) $ KVD.insertText KTX_KEY_kbts_version kbtsVersion $- KVD.setWriterWith ("ktx-font 0.1.0.0 / " <>) sourceKtx.kvd+ KVD.setWriterWith ("ktx-font 0.1.0.1 / " <>) sourceKtx.kvd Ktx2.toFile pathKtxf sourceKtx{Ktx2.kvd} -- | Rescale planes to caps height instead of ems.-capScalePlanes :: Float -> Compact -> Compact-capScalePlanes capsScale a = a- { Compact._size = a._size- , Compact.planes = Vector.map (Compact.scaleBox capsScale) a.planes+--+-- With 1.4 factor, 1em targeting 10px would become 14px.+-- That means you need smaller font sizes in caps that in ems.+scalePlanes :: Float -> Compact -> Compact+scalePlanes s a = a+ { Compact._size = a._size * s+ , Compact.planes = Vector.map (Compact.scaleBox s) a.planes } {- | Put already-loaded font to context.