All Versions
6
Latest Version
2.4
Avg Release Cycle
179 days
Latest Release
1865 days ago

Changelog History

  • v2.4 Changes

    March 19, 2019

    ➕ Additions

    • ➕ Added support for variable fonts
    • Covered variable fonts in demo project
    • Wrote likable label in demo project

    FontFile:

    • Named Typefaces: List<Typeface> getTypefaces()

    Typeface:

    • Variation Axes: List<VariationAxis> getVariationAxes()
    • Variation Coordinates: float[] getVariationCoordinates()
    • Variation Instance: Typeface getVariationInstance(float[] coordinates)

    ShapingResult:

    • Caret Edges: FloatList getCaretEdges(boolean[] caretStops)

    ⚡️ Updates

    • ➕ Added static constructors in table classes
    • 👉 Used sheen figure for caret handling
    • ⚡️ Updated free type to version 2.10.0
  • v2.3 Changes

    December 09, 2018

    ➕ Additions

    ➕ Added @Nullable, @NonNull, @Size and @ColorInt annotations throughout the project

    ShapingEngine:

    • OpenType Features: setOpenTypeFeatures(Set<OpenTypeFeature> features), Set<OpenTypeFeature> getOpenTypeFeatures()

    Typeface:

    • Strikeout Properties: int getStrikeoutPosition(), int getStrikeoutThickness()

    @IntDef Annotations:

    • BidiClass: @Value
    • GeneralCategory: @Value
    • Script: @Value

    ⚡️ Updates

    • Implemented character measurement based on caret range distance
    • Wrote Precondition class and used it for checking parameter expectations
    • ✂ Removed custom @Sustain annotation in favour of androidx @Keep annotation
    • Replaced array with variable args for creating primitive lists
    • ⚡️ Updated SheenFigure to version 1.5

    🛠 Fixes

    • 🛠 Fixed an issue related to text becoming blank in TLabel widge
    • 🛠 Fixed backward mode glyph run rendering issues
    • 🛠 Fixed backward mode cluster clipping issues
    • 🛠 Fixed equals(Object) implementation of NameTable.Record
  • v2.2 Changes

    August 21, 2018

    ➕ Additions

    BidiClass:

    GeneralCategory:

    Script:

    CodePoint:

    • Bidi Class Property: static int getBidiClass(int codePoint)
    • General Category Property: static int getGeneralCategory(int codePoint)
    • Script Property: static int getScript(int codePoint)
    • Mirroring Property: static int getMirror(int codePoint)

    BidiAlgorithm:

    • Bidi Classes: IntList getCharBidiClasses()

    ScriptClassifier:

    • Unicode Standard: UAX #24
    • Resolved Scripts: IntList getCharScripts()
    • Resolved Runs: Iterable<ScriptRun> getScriptRuns(int charStart, int charEnd)

    GlyphRun:

    • Cluster Splitting: int getStartExtraLength(), int getEndExtraLength()

    ➕ Added support for cluster splitting in multiple spans
    ✅ Wrote an abstract class for testing IntList implementations
    ✅ Used a dedicated Android.mk file for instrumentation tests

    ⚡️ Updates

    • ↔ Integrated script analysis process of UAX #24 in typesetting
    • Made right-to-left glyph drawing with decreasing pen x value in Renderer
    • ⬇️ Reduced synthetic methods generation with package access
    • 🚀 Enabled JNI symbols stripping in release mode
    • ⬇️ Reduced property methods calling in Renderer
    • 👉 Used direct field accesses in GlyphRun
    • Shortened names of native methods with n prefix
    • 🔨 Refactored names of internal primitive collections
    • ⚡️ Updated FreeType to version 2.9.1
    • ⚡️ Updated SheenBidi to version 2.1
    • ⚡️ Updated SheenFigure to version 1.4

    🛠 Fixes

    • 🛠 Fixed invalid leading and trailing index issues in GlyphRun
    • 🛠 Fixed accidental deallocation of data in primitive raw list implementations
    • 🛠 Fixed character measurement of backward segments in typesetting
    • 🛠 Fixed cluster map copying issue in GlyphRun
    • 🛠 Fixed redundant type casting warnings in demo project
  • v2.1 Changes

    April 01, 2018

    ➕ Additions

    TypeFamily:

    • 💅 Style Matching: getTypefaceByStyle(TypeWidth, TypeWeight, TypeSlope)

    TypefaceManager:

    • Typeface Grouping: getTypeFamily(String familyName)

    TextAlignment:

    • Natural Alignment: INTRINSIC, EXTRINSIC

    GlyphRun:

    • Character Group: int getActualClusterStart(int charIndex), int getActualClusterEnd(int charIndex)
    • Glyph Group: int getLeadingGlyphIndex(int charIndex), int getTrailingGlyphIndex(int charIndex)
    • ✅ Hit Testing: float computeCharDistance(int charIndex), int computeNearestCharIndex(float distance)

    ComposedLine:

    • ✅ Hit Testing: float computeCharDistance(int charIndex), int computeNearestCharIndex(float distance)
    • Highlighting: float[] computeVisualEdges(int charStart, int charEnd)

    CompsedFrame:

    • Boundary Properties: originX, originY, width, height
    • ✅ Hit Testing: int getLineIndexForChar(int charIndex), int getLineIndexForPosition(float x, float y)
    • Highlighting: Path generateSelectionPath(int charStart, int charEnd)

    TLabel:

    • Line Properties: extraLineSpacing, lineHeightMultiplier
    • Text Properties: composedFrame, spanned, typesetter
    • ✅ Hit Testing: int hitTestPosition(float x, float y)

    ➕ Added FrameResolver class for easier text layout and measurement.

    ➕ Added support for following CharacterStyle spans without invoking updateDrawState(TextPaint) or updateMeasureState(TextPaint):

    • ForegroundColorSpan
    • AbsoluteSizeSpan
    • RelativeSizeSpan
    • ReplacementSpan
    • ScaleXSpan
    • 💅 StyleSpan
    • SubscriptSpan
    • SuperscriptSpan
    • TextAppearanceSpan
    • TypefaceSpan

    ➕ Added support for following ParagraphStyle spans:

    • AlignmentSpan
    • BulletSpan
    • LeadingMarginSpan
    • LeadingMarginSpan2
    • LineBackgroundSpan
    • LineHeightSpan
    • QuoteSpan

    ⚡️ Updates

    • Divided functionality of Typesetter into various logical classes
    • Made TypefaceSpan and TypeSizeSpan conform to MetricAffectingSpan for easier span handling
    • ⚡️ Updated FreeType to version 2.9
    • ⚡️ Updated SheenFigure to version 1.3

    🛠 Fixes

    • 🛠 Fixed NullPointerException caused by NameTable on older android versions
    • 🛠 Fixed gravity attribute of TLabel with flag format
    • Prohibited offsets and advances scaling in Renderer
    • Made accidentally publicized method createCompactLine private in Typesetter
  • v2.0 Changes

    July 30, 2017
    • Refined architecture of the library
    • ➕ Added flexible primitive collections
    • 🔦 Exposed essential SFNT tables
    • Covered more APIs in demo project
  • v1.0

    October 07, 2016