Package org.apache.fop.layoutmgr.inline
Class TextLayoutManager
- java.lang.Object
-
- org.apache.fop.layoutmgr.AbstractBaseLayoutManager
-
- org.apache.fop.layoutmgr.AbstractLayoutManager
-
- org.apache.fop.layoutmgr.inline.LeafNodeLayoutManager
-
- org.apache.fop.layoutmgr.inline.TextLayoutManager
-
- All Implemented Interfaces:
PercentBaseContext
,Constants
,InlineLevelLayoutManager
,LayoutManager
public class TextLayoutManager extends LeafNodeLayoutManager
LayoutManager for text (a sequence of characters) which generates one or more inline areas.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
TextLayoutManager.PendingChange
this class stores information about changes in vecAreaInfo which are not yet appliedprivate class
TextLayoutManager.TextAreaBuilder
-
Nested classes/interfaces inherited from class org.apache.fop.layoutmgr.inline.LeafNodeLayoutManager
LeafNodeLayoutManager.AreaInfo
-
-
Field Summary
Fields Modifier and Type Field Description private AlignmentContext
alignmentContext
private Position
auxiliaryPosition
private static java.lang.String
BREAK_CHARS
Non-space characters on which we can end a line.private java.util.List
changeList
private int
changeOffset
private FOText
foText
private boolean
hasChanged
private int
hyphIPD
size of the hyphen character glyph in current fontprivate boolean
keepTogether
private MinOptMax[]
letterSpaceAdjustArray
Contains an array of widths to adjust for kerning.private MinOptMax
letterSpaceIPD
private int
lineEndBAP
The width to be reserved for border and padding at the end of the line.private int
lineStartBAP
The width to be reserved for border and padding at the start of the line.private static org.apache.commons.logging.Log
LOG
logging instanceprivate java.util.List<GlyphMapping>
mappings
private int
nextStart
Start index of next TextAreaprivate int[]
returnedIndices
private static int
SOFT_HYPHEN_PENALTY
private int
spaceCharIPD
size of a space character (U+0020) glyph in current fontprivate Font
spaceFont
Font used for the space between words.private int
tempStart
private int
thisStart
private FOUserAgent
userAgent
private MinOptMax
wordSpaceIPD
-
Fields inherited from class org.apache.fop.layoutmgr.inline.LeafNodeLayoutManager
areaInfo, commonBorderPaddingBackground, curArea, log, somethingChanged
-
Fields inherited from class org.apache.fop.layoutmgr.AbstractLayoutManager
childLMiter, childLMs, curChildLM, fobjIter, parentLayoutManager
-
Fields inherited from class org.apache.fop.layoutmgr.AbstractBaseLayoutManager
fobj, generatesBlockArea, generatesReferenceArea
-
Fields inherited from interface org.apache.fop.fo.Constants
COMPOUND_COUNT, COMPOUND_MASK, COMPOUND_SHIFT, CP_BLOCK_PROGRESSION_DIRECTION, CP_CONDITIONALITY, CP_INLINE_PROGRESSION_DIRECTION, CP_LENGTH, CP_MAXIMUM, CP_MINIMUM, CP_OPTIMUM, CP_PRECEDENCE, CP_WITHIN_COLUMN, CP_WITHIN_LINE, CP_WITHIN_PAGE, EN_100, EN_200, EN_300, EN_400, EN_500, EN_600, EN_700, EN_800, EN_900, EN_ABSOLUTE, EN_ABSOLUTE_COLORMETRIC, EN_AFTER, EN_AFTER_EDGE, EN_ALL, EN_ALPHABETIC, EN_ALTERNATE, EN_ALWAYS, EN_ANY, EN_AUTO, EN_AUTO_EVEN, EN_AUTO_ODD, EN_AVOID, EN_BACKSLANT, EN_BASELINE, EN_BEFORE, EN_BEFORE_EDGE, EN_BIDI_OVERRIDE, EN_BLANK, EN_BLINK, EN_BLOCK, EN_BOLDER, EN_BOTH, EN_BOTTOM, EN_BOUNDED_IN_ONE_DIMENSION, EN_BT, EN_CAPITALIZE, EN_CAPTION, EN_CENTER, EN_CENTRAL, EN_CHARACTER_BY_CHARACTER, EN_COLLAPSE, EN_COLLAPSE_WITH_PRECEDENCE, EN_COLUMN, EN_CONDENSED, EN_CONSIDER_SHIFTS, EN_DASHED, EN_DISCARD, EN_DISREGARD_SHIFTS, EN_DOCUMENT, EN_DOTS, EN_DOTTED, EN_DOUBLE, EN_EMBED, EN_END, EN_END_ON_EVEN, EN_END_ON_ODD, EN_ERROR_IF_OVERFLOW, EN_EVEN, EN_EVEN_PAGE, EN_EXPANDED, EN_EXTRA_CONDENSED, EN_EXTRA_EXPANDED, EN_FALSE, EN_FIC, EN_FIRST, EN_FIRST_INCLUDING_CARRYOVER, EN_FIRST_STARTING, EN_FIXED, EN_FONT_HEIGHT, EN_FORCE, EN_FSWP, EN_GROOVE, EN_HANGING, EN_HIDDEN, EN_HIDE, EN_ICON, EN_IDEOGRAPHIC, EN_IGNORE, EN_IGNORE_IF_AFTER_LINEFEED, EN_IGNORE_IF_BEFORE_LINEFEED, EN_IGNORE_IF_SURROUNDING_LINEFEED, EN_INDEFINITE, EN_INDENT, EN_INHERIT, EN_INSET, EN_INSIDE, EN_INTEGER_PIXELS, EN_ITALIC, EN_JUSTIFY, EN_LARGER, EN_LAST, EN_LAST_ENDING, EN_LAST_STARTING, EN_LEAVE_SEPARATE, EN_LEFT, EN_LEWP, EN_LIGHTER, EN_LINE, EN_LINE_HEIGHT, EN_LINE_THROUGH, EN_LINK, EN_LOWERCASE, EN_LR, EN_LR_TB, EN_LSWP, EN_LTR, EN_MATHEMATICAL, EN_MAX_HEIGHT, EN_MENU, EN_MERGE, EN_MESSAGE_BOX, EN_MIDDLE, EN_NARROWER, EN_NEW, EN_NO_BLINK, EN_NO_CHANGE, EN_NO_FORCE, EN_NO_LIMIT, EN_NO_LINE_THROUGH, EN_NO_LINK, EN_NO_OVERLINE, EN_NO_UNDERLINE, EN_NO_WRAP, EN_NON_UNIFORM, EN_NONE, EN_NOREPEAT, EN_NORMAL, EN_NOT_BLANK, EN_OBLIQUE, EN_ODD, EN_ODD_PAGE, EN_ONLY, EN_OUTSET, EN_OUTSIDE, EN_OVERLINE, EN_PAGE, EN_PAGE_SEQUENCE, EN_PAGINATE, EN_PERCEPTUAL, EN_PRE, EN_PRESERVE, EN_REFERENCE_AREA, EN_RELATIVE, EN_RELATIVE_COLOMETRIC, EN_REPEAT, EN_REPEATX, EN_REPEATY, EN_REPLACE, EN_RESAMPLE_ANY_METHOD, EN_RESET_SIZE, EN_REST, EN_RETAIN, EN_RIDGE, EN_RIGHT, EN_RL, EN_RL_TB, EN_RTL, EN_RULE, EN_SATURATION, EN_SCALE_DOWN_TO_FIT, EN_SCALE_TO_FIT, EN_SCALE_UP_TO_FIT, EN_SCROLL, EN_SELECT_FIRST_FITTING, EN_SEMI_CONDENSED, EN_SEMI_EXPANDED, EN_SEPARATE, EN_SHOW, EN_SMALL_CAPS, EN_SMALL_CAPTION, EN_SMALLER, EN_SOLID, EN_SPACE, EN_START, EN_STATIC, EN_STATUS_BAR, EN_SUB, EN_SUPER, EN_SUPPRESS, EN_TABLE, EN_TABLE_FRAGMENT, EN_TB, EN_TB_LR, EN_TB_RL, EN_TEXT_AFTER_EDGE, EN_TEXT_BEFORE_EDGE, EN_TEXT_BOTTOM, EN_TEXT_TOP, EN_TOP, EN_TRADITIONAL, EN_TREAT_AS_SPACE, EN_TREAT_AS_ZERO_WIDTH_SPACE, EN_TRUE, EN_ULTRA_CONDENSED, EN_ULTRA_EXPANDED, EN_UNBOUNDED, EN_UNDERLINE, EN_UNIFORM, EN_UPPERCASE, EN_USE_FONT_METRICS, EN_USE_SCRIPT, EN_USECONTENT, EN_VISIBLE, EN_WIDER, EN_WRAP, ENUM_COUNT, FO_BASIC_LINK, FO_BIDI_OVERRIDE, FO_BLOCK, FO_BLOCK_CONTAINER, FO_BOOKMARK, FO_BOOKMARK_TITLE, FO_BOOKMARK_TREE, FO_CHANGE_BAR_BEGIN, FO_CHANGE_BAR_END, FO_CHARACTER, FO_COLOR_PROFILE, FO_CONDITIONAL_PAGE_MASTER_REFERENCE, FO_DECLARATIONS, FO_EXTERNAL_GRAPHIC, FO_FLOAT, FO_FLOW, FO_FLOW_ASSIGNMENT, FO_FLOW_MAP, FO_FLOW_NAME_SPECIFIER, FO_FLOW_SOURCE_LIST, FO_FLOW_TARGET_LIST, FO_FOLIO_PREFIX, FO_FOLIO_SUFFIX, FO_FOOTNOTE, FO_FOOTNOTE_BODY, FO_INDEX_KEY_REFERENCE, FO_INDEX_PAGE_CITATION_LIST, FO_INDEX_PAGE_CITATION_LIST_SEPARATOR, FO_INDEX_PAGE_CITATION_RANGE_SEPARATOR, FO_INDEX_PAGE_NUMBER_PREFIX, FO_INDEX_PAGE_NUMBER_SUFFIX, FO_INDEX_RANGE_BEGIN, FO_INDEX_RANGE_END, FO_INITIAL_PROPERTY_SET, FO_INLINE, FO_INLINE_CONTAINER, FO_INSTREAM_FOREIGN_OBJECT, FO_LAYOUT_MASTER_SET, FO_LEADER, FO_LIST_BLOCK, FO_LIST_ITEM, FO_LIST_ITEM_BODY, FO_LIST_ITEM_LABEL, FO_MARKER, FO_MULTI_CASE, FO_MULTI_PROPERTIES, FO_MULTI_PROPERTY_SET, FO_MULTI_SWITCH, FO_MULTI_TOGGLE, FO_PAGE_NUMBER, FO_PAGE_NUMBER_CITATION, FO_PAGE_NUMBER_CITATION_LAST, FO_PAGE_SEQUENCE, FO_PAGE_SEQUENCE_MASTER, FO_PAGE_SEQUENCE_WRAPPER, FO_REGION_AFTER, FO_REGION_BEFORE, FO_REGION_BODY, FO_REGION_END, FO_REGION_NAME_SPECIFIER, FO_REGION_START, FO_REPEATABLE_PAGE_MASTER_ALTERNATIVES, FO_REPEATABLE_PAGE_MASTER_REFERENCE, FO_RETRIEVE_MARKER, FO_RETRIEVE_TABLE_MARKER, FO_ROOT, FO_SCALING_VALUE_CITATION, FO_SIMPLE_PAGE_MASTER, FO_SINGLE_PAGE_MASTER_REFERENCE, FO_STATIC_CONTENT, FO_TABLE, FO_TABLE_AND_CAPTION, FO_TABLE_BODY, FO_TABLE_CAPTION, FO_TABLE_CELL, FO_TABLE_COLUMN, FO_TABLE_FOOTER, FO_TABLE_HEADER, FO_TABLE_ROW, FO_TITLE, FO_UNKNOWN_NODE, FO_WRAPPER, FRM_OBJ_COUNT, NOT_SET, PR_ABSOLUTE_POSITION, PR_ACTIVE_STATE, PR_ALIGNMENT_ADJUST, PR_ALIGNMENT_BASELINE, PR_AUTO_RESTORE, PR_AZIMUTH, PR_BACKGROUND, PR_BACKGROUND_ATTACHMENT, PR_BACKGROUND_COLOR, PR_BACKGROUND_IMAGE, PR_BACKGROUND_POSITION, PR_BACKGROUND_POSITION_HORIZONTAL, PR_BACKGROUND_POSITION_VERTICAL, PR_BACKGROUND_REPEAT, PR_BASELINE_SHIFT, PR_BLANK_OR_NOT_BLANK, PR_BLOCK_PROGRESSION_DIMENSION, PR_BORDER, PR_BORDER_AFTER_COLOR, PR_BORDER_AFTER_PRECEDENCE, PR_BORDER_AFTER_STYLE, PR_BORDER_AFTER_WIDTH, PR_BORDER_BEFORE_COLOR, PR_BORDER_BEFORE_PRECEDENCE, PR_BORDER_BEFORE_STYLE, PR_BORDER_BEFORE_WIDTH, PR_BORDER_BOTTOM, PR_BORDER_BOTTOM_COLOR, PR_BORDER_BOTTOM_STYLE, PR_BORDER_BOTTOM_WIDTH, PR_BORDER_COLLAPSE, PR_BORDER_COLOR, PR_BORDER_END_COLOR, PR_BORDER_END_PRECEDENCE, PR_BORDER_END_STYLE, PR_BORDER_END_WIDTH, PR_BORDER_LEFT, PR_BORDER_LEFT_COLOR, PR_BORDER_LEFT_STYLE, PR_BORDER_LEFT_WIDTH, PR_BORDER_RIGHT, PR_BORDER_RIGHT_COLOR, PR_BORDER_RIGHT_STYLE, PR_BORDER_RIGHT_WIDTH, PR_BORDER_SEPARATION, PR_BORDER_SPACING, PR_BORDER_START_COLOR, PR_BORDER_START_PRECEDENCE, PR_BORDER_START_STYLE, PR_BORDER_START_WIDTH, PR_BORDER_STYLE, PR_BORDER_TOP, PR_BORDER_TOP_COLOR, PR_BORDER_TOP_STYLE, PR_BORDER_TOP_WIDTH, PR_BORDER_WIDTH, PR_BOTTOM, PR_BREAK_AFTER, PR_BREAK_BEFORE, PR_CAPTION_SIDE, PR_CASE_NAME, PR_CASE_TITLE, PR_CHANGE_BAR_CLASS, PR_CHANGE_BAR_COLOR, PR_CHANGE_BAR_OFFSET, PR_CHANGE_BAR_PLACEMENT, PR_CHANGE_BAR_STYLE, PR_CHANGE_BAR_WIDTH, PR_CHARACTER, PR_CLEAR, PR_CLIP, PR_COLOR, PR_COLOR_PROFILE_NAME, PR_COLUMN_COUNT, PR_COLUMN_GAP, PR_COLUMN_NUMBER, PR_COLUMN_WIDTH, PR_CONTENT_HEIGHT, PR_CONTENT_TYPE, PR_CONTENT_WIDTH, PR_COUNTRY, PR_CUE, PR_CUE_AFTER, PR_CUE_BEFORE, PR_DESTINATION_PLACEMENT_OFFSET, PR_DIRECTION, PR_DISPLAY_ALIGN, PR_DOMINANT_BASELINE, PR_ELEVATION, PR_EMPTY_CELLS, PR_END_INDENT, PR_ENDS_ROW, PR_EXTENT, PR_EXTERNAL_DESTINATION, PR_FLOAT, PR_FLOW_MAP_NAME, PR_FLOW_MAP_REFERENCE, PR_FLOW_NAME, PR_FLOW_NAME_REFERENCE, PR_FONT, PR_FONT_FAMILY, PR_FONT_SELECTION_STRATEGY, PR_FONT_SIZE, PR_FONT_SIZE_ADJUST, PR_FONT_STRETCH, PR_FONT_STYLE, PR_FONT_VARIANT, PR_FONT_WEIGHT, PR_FORCE_PAGE_COUNT, PR_FORMAT, PR_GLYPH_ORIENTATION_HORIZONTAL, PR_GLYPH_ORIENTATION_VERTICAL, PR_GROUPING_SEPARATOR, PR_GROUPING_SIZE, PR_HEIGHT, PR_HYPHENATE, PR_HYPHENATION_CHARACTER, PR_HYPHENATION_KEEP, PR_HYPHENATION_LADDER_COUNT, PR_HYPHENATION_PUSH_CHARACTER_COUNT, PR_HYPHENATION_REMAIN_CHARACTER_COUNT, PR_ID, PR_INDEX_CLASS, PR_INDEX_KEY, PR_INDICATE_DESTINATION, PR_INITIAL_PAGE_NUMBER, PR_INLINE_PROGRESSION_DIMENSION, PR_INTERNAL_DESTINATION, PR_INTRINSIC_SCALE_VALUE, PR_INTRUSION_DISPLACE, PR_KEEP_TOGETHER, PR_KEEP_WITH_NEXT, PR_KEEP_WITH_PREVIOUS, PR_LANGUAGE, PR_LAST_LINE_END_INDENT, PR_LEADER_ALIGNMENT, PR_LEADER_LENGTH, PR_LEADER_PATTERN, PR_LEADER_PATTERN_WIDTH, PR_LEFT, PR_LETTER_SPACING, PR_LETTER_VALUE, PR_LINE_HEIGHT, PR_LINE_HEIGHT_SHIFT_ADJUSTMENT, PR_LINE_STACKING_STRATEGY, PR_LINEFEED_TREATMENT, PR_MARGIN, PR_MARGIN_BOTTOM, PR_MARGIN_LEFT, PR_MARGIN_RIGHT, PR_MARGIN_TOP, PR_MARKER_CLASS_NAME, PR_MASTER_NAME, PR_MASTER_REFERENCE, PR_MAX_HEIGHT, PR_MAX_WIDTH, PR_MAXIMUM_REPEATS, PR_MEDIA_USAGE, PR_MERGE_PAGES_ACROSS_INDEX_KEY_REFERENCES, PR_MERGE_RANGES_ACROSS_INDEX_KEY_REFERENCES, PR_MERGE_SEQUENTIAL_PAGE_NUMBERS, PR_MIN_HEIGHT, PR_MIN_WIDTH, PR_NUMBER_COLUMNS_REPEATED, PR_NUMBER_COLUMNS_SPANNED, PR_NUMBER_ROWS_SPANNED, PR_ODD_OR_EVEN, PR_ORPHANS, PR_OVERFLOW, PR_PADDING, PR_PADDING_AFTER, PR_PADDING_BEFORE, PR_PADDING_BOTTOM, PR_PADDING_END, PR_PADDING_LEFT, PR_PADDING_RIGHT, PR_PADDING_START, PR_PADDING_TOP, PR_PAGE_BREAK_AFTER, PR_PAGE_BREAK_BEFORE, PR_PAGE_BREAK_INSIDE, PR_PAGE_CITATION_STRATEGY, PR_PAGE_HEIGHT, PR_PAGE_NUMBER_TREATMENT, PR_PAGE_POSITION, PR_PAGE_WIDTH, PR_PAUSE, PR_PAUSE_AFTER, PR_PAUSE_BEFORE, PR_PITCH, PR_PITCH_RANGE, PR_PLAY_DURING, PR_POSITION, PR_PRECEDENCE, PR_PROVISIONAL_DISTANCE_BETWEEN_STARTS, PR_PROVISIONAL_LABEL_SEPARATION, PR_REF_ID, PR_REF_INDEX_KEY, PR_REFERENCE_ORIENTATION, PR_REGION_NAME, PR_REGION_NAME_REFERENCE, PR_RELATIVE_ALIGN, PR_RELATIVE_POSITION, PR_RENDERING_INTENT, PR_RETRIEVE_BOUNDARY, PR_RETRIEVE_BOUNDARY_WITHIN_TABLE, PR_RETRIEVE_CLASS_NAME, PR_RETRIEVE_POSITION, PR_RETRIEVE_POSITION_WITHIN_TABLE, PR_RICHNESS, PR_RIGHT, PR_ROLE, PR_RULE_STYLE, PR_RULE_THICKNESS, PR_SCALING, PR_SCALING_METHOD, PR_SCORE_SPACES, PR_SCRIPT, PR_SHOW_DESTINATION, PR_SIZE, PR_SOURCE_DOCUMENT, PR_SPACE_AFTER, PR_SPACE_BEFORE, PR_SPACE_END, PR_SPACE_START, PR_SPAN, PR_SPEAK, PR_SPEAK_HEADER, PR_SPEAK_NUMERAL, PR_SPEAK_PUNCTUATION, PR_SPEECH_RATE, PR_SRC, PR_START_INDENT, PR_STARTING_STATE, PR_STARTS_ROW, PR_STRESS, PR_SUPPRESS_AT_LINE_BREAK, PR_SWITCH_TO, PR_TABLE_LAYOUT, PR_TABLE_OMIT_FOOTER_AT_BREAK, PR_TABLE_OMIT_HEADER_AT_BREAK, PR_TARGET_PRESENTATION_CONTEXT, PR_TARGET_PROCESSING_CONTEXT, PR_TARGET_STYLESHEET, PR_TEXT_ALIGN, PR_TEXT_ALIGN_LAST, PR_TEXT_ALTITUDE, PR_TEXT_DECORATION, PR_TEXT_DEPTH, PR_TEXT_INDENT, PR_TEXT_SHADOW, PR_TEXT_TRANSFORM, PR_TOP, PR_TREAT_AS_WORD_SPACE, PR_UNICODE_BIDI, PR_VERTICAL_ALIGN, PR_VISIBILITY, PR_VOICE_FAMILY, PR_VOLUME, PR_WHITE_SPACE, PR_WHITE_SPACE_COLLAPSE, PR_WHITE_SPACE_TREATMENT, PR_WIDOWS, PR_WIDTH, PR_WORD_SPACING, PR_WRAP_OPTION, PR_WRITING_MODE, PR_X_ABBREVIATION, PR_X_ALT_TEXT, PR_X_AUTO_TOGGLE, PR_X_BACKGROUND_IMAGE_HEIGHT, PR_X_BACKGROUND_IMAGE_WIDTH, PR_X_BORDER_AFTER_END_RADIUS, PR_X_BORDER_AFTER_RADIUS_END, PR_X_BORDER_AFTER_RADIUS_START, PR_X_BORDER_AFTER_START_RADIUS, PR_X_BORDER_BEFORE_END_RADIUS, PR_X_BORDER_BEFORE_RADIUS_END, PR_X_BORDER_BEFORE_RADIUS_START, PR_X_BORDER_BEFORE_START_RADIUS, PR_X_BORDER_END_RADIUS_AFTER, PR_X_BORDER_END_RADIUS_BEFORE, PR_X_BORDER_RADIUS, PR_X_BORDER_START_RADIUS_AFTER, PR_X_BORDER_START_RADIUS_BEFORE, PR_X_DISABLE_COLUMN_BALANCING, PR_X_HEADER_COLUMN, PR_X_LAYER, PR_X_NUMBER_CONVERSION_FEATURES, PR_X_ORPHAN_CONTENT_LIMIT, PR_X_WIDOW_CONTENT_LIMIT, PR_X_XML_BASE, PR_XML_LANG, PR_Z_INDEX, PROPERTY_COUNT, PROPERTY_MASK
-
-
Constructor Summary
Constructors Constructor Description TextLayoutManager(FOText node, FOUserAgent userAgent)
Create a Text layout manager.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.List
addALetterSpaceTo(java.util.List oldList)
Tell the LM to modify its data, adding a letter space to the word fragment represented by the given elements, and returning the corrected elementsjava.util.List
addALetterSpaceTo(java.util.List oldList, int depth)
Tell the LM to modify its data, adding a letter space to the word fragment represented by the given elements, and returning the corrected elementsvoid
addAreas(PositionIterator posIter, LayoutContext context)
Generate and add areas to parent area.private void
addElementsForAHyphen(java.util.List baseList, int alignment, int widthIfBreakOccurs, MinOptMax widthIfNoBreakOccurs, boolean unflagged)
private void
addElementsForASpace(java.util.List baseList, int alignment, GlyphMapping mapping, int leafValue)
private void
addElementsForAWordFragment(java.util.List baseList, int alignment, GlyphMapping mapping, int leafValue)
private void
addGlyphMapping(int index, GlyphMapping mapping)
private void
addGlyphMapping(GlyphMapping mapping)
private void
addMappingAreas(GlyphMapping mapping, int wordSpaceCount, int letterSpaceCount, int firstMappingIndex, int lastMappingIndex, MinOptMax realWidth, LayoutContext context)
boolean
applyChanges(java.util.List oldList)
Tell the LM to apply the changes due to hyphenationboolean
applyChanges(java.util.List oldList, int depth)
Tell the LM to apply the changes due to hyphenationjava.util.List<ChangeBar>
getChangeBarList()
Returns the active change bar list.java.util.List
getChangedKnuthElements(java.util.List oldList, int alignment)
Get a sequence of KnuthElements representing the content of the node assigned to the LM, after changes have been applied In the context of line breaking, this method is called after hyphenation has been performed, in order to receive the sequence of elements representing the text together with all possible hyphenation points.private java.util.List
getElementsForBreakingSpace(int alignment, GlyphMapping mapping, Position pos2, int p2WidthOffset, Position pos3, int p3WidthOffset, boolean skipZeroCheck)
private java.util.List
getElementsForJustifiedText(GlyphMapping mapping, Position pos2, int p2WidthOffset, Position pos3, int p3WidthOffset, boolean skipZeroCheck, int shrinkability)
private GlyphMapping
getGlyphMapping(int index)
java.util.List
getNextKnuthElements(LayoutContext context, int alignment)
Get a sequence of KnuthElements representing the content of the node assigned to the LM.java.lang.String
getWordChars(Position pos)
Get the word chars corresponding to the given position.void
hyphenate(Position pos, HyphContext hyphContext)
Tell the LM to hyphenate a wordvoid
initialize()
initialize the layout manager.private KnuthBox
makeAuxiliaryZeroWidthBox()
private KnuthPenalty
makeZeroWidthPenalty(int penaltyValue)
private void
processLeftoverGlyphMapping(int alignment, KnuthSequence sequence, GlyphMapping mapping, boolean breakOpportunityAfter)
private KnuthSequence
processLinebreak(java.util.List returnList, KnuthSequence sequence)
private GlyphMapping
processWhitespace(int alignment, KnuthSequence sequence, boolean breakOpportunity, int level)
private GlyphMapping
processWord(int alignment, KnuthSequence sequence, GlyphMapping prevMapping, char ch, boolean breakOpportunity, boolean checkEndsWithHyphen, int level, boolean retainControls)
private void
removeGlyphMapping(int index)
java.lang.String
toString()
-
Methods inherited from class org.apache.fop.layoutmgr.inline.LeafNodeLayoutManager
addChildArea, addKnuthElementsForBorderPaddingEnd, addKnuthElementsForBorderPaddingStart, get, getAllocationIPD, getChangedKnuthElements, getEffectiveArea, getParentArea, makeAlignmentContext, offsetArea, resolved, setCommonBorderPaddingBackground, setCurrentArea, widthAdjustArea
-
Methods inherited from class org.apache.fop.layoutmgr.AbstractLayoutManager
addChildLM, addChildLMs, addId, checkEndOfLayout, createChildLMs, createNextChildLMs, getBaselineOffset, getChildLM, getChildLMs, getCurrentPage, getCurrentPV, getParent, getPSLM, handlingFloat, hasLineAreaDescendant, hasNextChildLM, isFinished, isFirst, isLast, newNoLineAreaDescendantException, notifyEndOfLayout, notifyPos, possiblyRegisterMarkersForTables, preserveChildrenAtEndOfLayout, recreateChildrenLMs, registerMarkers, reset, setCurrentChildLM, setFinished, setParent, transferExtensionAttachments, transferExtensions, transferForeignAttributes
-
Methods inherited from class org.apache.fop.layoutmgr.AbstractBaseLayoutManager
getAncestorBlockAreaBPD, getAncestorBlockAreaIPD, getBaseLength, getContentAreaBPD, getContentAreaIPD, getFObj, getGeneratesBlockArea, getGeneratesLineArea, getGeneratesReferenceArea, getNextKnuthElements, getParentAreaBPD, getParentAreaIPD, getReferenceAreaBPD, getReferenceAreaIPD, isRestartable, setGeneratesBlockArea, setGeneratesReferenceArea
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.apache.fop.layoutmgr.LayoutManager
addChildLM, addChildLMs, createNextChildLMs, getBaselineOffset, getChildLMs, getContentAreaBPD, getContentAreaIPD, getFObj, getGeneratesBlockArea, getGeneratesLineArea, getGeneratesReferenceArea, getNextKnuthElements, getParent, getPSLM, hasLineAreaDescendant, isFinished, isRestartable, notifyPos, reset, setFinished, setParent
-
Methods inherited from interface org.apache.fop.datatypes.PercentBaseContext
getBaseLength
-
-
-
-
Field Detail
-
SOFT_HYPHEN_PENALTY
private static final int SOFT_HYPHEN_PENALTY
- See Also:
- Constant Field Values
-
LOG
private static final org.apache.commons.logging.Log LOG
logging instance
-
mappings
private final java.util.List<GlyphMapping> mappings
-
BREAK_CHARS
private static final java.lang.String BREAK_CHARS
Non-space characters on which we can end a line.- See Also:
- Constant Field Values
-
foText
private final FOText foText
-
letterSpaceAdjustArray
private final MinOptMax[] letterSpaceAdjustArray
Contains an array of widths to adjust for kerning. The first entry can be used to influence the start position of the first letter. The entry i+1 defines the cursor advancement after the character i. A null entry means no special advancement.
-
spaceFont
private Font spaceFont
Font used for the space between words.
-
nextStart
private int nextStart
Start index of next TextArea
-
spaceCharIPD
private int spaceCharIPD
size of a space character (U+0020) glyph in current font
-
wordSpaceIPD
private MinOptMax wordSpaceIPD
-
letterSpaceIPD
private MinOptMax letterSpaceIPD
-
hyphIPD
private int hyphIPD
size of the hyphen character glyph in current font
-
hasChanged
private boolean hasChanged
-
returnedIndices
private int[] returnedIndices
-
changeOffset
private int changeOffset
-
thisStart
private int thisStart
-
tempStart
private int tempStart
-
changeList
private java.util.List changeList
-
alignmentContext
private AlignmentContext alignmentContext
-
lineStartBAP
private int lineStartBAP
The width to be reserved for border and padding at the start of the line.
-
lineEndBAP
private int lineEndBAP
The width to be reserved for border and padding at the end of the line.
-
keepTogether
private boolean keepTogether
-
auxiliaryPosition
private final Position auxiliaryPosition
-
userAgent
private FOUserAgent userAgent
-
-
Constructor Detail
-
TextLayoutManager
public TextLayoutManager(FOText node, FOUserAgent userAgent)
Create a Text layout manager.- Parameters:
node
- The FOText object to be rendered
-
-
Method Detail
-
makeZeroWidthPenalty
private KnuthPenalty makeZeroWidthPenalty(int penaltyValue)
-
makeAuxiliaryZeroWidthBox
private KnuthBox makeAuxiliaryZeroWidthBox()
-
initialize
public void initialize()
initialize the layout manager. Allows each layout manager to calculate often used values.- Specified by:
initialize
in interfaceLayoutManager
- Overrides:
initialize
in classAbstractLayoutManager
-
addAreas
public void addAreas(PositionIterator posIter, LayoutContext context)
Generate and add areas to parent area. This can either generate an area for each TextArea and each space, or an area containing all text with a parameter controlling the size of the word space. The latter is most efficient for PDF generation. Set size of each area.- Specified by:
addAreas
in interfaceLayoutManager
- Overrides:
addAreas
in classLeafNodeLayoutManager
- Parameters:
posIter
- Iterator over Position information returned by this LayoutManager.context
- LayoutContext for adjustments
-
addMappingAreas
private void addMappingAreas(GlyphMapping mapping, int wordSpaceCount, int letterSpaceCount, int firstMappingIndex, int lastMappingIndex, MinOptMax realWidth, LayoutContext context)
-
addGlyphMapping
private void addGlyphMapping(GlyphMapping mapping)
-
addGlyphMapping
private void addGlyphMapping(int index, GlyphMapping mapping)
-
removeGlyphMapping
private void removeGlyphMapping(int index)
-
getGlyphMapping
private GlyphMapping getGlyphMapping(int index)
-
getNextKnuthElements
public java.util.List getNextKnuthElements(LayoutContext context, int alignment)
Get a sequence of KnuthElements representing the content of the node assigned to the LM.- Specified by:
getNextKnuthElements
in interfaceLayoutManager
- Overrides:
getNextKnuthElements
in classLeafNodeLayoutManager
- Parameters:
context
- the LayoutContext used to store layout informationalignment
- the desired text alignment- Returns:
- the list of KnuthElements
-
processLinebreak
private KnuthSequence processLinebreak(java.util.List returnList, KnuthSequence sequence)
-
processLeftoverGlyphMapping
private void processLeftoverGlyphMapping(int alignment, KnuthSequence sequence, GlyphMapping mapping, boolean breakOpportunityAfter)
-
processWhitespace
private GlyphMapping processWhitespace(int alignment, KnuthSequence sequence, boolean breakOpportunity, int level)
-
processWord
private GlyphMapping processWord(int alignment, KnuthSequence sequence, GlyphMapping prevMapping, char ch, boolean breakOpportunity, boolean checkEndsWithHyphen, int level, boolean retainControls)
-
addALetterSpaceTo
public java.util.List addALetterSpaceTo(java.util.List oldList)
Tell the LM to modify its data, adding a letter space to the word fragment represented by the given elements, and returning the corrected elements- Specified by:
addALetterSpaceTo
in interfaceInlineLevelLayoutManager
- Overrides:
addALetterSpaceTo
in classLeafNodeLayoutManager
- Parameters:
oldList
- the elements which must be given one more letter space- Returns:
- the new elements replacing the old ones
-
addALetterSpaceTo
public java.util.List addALetterSpaceTo(java.util.List oldList, int depth)
Tell the LM to modify its data, adding a letter space to the word fragment represented by the given elements, and returning the corrected elements Only TextLM has a meaningful implementation of this method- Specified by:
addALetterSpaceTo
in interfaceInlineLevelLayoutManager
- Overrides:
addALetterSpaceTo
in classLeafNodeLayoutManager
- Parameters:
oldList
- the elements which must be given one more letter spacedepth
- the depth at which the Positions for this LM in oldList are found- Returns:
- the new elements replacing the old ones
-
hyphenate
public void hyphenate(Position pos, HyphContext hyphContext)
Tell the LM to hyphenate a word- Specified by:
hyphenate
in interfaceInlineLevelLayoutManager
- Overrides:
hyphenate
in classLeafNodeLayoutManager
- Parameters:
pos
- the Position referring to the wordhyphContext
- the HyphContext storing hyphenation information
-
applyChanges
public boolean applyChanges(java.util.List oldList)
Tell the LM to apply the changes due to hyphenation- Specified by:
applyChanges
in interfaceInlineLevelLayoutManager
- Overrides:
applyChanges
in classLeafNodeLayoutManager
- Parameters:
oldList
- the list of the old elements the changes refer to- Returns:
- true if the LM had to change its data, false otherwise
-
applyChanges
public boolean applyChanges(java.util.List oldList, int depth)
Tell the LM to apply the changes due to hyphenation Only TextLM has a meaningful implementation of this method- Specified by:
applyChanges
in interfaceInlineLevelLayoutManager
- Overrides:
applyChanges
in classLeafNodeLayoutManager
- Parameters:
oldList
- the list of the old elements the changes refer todepth
- the depth at which the Positions for this LM in oldList are found- Returns:
- true if the LM had to change its data, false otherwise
-
getChangedKnuthElements
public java.util.List getChangedKnuthElements(java.util.List oldList, int alignment)
Get a sequence of KnuthElements representing the content of the node assigned to the LM, after changes have been applied In the context of line breaking, this method is called after hyphenation has been performed, in order to receive the sequence of elements representing the text together with all possible hyphenation points. For example, if the text "representation" originates a single box element when getNextKnuthElements() is called, it will be now split in syllables (rep-re-sen-ta-tion) each one originating a box and divided by additional elements allowing a line break. In the context of page breaking, this method is called only if the pages need to be "vertically justified" modifying (also) the quantity of lines created by the paragraphs, and after a first page breaking has been performed. According to the result of the first page breaking, each paragraph now knows how many lines it must create (among the existing layout possibilities) and has to create a sequence of elements representing this layout; in particular, each box, representing a line, will contain a LineBreakPositions that will be used in the addAreas() phase. LMs having children look at the old list of elements in order to know which ones they must get the new elements from, as break conditions of preserved linefeeds can divide children into smaller groups (page sequences or paragraphs). LMs having no children can simply return the old elements if they have nothing to change. Inline LMs need to know the text alignment because it affects the elements representing feasible breaks between syllables.- Specified by:
getChangedKnuthElements
in interfaceLayoutManager
- Overrides:
getChangedKnuthElements
in classLeafNodeLayoutManager
- Parameters:
oldList
- the elements to replacealignment
- the desired text alignment- Returns:
- the updated list of KnuthElements
-
getWordChars
public java.lang.String getWordChars(Position pos)
Get the word chars corresponding to the given position.- Specified by:
getWordChars
in interfaceInlineLevelLayoutManager
- Overrides:
getWordChars
in classLeafNodeLayoutManager
- Parameters:
pos
- the position referring to the needed word chars.- Returns:
- the word chars
-
addElementsForASpace
private void addElementsForASpace(java.util.List baseList, int alignment, GlyphMapping mapping, int leafValue)
-
getElementsForBreakingSpace
private java.util.List getElementsForBreakingSpace(int alignment, GlyphMapping mapping, Position pos2, int p2WidthOffset, Position pos3, int p3WidthOffset, boolean skipZeroCheck)
-
getElementsForJustifiedText
private java.util.List getElementsForJustifiedText(GlyphMapping mapping, Position pos2, int p2WidthOffset, Position pos3, int p3WidthOffset, boolean skipZeroCheck, int shrinkability)
-
addElementsForAWordFragment
private void addElementsForAWordFragment(java.util.List baseList, int alignment, GlyphMapping mapping, int leafValue)
-
addElementsForAHyphen
private void addElementsForAHyphen(java.util.List baseList, int alignment, int widthIfBreakOccurs, MinOptMax widthIfNoBreakOccurs, boolean unflagged)
-
getChangeBarList
public java.util.List<ChangeBar> getChangeBarList()
Description copied from class:AbstractBaseLayoutManager
Returns the active change bar list.- Overrides:
getChangeBarList
in classAbstractBaseLayoutManager
- Returns:
- The active change bar list
-
toString
public java.lang.String toString()
- Overrides:
toString
in classAbstractLayoutManager
-
-