Do not use new word breaker in command mode
Add preferences navigation to mods config button
Improve PreferencesFragment
Add API to allow back to previous screen, allow passing a ScreenCallback
Add API to create MuiScreen
Add Segoe UI Symbol to default fallback list
Fix issue with TrueType Collection registration
Add font registration config to register additional fonts
Add modifiers to ACTION_SCROLL event
Add showing layout bounds
Add adaptive tooltip colors
Renew tooltip rendering
Create rendertype_modern_tooltip shader
Interpolate color bilinearly in sRGB space
Better shadow effect, add shadow opacity
Add corner radius config
Adjust auto scrolling velocity
Fix bugs on exact positioning with some mods
Fix a rare crash on config reloading due to thread-safety
Apply blur effect only to screens that have default background (configurable)
Do not use Overwrite for calculateScale
Fix startup crash on server and datagen
Fix EditBox deletion undo not working
Refactor project structure and bootstrap
Remove ScreenCallback capability
Others are equivalent to NeoForge version
Fix tooltip compatibility with Sodium
Others are functionally equivalent to NeoForge version
Change logging level for font loading, enhance onFontRegistered thread-safety
Add new default font behaviors and rule set, allowing regexes to match fonts
Adjust text renderer alpha threshold from 1 to 2 (0-255)
Fix only a very small set of characters can be used for obfuscated rendering
Use Latin1 for FastCharSet
Fix a rare crash on text engine due to batch rendering and display mode changes
Update typecast checks, add ArrayMap.forEach
Make FontFamily.createFamily throw Exception
Add FontFamily.createFamilies for TrueType Collection
Add HorizontalScrollView, update ScrollView
Add debug layout to show layout bounds
Optimize Color.parseColor
Add Animatable and Animatable2
Add some missing javadoc
Use UTF-16 for TextUtils read/write
Add TextPaint.baselineShift and Subscript/SuperscriptSpan
Disable pooling of Message objects
Build against a copy of Arc3D, instead of composite build
Add Canvas.shear / skew, deprecate Canvas.getMatrix
Add TextUtils.concat and TextUtils.join methods
Make use of Java 20 float/half convert instruction
Add CharBuffer support for TextUtils.getChars()
No changes
No changes
Add 3D shearing transform methods
Improve GL_TEXTURE_SWIZZLE_RGBA compatibility
Tons of updates on DSL shader compiler, including new grammar parsing and SPIR-V generation, no detailed information provided
Forge Extension 1.20.4
Add Markdown preview
Use vanilla border style for modern tooltip (when rounded = false)
Add font names for registered fonts, add JetBrains Mono
Update to Emoji 15.1, remove Emoji 15 workaround
Add auto scroll when tooltip is out of screen
Add shadow effect for tooltip
Add developer mode config to Preferences GUI
Hide Advanced Options and Dev when not in developer mode
Adjust default font behavior to be locale-sensitive
Tweak fallback font loading behavior (now it accepts font files)
Move destroy() method so that the game won't crash in forced tick after the window closes
Handle glowing sign where text color is black
Update Traditional Chinese - notlin4
NeoForge Extension 1.20.4
Port to NeoForge
Remove ScreenCallback capability
Others are equivalent to Forge version
Fabric Extension 1.20.4
Enhance tooltip compatibility with Sodium (when rounded = false)
Add tooltip line wrapping for Fabric
Add tooltip center title and title break for Fabric
Others are functionally equivalent to Forge version
Modern Text Engine 1.20.4
Add Untranslated Items integration
Fix useComponentCache not working at all
Fix force unicode font not working after game restart
Fix line breaker SIOOBE for illegal string (this fixed crash with Better Statistics Screen)
Core Framework 3.10.0
Move kotlin extension to a separate module (Core-KTX)
Add Log class to avoid using log4j in submodules
Implement blend mode filter for ShapeDrawable, ColorDrawable and other Drawable classes
Fix incorrect drop-down position in RTL layout direction
Fix MenuPopup overlap anchor (google-bug) (fix #199)
Fix TextShaper context range for BiDi analysis
Add LocaleSpan
Add all 42 blend modes that used in Photoshop (currently no shader implementation)
Update BlendMode and Color.blend()
Change Bitmap.getSize() type to long
Make Bitmap's color info mutable (for reinterpretation)
Add path measurement implementation (PathMeasure class)
Remove 2GB restriction on Bitmap creation, add more sanitizations
Deprecate ImageStore, fix javadoc errors
Update Bitmap with Arc3D
Update Matrix and Path with Arc3D
Fix Underline and Strikethrough offset
Add "exclusive" East Asian family support (currently not used)
Public Menu.setOptionalIconsVisible() method
Change atlas coverage type to double
Core Framework - Kotlin Extension 3.10.0
Add kotlin-flavored methods, update annotations
Markdown 3.10.0
Suppress unchecked warning
Arc 3D Graphics Engine 3.10.0
Add color filters and color matrix
Add/update all blend modes and their raster implementations: PLUS, MINUS, DIFFERENCE, EXCLUSION, COLOR_DODGE, COLOR_BURN, HARD_LIGHT, SOFT_LIGHT, LINEAR_DODGE, LINEAR_BURN, VIVID_LIGHT, LINEAR_LIGHT, PIN_LIGHT, HARD_MIX and HSL blend modes (HUE, SATURATION, COLOR, LUMINOSITY)
Rename shaderc package to compiler
Add Image-derived and Shader-derived skeleton classes
Add UNORM_PACK16 and UNORM_PACK32 encoding constant
Public ColorType.channelFlags
Add missing GRAY_ALPHA_88 for ColorType.encoding
Add alpha type validation
Make owner's reference to pixel map mutable
Fix ColorSpace initializer
Add Raster, remove heap version of Bitmap
Add full path measurement implementation
Add PixelUtils for pixel conversion
Add PixelMap and PixelRef, remove Pixmap
Add and optimize Path methods
Add Path.bounds computation, optimize Path allocation
Add Rect2fc and Rect2ic for read-only usage
Inline Path.Ref usage count implementation
Finish approximation of cubic strokes by quadratic splines
Finish approximation of quadratic strokes by quadratic splines
Add MathUtil.pin() method for capturing NaN values, replace some use of clamp()
Add conic section to quadratic curves conversion
Add several methods to reset the Path
Finish RoundJoiner, fix Path reversePop
Add Matrixc interface for read-only usage of Matrix
Update and optimize PathStroker
Optimize approximation of conic sections by quadratic splines
Add PathConsumer
Add Path tessellation for quadratic and cubic splines
Add PathUtils and WangsFormula for subdivisions
Add Path, add Path.Ref, add PathIterator
Add Geometry class for finding inflection points, tangent, curvature, max curvature, cusp, solving quadratic equations, cubic equations, etc
Add RefCounted interface
Add Hardware transfer processor
Optimize rectangle packer
Add baseline config
Add more obfuscated chars
Enhance breaking multilayer text at a point
Add font size config
Internal changes
Refactor the loader and improved compatibility
Add buttons to disable text engine and extensions
Add radial blur effect (beta)
Port to 1.18.2 (1.18.1 works as well)
Preload the engine and parallel cleaner
Fix font blur when GUI scale is 1 or 2
Fix obfuscated chars layout
Internal changes
Stop crashing if some mods failed to load
Fix screen lifecycle and threading bugs
Add DataSet utils
Add more configs to Center UI
Make all registries only in dev mode
Quit UI thread safely
No updates
Improve documentation
Add ReactiveX
Add BlendMode and color blending
Add TextView context menu
Add clickable text styles
Add Slide and Explode transition
Add transition SFX to fragments
Add FULL support for Transition framework
Add int keys for DataSet
Add standalone application bootstrap
Add multithreaded event synchronizer
Add ContextMenu popup
Add Menus and Radio Buttons
Add DropDownList and relevant components
Add ListView and relevant components
Add FULL support for ScrollView
Add FULL support for Nested Scrolling
Add triangle drawing operation
Add new scrollbar features
Add foreground layer to View
Fix PointerIcon resolving
Fix some RTL layout bugs
Fix padding not working sometimes
Fix inverse matrix
Fix orthographic matrix
Auto lose EditText focus
New touch event handling
Multithreading AnimationHandler
Remove generic of animated values
Add new features:
Add RelativeRadioGroup
Add FragmentResultListener
Add ArrayAdapter
Add PopupMenu
Add Spinner
Add MenuItemView
Add ImageView
Add EdgeEffect
Add AnimatorSet
Add PopupWindow
Add CoordinatorLayout
Add Filter
Add HandlerThread
Add ActionProvider
Add ActionMode
Add ContextMenu
Add MenuItem
Add SubMenu
Add Menu
Add Menus
Add CharacterMap
Add SparseBooleanMap
Add EditText
Add SoundEffects
Add AdapterView
Add VelocityTracker
Add ValueAnimator
Add Shapes
Add StateListDrawable
Add DrawableContainer
Add ColorStateListDrawable
Add ImageDrawable
Add ColorDrawable
Add Drawables
Add StateListAnimator
Add StateListColor
Add StateSet
Stabilize Forge API and components
Add Center UI (Ctrl+K)
Fix several transition and lifecycle bugs
Add blur effect to screen background
Fix vanilla tooltip text not rendering
Add bootstrap config, OR 1 to disable
Fix underline and strikethrough not rendering
Close package
Always linear sampling font textures
Merge view alpha property and transitions
Change paint properties
Change gradient color ordering
Add tree base for new render pipeline
Update Libraries
Log4j 2.14.1 -> 2.17.0
caffeine 3.0.4 -> 3.0.5
icu4j 69.1 -> 70.1
LWJGL 3.2.2 -> 3.3.0
Synchronize UI messages
Update shaders and canvas pipeline
Update high precision time source
Add new event loop framework (Fast blocking) (Big Update)
Native Main Thread
Async Tasks
...
Optimize bitmap I/O, add .jfif .jif detect
Add Fragment (inherited from Module) full support (Big Update)
Back Stack
State Manager
Special Effects
Callback
...
Add DataSet (Fast I/O and persistent storage)
Add tree observer methods
Add new movement method
Add fast key-held linked list with removal support
Add Lifecycle full support (Big Update)
Live Data
Observer
...
Port to 1.18, remove deprecated methods
Add destroy state to callback lifecycle
Fix container not closed when backing
Require Java 17, update libraries
Add toast, toast manager and presenter
Fix anticipate overshoot interpolator
Expose thread scheduling methods
Fix invisible state not working
Fix null layouts not working
Notify hierarchy changes to ViewGroup
Add selected and activated states to View
Update RelativeLayout
Fix alpha blending between render targets
Rename view scale usages
Add number input filters
Fix primitive array increment
Add text color attributes
Add listener setters
Integrate multi-threading pipeline with Blaze3D
Public stable APIs
Check code style
Fix single line text alignment and scrolling
Add compound drawables to text view
Fix background paddings and transitions
Add cursor selection, movement/scrolling
Update clipboard manager
Add blinking cursor and selection rendering
Add transformation method
Add arrow key movement method
Add cursor movement and text/word deletion
Add text selection and movement
Add key event dispatching
Add pointer icon resolution
Add focus system for view tree
Fix transform with non-homogeneous vectors
Update view root and view tree protocol
Add layout transition for a view group
Add alpha transition of a view layer
Add child off-screen rendering targets
Improve MSAA framebuffer and attachments
Make animators cloneable
Add replacement style
Update new tooltip events
Fix registry references
Add network handler on netty thread
Update network protocol
Rename packages
Fix external fonts cannot be loaded on Linux
Add view paddings and RTL properties
Update layout containers
Update UI thread scheduling
Enhance quadratic bezier shader
Add DynamicLayout
Add text methods
Fix various bugs on text engine
Add SpannableStringBuilder
Fix bugs on LineBreaker
Avoid allocating large arrays for getSpans
Add GrowingArrayUtils
Enhance tooltip rendering and add gradient effect
Fix hex colors cannot be parsed
Port to 1.17.1
Port to 1.17.1, use OpenGL core profile
Require Java 16
Optimize packet dispatcher
Add gradient color on screen background blurring
Add new tooltip rendering based on the new engine
Adjust the lifecycle of render system and text engine
Fix smooth scrolling for vanilla/forge panels
Modify network protocol algorithm
Add efficient network channel
Fix compatibility to several mods
Add namespaced events to mod buses
Support rendering and sampling with bitmap-like fonts
Fix rendering with bold and italic styles
Fix rendering with enchantment characters
Improve typeface setting and font run algorithm
Improve BiDi and style algorithms on text layouts
Add new cache key on deep processed char sequences
Add new layout cache system and tracker
Add automatic resolution level switching
Support continuous text layout from deep processors
Support taking over text layout and caching from the source
Optimize text and effect rendering pipeline
Optimize formatting code resolver algorithm
Optimize layout caching on text components and sequences
Optimize rendering on multilayer styled text
Introduce character style carrier for state injection
Expand the scope of application of text engine
Fix bidirectional text rendering with multiple styles
Fix rendering with texts computed from fast digit algorithm
Fix dirty font texture data on sprite borders
Change the behavior on built-in font loading
Improve experience bar text rendering
Fix rendering with Thai and Bengali
Finish StaticLayout for text pages
Add recyclable span set and draw text command
Add deferred calculation grapheme advance and full layout
Fix various bugs for layout cache
Add texture manager and image creation
Add scaling image drawing and dimension
Remove context selector
Cleanup GLTexture usages in subclasses
Add quadratic Bezier curve drawing
Optimize OpenGL rendering pipeline for canvas
Cleanup deprecated classes and code
Optimize spannable string implementation
Fix sample array allocating
Add streaming ogg vorbis decoder and wave decoder
Add audio tracks for 2D sound playback
Add more text styles and effects
Optimize layout cache, measured text and rendering
Add new switch button widget
Add visual audio spectrum
Optimize view refresh mechanism
Add touch event for mouse operations, add click listener
Remove multiple pointers on event delivery, capture mouse
Add fast fourier transform for spectrum analysis
Optimize input event dispatching
Introduce AudioManager based on OpenAL
Apply 4x MSAA to UI framebuffer
Add the base part for text lines
Add memory calculation on measured text
Add efficient layout cache for layout pieces
Optimize glyph layout and rendering for text runs
Optimize text rendering pipeline
Add layout piece for the layout of a text run
Add PMX model parser
Add directions information for bidirectional text
Optimize GlyphManager for glyph layouts and rendering
Add new dynamic generation algorithm for font atlases
Add new scrolling algorithm to the view system
Support gradient color for geometries rendering
Add new scroller for controlling 2D scrolling
Add decomposable transformation
Apply clipping to the view system
Add quick reject against local clipping region
Introduce new clipping system and stencil test
Add drawables and host callbacks
Cleanup forge canvas API and lifecycles
Add automatic resizing for framebuffers
Add local state switching on drawing commands
Coordinate UI thread animation and drawing
Optimize rendering for view hierarchy
Drop support for Java 10 or below
Add round lines and more drawing methods
Add image drawing and recycle bitmaps
Switch to multithreaded rendering
Add automatic vertex array object generation
Add vertex attributes and vertex buffer binding points
Introduce GLCanvas and update shaders
Introduce a new method to create shader programs
Update to OpenGL 4.5 and Direct State Access
Update core package structure
Add MSAA framebuffer and renderbuffer objects
Use cleaner to release native resources
Support tab stops and base paragraph-level style
Merge new animation API with the old one
Add evaluator for custom interpolation algorithm
Add more time interpolator(s)
Add custom keyframe types and keyframe set
Introduce new animation framework and state machine
Add supported image formats and open dialog
Add bitmap for decoding images into memory and exporting
Add texture objects on client side
Suppress unsupported clipboard contents
Fix resource reading using native memory
Optimize rotation about arbitrary axis
Add efficient quaternion math for rotations
Add efficient matrix/vector math for rendering
Add Rect, Point, and their float forms
Add the concept of UI thread that differs from render thread
Abstract the API on the rendering pipeline
Add platform components to operating system
Add fragment shader to draw circular arcs
Add paint for rendering geometries
Update shaders to GLSL 430 core
Add font metric calculation
Separate text paint at different levels
Add support for emoji code points
Add application-level typeface and text locale
Add itemization algorithm for font runs
Add Unicode-based line breaker for text pages
Add base measured text for text shaping
Add object pools for recycling
Enhance style run transitions for paragraph layout
Add new BiDi analyzer for measuring paragraphs
Add various text direction heuristic algorithm
Add metric affecting styles
Add character-level appearance styles
Add support for Unicode grapheme cluster break
Add texts with markup objects
Add text package for high-level layouts
Change coordinates to match window framebuffer
Add lifecycle handler for screens
Rewrite text processing, fix text formatting
Remove vanilla bidi analysis for every text in every frame
Fix fragmentary bidirectional text layout (mixed LTR RTL)
Fix vanilla's Arabic letters shaping (start, middle, end)
Fix Devanagari (Hindi etc) and other characters rendering
Fix text effect rendering and render type
Fix text width measuring, trimming
Optimize text rendering on RAM and FPS
Adjust the alignment accuracy of the digit rendering
Reduce the requirement of OpenGL 4.6 to OpenGL 4.3
Improve the text layout accuracy of font renderer
Improve the size and advance accuracy of glyph
Improve the alignment accuracy of digit rendering
Improve the rule of font priority to use
Use grayscale pixels to store font textures to reduce memory usage
Use render nodes for text rendering to improve performance
Support higher level mipmap for font textures
Support vanilla text styles and components
Add font size style to text component
Add more configs for font renderer
Add more configs for blur effect and background opacity
Reimplement double-click event, make it work in resource packs GUI
Adjust status changing behaviour (API broken)
Fix multi-page scroll panel page bug
Fix animation chain crash
Fix scroll window total height bug
Add layout editing GUI
Add feathered rect shader
Add two-way expandable box area
Add config to set whether enable lib only mode
Add config to set whether enable blurring effect
Add echo char to text field
Fix font renderer render type not switched properly
Fix special render face culling of font renderer
Fix characters not display / layout properly (extremely confused) while game is paused
Fix characters get dislocated (combined with other chars) when a new texture mapping started
Add new methods to animation, and fix button brightness bug
Add config to set whether allow drawing font with shadow
Add config to set whether pause game when any screen is open
Add multi-page scroll panel
Add clip to canvas
Make font renderer work globally (all the game), you can select a true type font on your computer to use, however this is mainly used in GUI, so there may some bugs in other environment that I can't fix for now, so you can disable global font renderer in config. If you find some characters are missing, you can enable developer mode in config, and press Ctrl+Alt+K to clear glyph cache.