* Fix Caxton fonts failing to load… at all
* Repair font files in bundled resource packs, which would previously cause a crash in earlier 0.10.0-alpha versions
This version switches from using Architectury for multiloader support
to [jaredlll08’s multiloader setup](https://github.com/jaredlll08/MultiLoader-Template)
plus Ishland’s [Neo Loom](https://github.com/RelativityMC/neo-loom). NeoForge versions will be released when NeoForge
updates to the latest snapshot.
* Fix color of easter egg splash texts
* Fix transparency issue with outlined text in world (e.g. on signs)
* Fix highlighting text until the start of a line visually showing the first character of that line as highlighted
* Optimize highlighting range calculations for shaping runs that are entirely inside or outside the selection range
* Fix color of easter egg splash texts
* Fix transparency issue with outlined text in world (e.g. on signs)
* Fix highlighting text until the start of a line visually showing the first character of that line as highlighted
* Optimize highlighting range calculations for shaping runs that are entirely inside or outside the selection range
* Fix transparency issue with outlined text in world (e.g. on signs)
* Fix highlighting text until the start of a line visually showing the first character of that line as highlighted
* Optimize highlighting range calculations for shaping runs that are entirely inside or outside the selection range
* Fix search field not showing text in the Controlling mod
* Fix transparency issue with outlined text in world (e.g. on signs)
* Fix highlighting text until the start of a line visually showing the first character of that line as highlighted
* Optimize highlighting range calculations for shaping runs that are entirely inside or outside the selection range
* Fix search field not showing text in the Controlling mod
* Fix transparency issue with outlined text in world (e.g. on signs)
* Fix highlighting text until the start of a line visually showing the first character of that line as highlighted
* Optimize highlighting range calculations for shaping runs that are entirely inside or outside the selection range
* Fix search field not showing text in the Controlling mod
* Fix transparency issue with outlined text in world (e.g. on signs)
* Fix highlighting text until the start of a line visually showing the first character of that line as highlighted
* Optimize highlighting range calculations for shaping runs that are entirely inside or outside the selection range
* Fix search field not showing text in the Controlling mod
* Fix transparency issue with outlined text in world (e.g. on signs)
* Fix highlighting text until the start of a line visually showing the first character of that line as highlighted
* Optimize highlighting range calculations for shaping runs that are entirely inside or outside the selection range
* Fix search field not showing text in the Controlling mod
* Fix transparency issue with outlined text in world (e.g. on signs)
* Fix highlighting text until the start of a line visually showing the first character of that line as highlighted
* Optimize highlighting range calculations for shaping runs that are entirely inside or outside the selection range
* Fix search field not showing text in the Controlling mod
* Fix transparency issue with outlined text in world (e.g. on signs)
* Fix highlighting text until the start of a line visually showing the first character of that line as highlighted
* Optimize highlighting range calculations for shaping runs that are entirely inside or outside the selection range
* Fix search field not showing text in the Controlling mod
* Fix transparency issue with outlined text in world (e.g. on signs)
* Fix highlighting text until the start of a line visually showing the first character of that line as highlighted
* Optimize highlighting range calculations for shaping runs that are entirely inside or outside the selection range
* Fix search field not showing text in the Controlling mod
* Fix transparency issue with outlined text in world (e.g. on signs)
* Fix highlighting text until the start of a line visually showing the first character of that line as highlighted
* Optimize highlighting range calculations for shaping runs that are entirely inside or outside the selection range
* Fix search field not showing text in the Controlling mod
* Fix transparency issue with outlined text in world (e.g. on signs)
* Fix highlighting text until the start of a line visually showing the first character of that line as highlighted
* Optimize highlighting range calculations for shaping runs that are entirely inside or outside the selection range
* Fix search field not showing text in the Controlling mod
* Fix transparency issue with outlined text in world (e.g. on signs)
* Fix highlighting text until the start of a line visually showing the first character of that line as highlighted
* Optimize highlighting range calculations for shaping runs that are entirely inside or outside the selection range
* Fix search field not showing text in the Controlling mod
* Fix transparency issue with outlined text in world (e.g. on signs)
* Fix highlighting text until the start of a line visually showing the first character of that line as highlighted
* Optimize highlighting range calculations for shaping runs that are entirely inside or outside the selection range
* Fix search field not showing text in the Controlling mod
* Fix transparency issue with outlined text in world (e.g. on signs)
* Fix highlighting text until the start of a line visually showing the first character of that line as highlighted
* Optimize highlighting range calculations for shaping runs that are entirely inside or outside the selection range
* Fix search field not showing text in the Controlling mod
This update migrates the native support library to use [HarfRust](https://github.com/harfbuzz/harfrust) and [Skrifa](https://github.com/googlefonts/fontations/tree/main/skrifa). This might introduce bugs; feel free to report them!
This update migrates the native support library to use [HarfRust](https://github.com/harfbuzz/harfrust) and [Skrifa](https://github.com/googlefonts/fontations/tree/main/skrifa). This might introduce bugs; feel free to report them!
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
At last **Caxton 0.6.0** (1.18.2 – 1.21.5) and **0.7.0** (1.21.8) are out!
This update consists mostly of bug fixes and internal changes to allow porting to versions 1.21.1 and above. Unfortunately, my motivation to work on Caxton has been dwindling, so no shiny features.
Caxton 0.6.x will receively only major bug fixes from now on. 0.7.x will be supported until the release of 1.21.9.
This is an experimental port to the 1.21.6 snapshots. Because of the major changes required for this version, this bumps the version number. The plan is to release 0.6.0 for pre-1.21.6 versions and only update these versions for major bug fixes, and to release 0.7.0 for 1.21.6.
* Fix garbled text in legacy fonts in chat input box
* Fix text rendered in legacy fonts being offset
* Fix wrong position of underlines in text rendered in Caxton fonts
* Fix garbled text in legacy fonts in chat input box
* Fix text rendered in legacy fonts being offset
* Fix wrong position of underlines in text rendered in Caxton fonts
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Fix infinite loop when trying to line-wrap certain text
* Improve parity with vanilla’s line-wrapping algorithm, fixing an issue with FTB Quests ([#83](https://gitlab.com/Kyarei/caxton/-/issues/83))
* Render outlined text with two draw calls, even with the MSDF-based rendering method. This is necessary for 1.21, as vertex formats with multiple color components no longer function properly.
* Bump dependencies of the native library
* Render outlined text with two draw calls, even with the MSDF-based rendering method. This is necessary for 1.21, as vertex formats with multiple color components no longer function properly.
* Bump dependencies of the native library
* But compatibility with ImmediatelyFast has not been tested, as ImmediatelyFast is not yet out for 1.20.5.
* I haven’t looked at font variant filters yet.
* But compatibility with ImmediatelyFast has not been tested, as ImmediatelyFast is not yet out for 1.20.5.
* I haven’t looked at font variant filters yet.
* Add Forge versions
* NeoForge versions are coming later; waiting for MixinExtras remapping support on Architectury
* Integrate with ImmediatelyFast if present
* Detect when the native library needs to be written to the instance folder rather than doing so on every launch
* Add `/caxtonshape` and `/caxtontext` commands
* Migrate to core shader APIs provided by Fabric and Forge
* Fabric API 0.77.0 or later is now required for Minecraft 1.19.2 or earlier
* Fix a lot of bugs and crashes
* Add Forge versions
* NeoForge versions are coming later; waiting for MixinExtras remapping support on Architectury
* Integrate with ImmediatelyFast if present
* Detect when the native library needs to be written to the instance folder rather than doing so on every launch
* Add `/caxtonshape` and `/caxtontext` commands
* Migrate to core shader APIs provided by Fabric and Forge
* Fabric API 0.77.0 or later is now required for Minecraft 1.19.2 or earlier
* Fix a lot of bugs and crashes
* Add Forge versions
* NeoForge versions are coming later; waiting for MixinExtras remapping support on Architectury
* Integrate with ImmediatelyFast if present
* Detect when the native library needs to be written to the instance folder rather than doing so on every launch
* Add `/caxtonshape` and `/caxtontext` commands
* Migrate to core shader APIs provided by Fabric and Forge
* Fabric API 0.77.0 or later is now required for Minecraft 1.19.2 or earlier
* Fix a lot of bugs and crashes
* Add Forge versions
* NeoForge versions are coming later; waiting for MixinExtras remapping support on Architectury
* Integrate with ImmediatelyFast if present
* Detect when the native library needs to be written to the instance folder rather than doing so on every launch
* Add `/caxtonshape` and `/caxtontext` commands
* Migrate to core shader APIs provided by Fabric and Forge
* Fabric API 0.77.0 or later is now required for Minecraft 1.19.2 or earlier
* Fix a lot of bugs and crashes
* Add Forge versions
* NeoForge versions are coming later; waiting for MixinExtras remapping support on Architectury
* Integrate with ImmediatelyFast if present
* Detect when the native library needs to be written to the instance folder rather than doing so on every launch
* Add `/caxtonshape` and `/caxtontext` commands
* Migrate to core shader APIs provided by Fabric and Forge
* Fabric API 0.77.0 or later is now required for Minecraft 1.19.2 or earlier
* Fix a lot of bugs and crashes
* Add Forge versions
* NeoForge versions are coming later; waiting for MixinExtras remapping support on Architectury
* Integrate with ImmediatelyFast if present
* Detect when the native library needs to be written to the instance folder rather than doing so on every launch
* Add `/caxtonshape` and `/caxtontext` commands
* Migrate to core shader APIs provided by Fabric and Forge
* Fabric API 0.77.0 or later is now required for Minecraft 1.19.2 or earlier
* Fix a lot of bugs and crashes
* Add Forge versions
* NeoForge versions are coming later; waiting for MixinExtras remapping support on Architectury
* Integrate with ImmediatelyFast if present
* Detect when the native library needs to be written to the instance folder rather than doing so on every launch
* Add `/caxtonshape` and `/caxtontext` commands
* Migrate to core shader APIs provided by Fabric and Forge
* Fabric API 0.77.0 or later is now required for Minecraft 1.19.2 or earlier
* Fix a lot of bugs and crashes
* Add Forge versions
* NeoForge versions are coming later; waiting for MixinExtras remapping support on Architectury
* Integrate with ImmediatelyFast if present
* Detect when the native library needs to be written to the instance folder rather than doing so on every launch
* Add `/caxtonshape` and `/caxtontext` commands
* Migrate to core shader APIs provided by Fabric and Forge
* Fabric API 0.77.0 or later is now required for Minecraft 1.19.2 or earlier
* Fix a lot of bugs and crashes
* Add Forge versions
* NeoForge versions are coming later; waiting for MixinExtras remapping support on Architectury
* Integrate with ImmediatelyFast if present
* Detect when the native library needs to be written to the instance folder rather than doing so on every launch
* Add `/caxtonshape` and `/caxtontext` commands
* Migrate to core shader APIs provided by Fabric and Forge
* Fabric API 0.77.0 or later is now required for Minecraft 1.19.2 or earlier
* Fix a lot of bugs and crashes
* Add Forge versions
* NeoForge versions are coming later; waiting for MixinExtras remapping support on Architectury
* Integrate with ImmediatelyFast if present
* Detect when the native library needs to be written to the instance folder rather than doing so on every launch
* Add `/caxtonshape` and `/caxtontext` commands
* Migrate to core shader APIs provided by Fabric and Forge
* Fabric API 0.77.0 or later is now required for Minecraft 1.19.2 or earlier
* Fix a lot of bugs and crashes
* Add Forge versions
* NeoForge versions are coming later; waiting for MixinExtras remapping support on Architectury
* Integrate with ImmediatelyFast if present
* Detect when the native library needs to be written to the instance folder rather than doing so on every launch
* Add `/caxtonshape` and `/caxtontext` commands
* Migrate to core shader APIs provided by Fabric and Forge
* Fabric API 0.77.0 or later is now required for Minecraft 1.19.2 or earlier
* Fix a lot of bugs and crashes
* Migrate to core shader registration APIs provided by Fabric and Forge
* Note that the 1.18.2 and 1.19.2 versions now require Fabric API 0.77.0 or later!
* Migrate to core shader registration APIs provided by Fabric and Forge
* Note that the 1.18.2 and 1.19.2 versions now require Fabric API 0.77.0 or later!
* Migrate to core shader registration APIs provided by Fabric and Forge
* Note that the 1.18.2 and 1.19.2 versions now require Fabric API 0.77.0 or later!
* Migrate to core shader registration APIs provided by Fabric and Forge
* Note that the 1.18.2 and 1.19.2 versions now require Fabric API 0.77.0 or later!
* Migrate to core shader registration APIs provided by Fabric and Forge
* Note that the 1.18.2 and 1.19.2 versions now require Fabric API 0.77.0 or later!
* Migrate to core shader registration APIs provided by Fabric and Forge
* Note that the 1.18.2 and 1.19.2 versions now require Fabric API 0.77.0 or later!
* Migrate to core shader registration APIs provided by Fabric and Forge
* Note that the 1.18.2 and 1.19.2 versions now require Fabric API 0.77.0 or later!
* Migrate to core shader registration APIs provided by Fabric and Forge
* Note that the 1.18.2 and 1.19.2 versions now require Fabric API 0.77.0 or later!
* Migrate to core shader registration APIs provided by Fabric and Forge
* Note that the 1.18.2 and 1.19.2 versions now require Fabric API 0.77.0 or later!
* Migrate to core shader registration APIs provided by Fabric and Forge
* Note that the 1.18.2 and 1.19.2 versions now require Fabric API 0.77.0 or later!
* Make reference count updates to Caxton fonts thread-safe
* This should fix crashes when Caxton thinks a font has already been destroyed. Hopefully!
* (≤ 1.19.4) Fix error in `/caxtondumpatlas` after resource reload
* Stop retaining the first page of the Caxton glyph atlas when reloading resources
* This fixes a texel bleeding error after resources are reloaded
* Make reference count updates to Caxton fonts thread-safe
* This should fix crashes when Caxton thinks a font has already been destroyed. Hopefully!
* (≤ 1.19.4) Fix error in `/caxtondumpatlas` after resource reload
* Stop retaining the first page of the Caxton glyph atlas when reloading resources
* This fixes a texel bleeding error after resources are reloaded
* Make reference count updates to Caxton fonts thread-safe
* This should fix crashes when Caxton thinks a font has already been destroyed. Hopefully!
* (≤ 1.19.4) Fix error in `/caxtondumpatlas` after resource reload
* Stop retaining the first page of the Caxton glyph atlas when reloading resources
* This fixes a texel bleeding error after resources are reloaded
* Make reference count updates to Caxton fonts thread-safe
* This should fix crashes when Caxton thinks a font has already been destroyed. Hopefully!
* (≤ 1.19.4) Fix error in `/caxtondumpatlas` after resource reload
* Stop retaining the first page of the Caxton glyph atlas when reloading resources
* This fixes a texel bleeding error after resources are reloaded
* Make reference count updates to Caxton fonts thread-safe
* This should fix crashes when Caxton thinks a font has already been destroyed. Hopefully!
* (≤ 1.19.4) Fix error in `/caxtondumpatlas` after resource reload
* Stop retaining the first page of the Caxton glyph atlas when reloading resources
* This fixes a texel bleeding error after resources are reloaded
* Make reference count updates to Caxton fonts thread-safe
* This should fix crashes when Caxton thinks a font has already been destroyed. Hopefully!
* (≤ 1.19.4) Fix error in `/caxtondumpatlas` after resource reload
* Stop retaining the first page of the Caxton glyph atlas when reloading resources
* This fixes a texel bleeding error after resources are reloaded
* Make reference count updates to Caxton fonts thread-safe
* This should fix crashes when Caxton thinks a font has already been destroyed. Hopefully!
* (≤ 1.19.4) Fix error in `/caxtondumpatlas` after resource reload
* Stop retaining the first page of the Caxton glyph atlas when reloading resources
* This fixes a texel bleeding error after resources are reloaded
* Make reference count updates to Caxton fonts thread-safe
* This should fix crashes when Caxton thinks a font has already been destroyed. Hopefully!
* (≤ 1.19.4) Fix error in `/caxtondumpatlas` after resource reload
* Stop retaining the first page of the Caxton glyph atlas when reloading resources
* This fixes a texel bleeding error after resources are reloaded
* Make reference count updates to Caxton fonts thread-safe
* This should fix crashes when Caxton thinks a font has already been destroyed. Hopefully!
* (≤ 1.19.4) Fix error in `/caxtondumpatlas` after resource reload
* Stop retaining the first page of the Caxton glyph atlas when reloading resources
* This fixes a texel bleeding error after resources are reloaded
* Make reference count updates to Caxton fonts thread-safe
* This should fix crashes when Caxton thinks a font has already been destroyed. Hopefully!
* (≤ 1.19.4) Fix error in `/caxtondumpatlas` after resource reload
* Stop retaining the first page of the Caxton glyph atlas when reloading resources
* This fixes a texel bleeding error after resources are reloaded
* Fix some changes from beta.2 not being applied to 1.20.1 and earlier versions
* Extended grapheme clusters are now treated as one unit when editing text
* Fix some changes from beta.2 not being applied to 1.20.1 and earlier versions
* Extended grapheme clusters are now treated as one unit when editing text
* Fix some changes from beta.2 not being applied to 1.20.1 and earlier versions
* Extended grapheme clusters are now treated as one unit when editing text
* Fix some changes from beta.2 not being applied to 1.20.1 and earlier versions
* Extended grapheme clusters are now treated as one unit when editing text
* Fix some changes from beta.2 not being applied to 1.20.1 and earlier versions
* Extended grapheme clusters are now treated as one unit when editing text
* Fix some changes from beta.2 not being applied to 1.20.1 and earlier versions
* Extended grapheme clusters are now treated as one unit when editing text
* Fix some changes from beta.2 not being applied to 1.20.1 and earlier versions
* Extended grapheme clusters are now treated as one unit when editing text
* Fix some changes from beta.2 not being applied to 1.20.1 and earlier versions
* Extended grapheme clusters are now treated as one unit when editing text
* Fix some changes from beta.2 not being applied to 1.20.1 and earlier versions
* Extended grapheme clusters are now treated as one unit when editing text
* Fix some changes from beta.2 not being applied to 1.20.1 and earlier versions
* Extended grapheme clusters are now treated as one unit when editing text
* Add `/caxtontext` command to test text layout
* Update dependencies used by native library
* Fix bug where certain texts in multiple scripts are not laid out properly
* Fix bug where the first page of the glyph atlas would become unusable when resources are reloaded
* (1.20.1 and later) Fix error in `/caxtondumpatlas` after resource reload
* Fix display bugs when inserting certain strings into edit boxes
* Add `/caxtontext` command to test text layout
* Update dependencies used by native library
* Fix bug where certain texts in multiple scripts are not laid out properly
* Fix bug where the first page of the glyph atlas would become unusable when resources are reloaded
* (1.20.1 and later) Fix error in `/caxtondumpatlas` after resource reload
* Fix display bugs when inserting certain strings into edit boxes
* Add `/caxtontext` command to test text layout
* Update dependencies used by native library
* Fix bug where certain texts in multiple scripts are not laid out properly
* Fix bug where the first page of the glyph atlas would become unusable when resources are reloaded
* (1.20.1 and later) Fix error in `/caxtondumpatlas` after resource reload
* Fix display bugs when inserting certain strings into edit boxes
* Add `/caxtontext` command to test text layout
* Update dependencies used by native library
* Fix bug where certain texts in multiple scripts are not laid out properly
* Fix bug where the first page of the glyph atlas would become unusable when resources are reloaded
* (1.20.1 and later) Fix error in `/caxtondumpatlas` after resource reload
* Fix display bugs when inserting certain strings into edit boxes
* Add `/caxtontext` command to test text layout
* Update dependencies used by native library
* Fix bug where certain texts in multiple scripts are not laid out properly
* Fix bug where the first page of the glyph atlas would become unusable when resources are reloaded
* (1.20.1 and later) Fix error in `/caxtondumpatlas` after resource reload
* Fix display bugs when inserting certain strings into edit boxes
* Add `/caxtontext` command to test text layout
* Update dependencies used by native library
* Fix bug where certain texts in multiple scripts are not laid out properly
* Fix bug where the first page of the glyph atlas would become unusable when resources are reloaded
* (1.20.1 and later) Fix error in `/caxtondumpatlas` after resource reload
* Fix display bugs when inserting certain strings into edit boxes
* Add `/caxtontext` command to test text layout
* Update dependencies used by native library
* Fix bug where certain texts in multiple scripts are not laid out properly
* Fix bug where the first page of the glyph atlas would become unusable when resources are reloaded
* (1.20.1 and later) Fix error in `/caxtondumpatlas` after resource reload
* Fix display bugs when inserting certain strings into edit boxes
* Add `/caxtontext` command to test text layout
* Update dependencies used by native library
* Fix bug where certain texts in multiple scripts are not laid out properly
* Fix bug where the first page of the glyph atlas would become unusable when resources are reloaded
* (1.20.1 and later) Fix error in `/caxtondumpatlas` after resource reload
* Fix display bugs when inserting certain strings into edit boxes
* Add `/caxtontext` command to test text layout
* Update dependencies used by native library
* Fix bug where certain texts in multiple scripts are not laid out properly
* Fix bug where the first page of the glyph atlas would become unusable when resources are reloaded
* (1.20.1 and later) Fix error in `/caxtondumpatlas` after resource reload
* Fix display bugs when inserting certain strings into edit boxes
* Add `/caxtontext` command to test text layout
* Update dependencies used by native library
* Fix bug where certain texts in multiple scripts are not laid out properly
* Fix bug where the first page of the glyph atlas would become unusable when resources are reloaded
* (1.20.1 and later) Fix error in `/caxtondumpatlas` after resource reload
* Fix display bugs when inserting certain strings into edit boxes
* Use ImmediatelyFast API for the `tweakExpText` option
* This is enabled if ImmediatelyFast ≥0.2.0 is installed
* Fix a crash when the game attempts to draw text before resources are loaded for the first time
* This fixes a log spam issue when Drippy Loading Screen draws text on the loading screen
* Use ImmediatelyFast API for the `tweakExpText` option
* This is enabled if ImmediatelyFast ≥0.2.0 is installed
* Fix a crash when the game attempts to draw text before resources are loaded for the first time
* This fixes a log spam issue when Drippy Loading Screen draws text on the loading screen
* Use ImmediatelyFast API for the `tweakExpText` option
* This is enabled if ImmediatelyFast ≥0.2.0 is installed
* Fix a crash when the game attempts to draw text before resources are loaded for the first time
* This fixes a log spam issue when Drippy Loading Screen draws text on the loading screen
* Use ImmediatelyFast API for the `tweakExpText` option
* This is enabled if ImmediatelyFast ≥0.2.0 is installed
* Fix a crash when the game attempts to draw text before resources are loaded for the first time
* This fixes a log spam issue when Drippy Loading Screen draws text on the loading screen
* Use ImmediatelyFast API for the `tweakExpText` option
* This is enabled if ImmediatelyFast ≥0.2.0 is installed
* Fix a crash when the game attempts to draw text before resources are loaded for the first time
* This fixes a log spam issue when Drippy Loading Screen draws text on the loading screen
* Use ImmediatelyFast API for the `tweakExpText` option
* This is enabled if ImmediatelyFast ≥0.2.0 is installed
* Fix a crash when the game attempts to draw text before resources are loaded for the first time
* This fixes a log spam issue when Drippy Loading Screen draws text on the loading screen
* Use ImmediatelyFast API for the `tweakExpText` option
* This is enabled if ImmediatelyFast ≥0.2.0 is installed
* Fix a crash when the game attempts to draw text before resources are loaded for the first time
* This fixes a log spam issue when Drippy Loading Screen draws text on the loading screen
* Use ImmediatelyFast API for the `tweakExpText` option
* This is enabled if ImmediatelyFast ≥0.2.0 is installed
* Fix a crash when the game attempts to draw text before resources are loaded for the first time
* This fixes a log spam issue when Drippy Loading Screen draws text on the loading screen
* Use ImmediatelyFast API for the `tweakExpText` option
* This is enabled if ImmediatelyFast ≥0.2.0 is installed
* Fix a crash when the game attempts to draw text before resources are loaded for the first time
* This fixes a log spam issue when Drippy Loading Screen draws text on the loading screen
* Backport 0.5.0 changes to earlier versions
* Fix race condition with FontStorage mixin (previously introduced in 0.4.12)
* This fixes a crash when Caxton is installed with Create and REI
* Mark MemoryLeakFix ≤ 1.1.1 as incompatible
* Please upgrade to 1.1.2 or later!
(Reuploaded to fix a crash when loading in a production environment.)
* Backport 0.5.0 changes to earlier versions
* Fix race condition with FontStorage mixin (previously introduced in 0.4.12)
* This fixes a crash when Caxton is installed with Create and REI
* Mark MemoryLeakFix ≤ 1.1.1 as incompatible
* Please upgrade to 1.1.2 or later!
(Reuploaded to fix a crash when loading in a production environment.)
* Backport 0.5.0 changes to earlier versions
* Fix race condition with FontStorage mixin (previously introduced in 0.4.12)
* This fixes a crash when Caxton is installed with Create and REI
* Mark MemoryLeakFix ≤ 1.1.1 as incompatible
* Please upgrade to 1.1.2 or later!
(Reuploaded to fix a crash when loading in a production environment.)
* Backport 0.5.0 changes to earlier versions
* Fix race condition with FontStorage mixin (previously introduced in 0.4.12)
* This fixes a crash when Caxton is installed with Create and REI
* Mark MemoryLeakFix ≤ 1.1.1 as incompatible
* Please upgrade to 1.1.2 or later!
* Backport 0.5.0 changes to earlier versions
* Fix race condition with FontStorage mixin (previously introduced in 0.4.12)
* This fixes a crash when Caxton is installed with Create and REI
* Mark MemoryLeakFix ≤ 1.1.1 as incompatible
* Please upgrade to 1.1.2 or later!
* Backport 0.5.0 changes to earlier versions
* Fix race condition with FontStorage mixin (previously introduced in 0.4.12)
* This fixes a crash when Caxton is installed with Create and REI
* Mark MemoryLeakFix ≤ 1.1.1 as incompatible
* Please upgrade to 1.1.2 or later!
* Backport 0.5.0 changes to earlier versions
* Fix race condition with FontStorage mixin (previously introduced in 0.4.12)
* This fixes a crash when Caxton is installed with Create and REI
* Mark MemoryLeakFix ≤ 1.1.1 as incompatible
* Please upgrade to 1.1.2 or later!
* Backport 0.5.0 changes to earlier versions
* Fix race condition with FontStorage mixin (previously introduced in 0.4.12)
* This fixes a crash when Caxton is installed with Create and REI
* Mark MemoryLeakFix ≤ 1.1.1 as incompatible
* Please upgrade to 1.1.2 or later!
This update introduces support for Forge using [Architectury Plugin](https://docs.architectury.dev/plugin/introduction).
Note that since this update increases the version of the included [MixinExtras](https://github.com/LlamaLad7/MixinExtras) library, it is incompatible with [Memory Leak Fix](https://modrinth.com/mod/memoryleakfix) versions 1.1.1 and earlier. There is a fix to Memory Leak Fix that solves this incompatibility; until an update is officially released, you can use a [development build of Memory Leak Fix](https://github.com/fxmorin/MemoryLeakFix/actions/runs/5985677613).
This update introduces support for Forge using [Architectury Plugin](https://docs.architectury.dev/plugin/introduction).
Note that since this update increases the version of the included [MixinExtras](https://github.com/LlamaLad7/MixinExtras) library, it is incompatible with [Memory Leak Fix](https://modrinth.com/mod/memoryleakfix) versions 1.1.1 and earlier. There is a fix to Memory Leak Fix that solves this incompatibility; until an update is officially released, you can use a [development build of Memory Leak Fix](https://github.com/fxmorin/MemoryLeakFix/actions/runs/5985677613).
This experimental version replaces [msdfgen-rs](https://github.com/katyo/msdfgen-rs) with the pure-Rust replacement [fdsm](https://gitlab.com/Kyarei/fdsm). This change was made to make Caxton easier to build on CI, but it should also reduce the time taken to generate glyph atlases for MSDF fonts.
* Add `reuseTextRendererDrawer` option
* Enabled by default; fixes conflict with ImmediatelyFast’s `fast_text_lookup` optimization when disabled
* Start vetting crate dependencies in the Rust part of the code
This will be the last version released for 1.19.3.
* Add `reuseTextRendererDrawer` option
* Enabled by default; fixes conflict with ImmediatelyFast’s `fast_text_lookup` optimization when disabled
* Start vetting crate dependencies in the Rust part of the code
This will be the last version released for 1.19.3.
* Add `reuseTextRendererDrawer` option
* Enabled by default; fixes conflict with ImmediatelyFast’s `fast_text_lookup` optimization when disabled
* Start vetting crate dependencies in the Rust part of the code
This will be the last version released for 1.19.3.
* Add `reuseTextRendererDrawer` option
* Enabled by default; fixes conflict with ImmediatelyFast’s `fast_text_lookup` optimization when disabled
* Start vetting crate dependencies in the Rust part of the code
This will be the last version released for 1.19.3.
* Add `reuseTextRendererDrawer` option
* Enabled by default; fixes conflict with ImmediatelyFast’s `fast_text_lookup` optimization when disabled
* Start vetting crate dependencies in the Rust part of the code
This will be the last version released for 1.19.3.
* Fix a crash when clearing an already empty glyph atlas
* Text field widgets now scroll to the right position when moving the cursor leftward by more than the width of the field
* Fix issues with mods that set the contents of a text field before its width, such as Custom Player Models
* Update bundled Inter font to 4.0-beta9
* Fix a crash when clearing an already empty glyph atlas
* Text field widgets now scroll to the right position when moving the cursor leftward by more than the width of the field
* Fix issues with mods that set the contents of a text field before its width, such as Custom Player Models
* Update bundled Inter font to 4.0-beta9
* Fix a crash when clearing an already empty glyph atlas
* Text field widgets now scroll to the right position when moving the cursor leftward by more than the width of the field
* Fix issues with mods that set the contents of a text field before its width, such as Custom Player Models
* Update bundled Inter font to 4.0-beta9
* Fix a crash when clearing an already empty glyph atlas
* Text field widgets now scroll to the right position when moving the cursor leftward by more than the width of the field
* Fix issues with mods that set the contents of a text field before its width, such as Custom Player Models
* Update bundled Inter font to 4.0-beta9
* Fix a crash when clearing an already empty glyph atlas
* Text field widgets now scroll to the right position when moving the cursor leftward by more than the width of the field
* Fix issues with mods that set the contents of a text field before its width, such as Custom Player Models
* Update bundled Inter font to 4.0-beta9
* Fix a rare crash when reloading resources
* Fix a crash when the first glyph rendered from a Caxton font after a resource reload has zero width or height
* Fix crash when another mod instantiates `TextRenderer`s during mod initialization, such as Hephaestus
* Fix rasterization bugs with certain fonts under `raster` tech
* Fix a rare crash when reloading resources
* Fix a crash when the first glyph rendered from a Caxton font after a resource reload has zero width or height
* Fix crash when another mod instantiates `TextRenderer`s during mod initialization, such as Hephaestus
* Fix rasterization bugs with certain fonts under `raster` tech
* Fix a rare crash when reloading resources
* Fix a crash when the first glyph rendered from a Caxton font after a resource reload has zero width or height
* Fix crash when another mod instantiates `TextRenderer`s during mod initialization, such as Hephaestus
* Fix rasterization bugs with certain fonts under `raster` tech
* Fix a rare crash when reloading resources
* Fix a crash when the first glyph rendered from a Caxton font after a resource reload has zero width or height
* Fix crash when another mod instantiates `TextRenderer`s during mod initialization, such as Hephaestus
* Fix rasterization bugs with certain fonts under `raster` tech
* Fix a rare crash when reloading resources
* Fix a crash when the first glyph rendered from a Caxton font after a resource reload has zero width or height
* Fix crash when another mod instantiates `TextRenderer`s during mod initialization, such as Hephaestus
* Fix rasterization bugs with certain fonts under `raster` tech
This update was brought to you by the `DrawContext` class.
Remove some immediate buffer constructions in Caxton’s tweaks to GUI elements, instead using `DrawContext`’s ability to manage rendering buffers like every 23w18a GUI component should do.
From now on, 1.20 snapshot versions will be labeled as 0.4.3 alphas.
This update was brought to you by the class `FontManager.class_8556`.
> #flirora: time to update caxton to the next snapshot
>
> #flirora: they fucking DFUed the `FontLoader`
>
> #flirora: fucking shit
>
> 0x150: i love minecraft
Updated to 23w18a. This might have bugs; tread carefully and report any that are found!
* Fix a crash on startup when the `config` directory was absent.
* Fix the cursor appearing at an incorrect position in the sign editing screen when inserting or deleting text in the middle of a line.
* Fix a crash on startup when the `config` directory was absent.
* Fix the cursor appearing at an incorrect position in the sign editing screen when inserting or deleting text in the middle of a line.
* Fix a crash on startup when the `config` directory was absent.
* Fix the cursor appearing at an incorrect position in the sign editing screen when inserting or deleting text in the middle of a line.
* Fix a crash on startup when the `config` directory was absent.
* Fix the cursor appearing at an incorrect position in the sign editing screen when inserting or deleting text in the middle of a line.
Hotfix for a crash on startup when the date is April 1.
Caxton 0.4.0 made the April Fool’s joke less intrusive. Older versions rendered all text with a substitution cipher; this was switched to obfuscating only the splash text in 0.4.0. Unfortunately, this functionality was not coded properly, resulting in the game crashing on launch.
Hotfix for a crash on startup when the date is April 1.
Caxton 0.4.0 made the April Fool’s joke less intrusive. Older versions rendered all text with a substitution cipher; this was switched to obfuscating only the splash text in 0.4.0. Unfortunately, this functionality was not coded properly, resulting in the game crashing on launch.
Hotfix for a crash on startup when the date is April 1.
Caxton 0.4.0 made the April Fool’s joke less intrusive. Older versions rendered all text with a substitution cipher; this was switched to obfuscating only the splash text in 0.4.0. Unfortunately, this functionality was not coded properly, resulting in the game crashing on launch.
Hotfix for a crash on startup when the date is April 1.
Caxton 0.4.0 made the April Fool’s joke less intrusive. Older versions rendered all text with a substitution cipher; this was switched to obfuscating only the splash text in 0.4.0. Unfortunately, this functionality was not coded properly, resulting in the game crashing on launch.
* Update to 1.19.4
* Add option for non-MSDF text rendering
* This is useful for pixel fonts, and it is also the only method to be compatible with Iris Shaders
* Add `sortTextRenderLayers` global option
* Fix rendering issues in certain GUI elements
* Fix compatibility with EMI
* Update to 1.19.4
* Add option for non-MSDF text rendering
* This is useful for pixel fonts, and it is also the only method to be compatible with Iris Shaders
* Add `sortTextRenderLayers` global option
* Fix rendering issues in certain GUI elements
* Fix compatibility with EMI
* Update to 1.19.4
* Add option for non-MSDF text rendering
* This is useful for pixel fonts, and it is also the only method to be compatible with Iris Shaders
* Add `sortTextRenderLayers` global option
* Fix rendering issues in certain GUI elements
* Fix compatibility with EMI
* Update to 1.19.4
* Add option for non-MSDF text rendering
* This is useful for pixel fonts, and it is also the only method to be compatible with Iris Shaders
* Add `sortTextRenderLayers` global option
* Fix rendering issues in certain GUI elements
* Fix compatibility with EMI
* Fix incompatibility with [EMI](https://modrinth.com/mod/emi)
* Fix selection highlights in text field widgets failing to render in versions prior to 1.19.3
* Fix incompatibility with [EMI](https://modrinth.com/mod/emi)
* Fix selection highlights in text field widgets failing to render in versions prior to 1.19.3
* Fix incompatibility with [EMI](https://modrinth.com/mod/emi)
* Fix selection highlights in text field widgets failing to render in versions prior to 1.19.3
* Fix incompatibility with [EMI](https://modrinth.com/mod/emi)
* Fix selection highlights in text field widgets failing to render in versions prior to 1.19.3
* Implement outlined text (such as on glow ink signs) for `raster` fonts. This is controlled by the `range` parameter in the font metadata JSON.
* Force glyphs to be rasterized such that the baseline is aligned to a pixel boundary at the highest mipmap level requested. In less technical terms, this fixes an issue where text would render without a consistent baseline in raster fonts, especially at high mipmap levels.
* Implement the `blur` option for raster fonts, which specifies whether texels in the glyph bitmaps should be interpolated. The option is set in the font provider JSON and not the font metadata JSON as previously specified.
* Fix a bug where reloading resource packs would break text rendering.
* Patch the vanilla `rendertype_text_intensity` and `rendertype_text_intensity_see_through` core shaders so that the texel intensity only affects the alpha component of the fragment colors (instead of all components). This means that raster fonts with partial transparency should no longer have gray edges when rendered.
This release requires Fabric Loader 0.14.16 or later.
## Limitations
* Outlined text is still not implemented properly for raster fonts.
* Text in raster fonts with smooth outlines (i.e. `blur` set to true) look blurry.
This is an experimental version for testing non-MSDF-based text rendering.
Originally, Caxton has supported [MSDF](https://github.com/Chlumsky/msdfgen)-based text rendering only. However, there are situations in which this method is not ideal:
* Pixel fonts: the MSDF-based method does not render with crisp borders. However, the ability to have advanced text layout support is useful enough to have better support for these types of fonts.
* Use with shader mods such as [Iris Shaders](https://modrinth.com/mod/iris): Caxton currently adds its own core shaders. These work as long as text is rendered outside the world, such as in GUIs or HUDs. Text rendered inside the world, such as on signs and name tags, however, [does not render when a shader is active](https://github.com/IrisShaders/Iris/blob/1.18.2/docs/development/compatibility/core-shaders.md). A conventional bitmap-based pipeline would allow Caxton to work with Iris, albeit with lower graphical quality than with the MSDF-based pipeline.
## Configuration
The following options have been added to the font metadata JSON:
```json5
{
// Specifies whether to use the MSDF-based rendering method ("msdf") or
// to use glyph bitmaps ("raster").
// "msdf" is recommended for most fonts, but "raster" is more suitable for
// pixel fonts.
// Neither method is currently compatible with Iris Shaders, but support for
// "raster" when a shader is present is planned.
"tech": "msdf",
// Whether to interpolate texels in the bitmap (NOT YET IMPLEMENTED).
// Only has an effect on raster tech.
"blur": false,
// The maximum mipmap level (0 – 4).
// This is pointless to set if you’re using the MSDF rendering tech.
// However, it can be useful for non-pixel fonts when you’re using the raster
// rendering tech.
"max_mipmap": 0
}
```
## Limitations
* Outline text (such as on signs with glow ink) does not render with outlines in `raster` fonts.
* Currently, Caxton still uses custom core shaders for `raster` text. This will probably be fixed in a later snapshot.
This release changes the way glyphs are uploaded to the GPU. Previously, all glyphs would be put in a texture atlas and uploaded to VRAM eagerly during loading, which was wasteful for large fonts. This version uploads each glyph if and when it is needed.
Note that MTSDF calculation is still done eagerly, as it takes about 50 ms per glyph.
## Cached glyph storage
MTSDF calculations are now done in parallel, using all available CPUs. The file format for this information has also been changed.
## Other additions
* `/caxtondumpatlas` command to dump the dynamic texture atlas
* `debugRefcountChanges` global option
* `font_scale` option to font provider
* This sets the scale at which the font should be drawn relative to the default
* `caxton_providers` key in font JSON
* Acts like `providers` but will be ignored when Caxton is not installed.
## Changes and fixes
* `margin` now defaults to `range` in font metadata
* `range` now has a hard limit of 255
* Underlines and strikethroughs now draw with at least 1 pixel of thickness
* Text fields now draw placeholder text in the 1.19.3 version
* Add fixes for multi-line edit boxes (1.19.2 and later)
* Fix compatibility with TweakerMore’s `disableSignTextLengthLimit` feature
* Fix a bug where line-wrapping certain text containing RTL scripts would return the text in the wrong order
* Fix various layout-related crashes
This release changes the way glyphs are uploaded to the GPU. Previously, all glyphs would be put in a texture atlas and uploaded to VRAM eagerly during loading, which was wasteful for large fonts. This version uploads each glyph if and when it is needed.
Note that MTSDF calculation is still done eagerly, as it takes about 50 ms per glyph.
## Cached glyph storage
MTSDF calculations are now done in parallel, using all available CPUs. The file format for this information has also been changed.
## Other additions
* `/caxtondumpatlas` command to dump the dynamic texture atlas
* `debugRefcountChanges` global option
* `font_scale` option to font provider
* This sets the scale at which the font should be drawn relative to the default
* `caxton_providers` key in font JSON
* Acts like `providers` but will be ignored when Caxton is not installed.
## Changes and fixes
* `margin` now defaults to `range` in font metadata
* `range` now has a hard limit of 255
* Underlines and strikethroughs now draw with at least 1 pixel of thickness
* Text fields now draw placeholder text in the 1.19.3 version
* Add fixes for multi-line edit boxes (1.19.2 and later)
* Fix compatibility with TweakerMore’s `disableSignTextLengthLimit` feature
* Fix a bug where line-wrapping certain text containing RTL scripts would return the text in the wrong order
* Fix various layout-related crashes
This release changes the way glyphs are uploaded to the GPU. Previously, all glyphs would be put in a texture atlas and uploaded to VRAM eagerly during loading, which was wasteful for large fonts. This version uploads each glyph if and when it is needed.
Note that MTSDF calculation is still done eagerly, as it takes about 50 ms per glyph.
## Cached glyph storage
MTSDF calculations are now done in parallel, using all available CPUs. The file format for this information has also been changed.
## Other additions
* `/caxtondumpatlas` command to dump the dynamic texture atlas
* `debugRefcountChanges` global option
* `font_scale` option to font provider
* This sets the scale at which the font should be drawn relative to the default
* `caxton_providers` key in font JSON
* Acts like `providers` but will be ignored when Caxton is not installed.
## Changes and fixes
* `margin` now defaults to `range` in font metadata
* `range` now has a hard limit of 255
* Underlines and strikethroughs now draw with at least 1 pixel of thickness
* Text fields now draw placeholder text in the 1.19.3 version
* Add fixes for multi-line edit boxes (1.19.2 and later)
* Fix compatibility with TweakerMore’s `disableSignTextLengthLimit` feature
* Fix a bug where line-wrapping certain text containing RTL scripts would return the text in the wrong order
* Fix various layout-related crashes
* Add `font_scale` option to font provider
* Add support for `caxton_providers` key in font JSON
* This can be used instead of `providers` but will be ignored when Caxton is not present
* Fix a bug where line-wrapping certain text containing RTL scripts would return the text in the wrong order
* Add `font_scale` option to font provider
* Add support for `caxton_providers` key in font JSON
* This can be used instead of `providers` but will be ignored when Caxton is not present
* Fix a bug where line-wrapping certain text containing RTL scripts would return the text in the wrong order
* Add `font_scale` option to font provider
* Add support for `caxton_providers` key in font JSON
* This can be used instead of `providers` but will be ignored when Caxton is not present
* Fix a bug where line-wrapping certain text containing RTL scripts would return the text in the wrong order
* Fix wrong position of text on the sign editing screen
* Make underlines and strikethroughs draw with at least 1 pixel of thickness
* Additionally, the 1.18.2 and 1.19.2 versions fix a few crashes.
* Fix wrong position of text on the sign editing screen
* Make underlines and strikethroughs draw with at least 1 pixel of thickness
* Additionally, the 1.18.2 and 1.19.2 versions fix a few crashes.
* Fix wrong position of text on the sign editing screen
* Make underlines and strikethroughs draw with at least 1 pixel of thickness
* Additionally, the 1.18.2 and 1.19.2 versions fix a few crashes.
* Text area widgets (used in the chat report screen, as well as at least one other mod) now work properly
* Revise fixes to the sign edit screen to be finer grained
* This fixes an [incompatibility with TweakerMore’s `disableSignTextLengthLimit` feature](https://gitlab.com/Kyarei/caxton/-/issues/14).
* Add `debugRefcountChanges` option to global config
* Add `face_index` option in font face metadata
* Text fields now draw their placeholder text
* Fix crash when trying to wrap text with pathologically narrow columns
* This affects mods such as [IBE Editor](https://modrinth.com/mod/ibe-editor) that initially set text area widgets to have a negative width.
* Compress cached distance fields so they take up less disk space.
* Parallelize distance field calculations.
* Loading a font for the first time should now be faster on multi-core systems.
* In the font metadata, `margin` now defaults to `range` when omitted.
* Replace the atlas implementation with a bucketed shelf allocation algorithm that wastes *much* less space than the previous one
* Add the `/caxtondumpatlas` command to dump the current Caxton glyph atlas for debugging
* Validate indices into pixel data associated glyphs when loading cached font data from the disk
Some caveats:
* Due to the new atlas implementation, this release imposes a hard limit of 255 on the `range` parameter in the `*.ttf.json` or `*.otf.json` file.
As usual, feel free to report bugs or performance regressions on the issue tracker.
This is a test of a major revision in how glyphs are stored to evaluate its viability.
Previously, Caxton created texture atlases for all of the glyphs of a font during resource loading and uploaded them as textures onto the GPU.
This version still computes the MSDF images of each glyph at load time but maintains a dynamic atlas and uploads the glyph textures to the GPU when the respective glyphs are first used. This can save GPU memory for large fonts but might otherwise increase overhead. In addition, the atlas implementation has less information to work with (for instance, it can no longer reorder all of the glyphs by descending height).
Depending on your hardware, the font you use, and the other mods you have installed, Caxton 0.3.0-alpha.1 might perform better or worse than 0.2.3. Feedback on this, as well as any bug reports, are welcome on the issue tracker, but remember to mention the version you’re using.
## Limitations
* This version overhauls how cached distance fields are stored, so any fonts you load will need their caches regenerated.
* In particular, cached glyph textures are no longer stored as a .png file. In fact, they’re not compressed at all! This means that cache files will be *huge*. This will be resolved later.
* Cache files now depend on the endianness of your platform.
* When copying glyph bitmaps from CPU to GPU memory, Caxton does not currently validate the offset to the source data. This will be fixed in a later update, but you might want to avoid loading untrusted cache files for now.
* Only 1.19.3 is currently supported.
The source for this version is available in the `feature/lazy-vramming` branch of the repository.