# AxolotlClient Rendering
This library allows for shader-based rendering of some rounded shapes (e.g. rectangles), static SVGs and TrueType fonts.
For SVGs the Apache Batik library is included, for fonts Freetype¹ is used.
### For Players
This is a library, you should not need to install it manually. (Unless someone declared their dependencies wrong or forgot to include it)
### For Mod Developers
##### Inclusion in your project
This library is published at https://maven.axolotlclient.com.
```gradle
dependencies {
modImplementation(include("io.github.axolotlclient.rendering:AxolotlClient-rendering:VERSION+MINECRAFT_VERSION"))
}
```
Note: you may omit the `include` statement if you do not want to embed this library into your mod. Make sure to declare your dependencies correctly for launchers to download the library in that case.
> Tip: replace `modImplementation` with `modApi` if you're writing a library that uses this one!
##### General Usage
Most methods of this library are accessible using Minecraft's `GuiGraphics` class via the injected `GuiGraphicsExtension` interface.
On 1.8.9, since there is no `GuiGraphics` class you should obtain a `GuiGraphicsExtension` using `DrawUtil.get()`.
All methods exposed via this way are prefixed with `axolotlclient_rendering`.
Fonts can be loaded using `Font.read(...)`. If you're using a variant font
this will automatically read the variants and make use of them appropriately,
however the font features supported by FreeType directly are rather limited.
If a specific feature is provided by a separate font file (for example an *italic* or
**bold** variant) they can be added using `Font#addSubFont`, specifying in which conditions it should be used
(some tags and values can be found as static definitions in the `Font` class).
### Projects that use this library
- [AxolotlClientConfig](https://codeberg.org/AxolotlClient/AxolotlClientConfig)
- [AxolotlClient](https://modrinth.com/mod/axolotlclient)
> Your project makes use of this library and you would like it to appear here? Let us know!
### FAQ
-
I'm using this library on 1.20.1 and the font looks bad
A: Because Minecraft 1.20.1 uses lwjgl 3.3.1 which did not have Freetype bindings yet this library uses STB_Truetype, which does not support hinting (there may also be other bugs we don't know about).
-
But doesn't 1.8.9 use lwjgl2 which is also below 3.3.2?
A: Indeed, however with legacy-lwjgl3 we can run it on lwjgl 3.3.6 where we do have bindings to Freetype.
-
Wouldn't it be possible to use a newer lwjgl on 1.20.1 as well?
A: Yes, but this is more difficult, increases the jar size even further and will produce incompatibilities with mods like sodium which check for which lwjgl version they're running on.
¹See FAQ, answer #1