Package com.openhtmltopdf.layout
Class Breaker
- java.lang.Object
-
- com.openhtmltopdf.layout.Breaker
-
public class Breaker extends java.lang.Object
A utility class that scans the text of a single inline box, looking for the next break point.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
Breaker.AppBreakOpportunity
static class
Breaker.BreakTextResult
private static class
Breaker.CharacterBreakerSupplier
private static class
Breaker.LineBreakerSupplier
static interface
Breaker.TextBreakerSupplier
-
Field Summary
Fields Modifier and Type Field Description static char
SOFT_HYPHEN
static Breaker.TextBreakerSupplier
STANDARD_CHARACTER_BREAKER
static Breaker.TextBreakerSupplier
STANDARD_LINE_BREAKER
-
Constructor Summary
Constructors Constructor Description Breaker()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static void
breakFirstLetter(LayoutContext c, LineBreakContext context, int avail, CalculatedStyle style)
static Breaker.BreakTextResult
breakText(LayoutContext c, LineBreakContext context, int avail, CalculatedStyle style, boolean tryToBreakAnywhere, int lineWidth, boolean forceOutput)
(package private) static LineBreakContext.LineBreakResult
doBreakCharacters(java.lang.String currentString, FSTextBreaker lineIterator, FSTextBreaker charIterator, LineBreakContext context, int avail, float letterSpacing, java.util.function.ToIntFunction<java.lang.String> measurer)
Breaks at most one word (until the next word break) going character by character to see what will fit in.private static LineBreakContext.LineBreakResult
doBreakText(LayoutContext c, LineBreakContext context, int avail, CalculatedStyle style, boolean tryToBreakAnywhere)
static LineBreakContext.LineBreakResult
doBreakText(LayoutContext c, LineBreakContext context, int avail, CalculatedStyle style, Breaker.TextBreakerSupplier lineBreaker)
(package private) static LineBreakContext.LineBreakResult
doBreakTextWords(java.lang.String currentString, LineBreakContext context, int avail, FSTextBreaker iterator, float letterSpacing, java.util.function.ToIntFunction<java.lang.String> measurer)
static FSTextBreaker
getCharacterBreakStream(java.lang.String currentString, SharedContext sharedContext)
private static int
getFirstLetterEnd(java.lang.String text, int start)
static FSTextBreaker
getLineBreakStream(java.lang.String s, SharedContext shared)
static int
getTextWidthWithLetterSpacing(CssContext c, FSFont font, java.lang.String text, float letterSpacing)
Gets the width of a string with letter spacing factored in.private static Breaker.BreakTextResult
toBreakTextResult(LineBreakContext.LineBreakResult res)
Converts a LineBreakResult returned from doBreakText in word-wrapping mode to a BreakTextResult.
-
-
-
Field Detail
-
SOFT_HYPHEN
public static final char SOFT_HYPHEN
- See Also:
- Constant Field Values
-
STANDARD_CHARACTER_BREAKER
public static final Breaker.TextBreakerSupplier STANDARD_CHARACTER_BREAKER
-
STANDARD_LINE_BREAKER
public static final Breaker.TextBreakerSupplier STANDARD_LINE_BREAKER
-
-
Method Detail
-
breakFirstLetter
public static void breakFirstLetter(LayoutContext c, LineBreakContext context, int avail, CalculatedStyle style)
-
getFirstLetterEnd
private static int getFirstLetterEnd(java.lang.String text, int start)
-
breakText
public static Breaker.BreakTextResult breakText(LayoutContext c, LineBreakContext context, int avail, CalculatedStyle style, boolean tryToBreakAnywhere, int lineWidth, boolean forceOutput)
-
toBreakTextResult
private static Breaker.BreakTextResult toBreakTextResult(LineBreakContext.LineBreakResult res)
Converts a LineBreakResult returned from doBreakText in word-wrapping mode to a BreakTextResult. Throws a runtime exception if unexpected result found.
-
doBreakText
private static LineBreakContext.LineBreakResult doBreakText(LayoutContext c, LineBreakContext context, int avail, CalculatedStyle style, boolean tryToBreakAnywhere)
-
doBreakCharacters
static LineBreakContext.LineBreakResult doBreakCharacters(java.lang.String currentString, FSTextBreaker lineIterator, FSTextBreaker charIterator, LineBreakContext context, int avail, float letterSpacing, java.util.function.ToIntFunction<java.lang.String> measurer)
Breaks at most one word (until the next word break) going character by character to see what will fit in.
-
doBreakText
public static LineBreakContext.LineBreakResult doBreakText(LayoutContext c, LineBreakContext context, int avail, CalculatedStyle style, Breaker.TextBreakerSupplier lineBreaker)
-
doBreakTextWords
static LineBreakContext.LineBreakResult doBreakTextWords(java.lang.String currentString, LineBreakContext context, int avail, FSTextBreaker iterator, float letterSpacing, java.util.function.ToIntFunction<java.lang.String> measurer)
-
getCharacterBreakStream
public static FSTextBreaker getCharacterBreakStream(java.lang.String currentString, SharedContext sharedContext)
-
getLineBreakStream
public static FSTextBreaker getLineBreakStream(java.lang.String s, SharedContext shared)
-
getTextWidthWithLetterSpacing
public static int getTextWidthWithLetterSpacing(CssContext c, FSFont font, java.lang.String text, float letterSpacing)
Gets the width of a string with letter spacing factored in. Favor this method over using the text renderer directly.
-
-