Additions
- CMake support added for easier integration into modern build systems (thanks @glebm)
- C++ compatibility for public headers to support mixed-language codebases (thanks @glebm)
- GitHub Actions replaced Travis CI as the CI system (thanks @AJenbo)
- CI now runs on Linux, macOS, and Windows, performing both build and test using CMake and Meson:
- Linux and macOS workflows use GCC and Clang
- Windows workflow uses MSVC only
- Valgrind job added in Linux CI using Make to detect uninitialized memory usage
- Public version header
<SheenBidi/SBVersion.h>introduced for programmatic version checks SB_PUBLICmacro introduced to handle visibility of public functions across platformsSB_DEPRECATEDmacro introduced to annotate deprecated APIs with compiler-specific attributes- UTF decoding helpers introduced for single code points:
SBCodepointDecodeNextFromUTF8SBCodepointDecodePreviousFromUTF8SBCodepointDecodeNextFromUTF16SBCodepointDecodePreviousFromUTF16
SBScriptGetUnicodeTag(SBScript)introduced to return a single Unicode script tag (4-letter abbreviation) corresponding to the passed-in script, usable with HarfBuzz- Internal
Objectclass introduced for consistent memory management across all major types (SBAlgorithm,SBParagraph,SBLine, etc.) - Unified versioning implemented across all build systems using the public version header
- Support for building the library as a DLL on Windows added in both CMake and Meson
- pkg-config support added in both CMake and Meson builds
- Support for running individual test classes added (when the
STANDALONE_TESTINGmacro is defined) - Dedicated targets for each test class added in CMake and Meson, allowing execution via
ctestormeson test
Updates
SBCodepointSequencenow uses aconstbuffer (thanks @glebm)- Source tree restructured:
- Public headers moved to
Headers/SheenBidi/ - Test sources moved to
Tests/
- Public headers moved to
- Internal
Parserlibrary rewritten to more robustly parse Unicode data files - General category lookup generator improved using Unicode’s
DerivedGeneralCategory.txt SBScriptGetOpenTypeTagdata updated to match Microsoft’s OpenType script tags (as of 2024‑05‑31)SBScriptGetOpenTypeTagmarked as deprecated in favor ofSBScriptGetUnicodeTag- Support for default property values of unassigned code points improved using enhanced parsing logic
- Tests added for:
RunQueue- Script-to-tag conversion (OpenType & Unicode)
- Bracket matching with canonical equivalence