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 classTextLayoutManager.PendingChangethis class stores information about changes in vecAreaInfo which are not yet appliedprivate classTextLayoutManager.TextAreaBuilder-
Nested classes/interfaces inherited from class org.apache.fop.layoutmgr.inline.LeafNodeLayoutManager
LeafNodeLayoutManager.AreaInfo
-
-
Field Summary
Fields Modifier and Type Field Description private AlignmentContextalignmentContextprivate PositionauxiliaryPositionprivate static java.lang.StringBREAK_CHARSNon-space characters on which we can end a line.private java.util.List<TextLayoutManager.PendingChange>changeListprivate intchangeOffsetprivate FOTextfoTextprivate booleanhasChangedprivate inthyphIPDsize of the hyphen character glyph in current fontprivate booleankeepTogetherprivate MinOptMax[]letterSpaceAdjustArrayContains an array of widths to adjust for kerning.private MinOptMaxletterSpaceIPDprivate intlineEndBAPThe width to be reserved for border and padding at the end of the line.private intlineStartBAPThe width to be reserved for border and padding at the start of the line.private static org.apache.commons.logging.LogLOGlogging instanceprivate java.util.List<GlyphMapping>mappingsprivate intnextStartStart index of next TextAreaprivate int[]returnedIndicesprivate static intSOFT_HYPHEN_PENALTYprivate intspaceCharIPDsize of a space character (U+0020) glyph in current fontprivate FontspaceFontFont used for the space between words.private inttempStartprivate intthisStartprivate FOUserAgentuserAgentprivate MinOptMaxwordSpaceIPD-
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<ListElement>addALetterSpaceTo(java.util.List<ListElement> 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<ListElement>addALetterSpaceTo(java.util.List<ListElement> 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 elementsvoidaddAreas(PositionIterator posIter, LayoutContext context)Generate and add areas to parent area.private voidaddElementsForAHyphen(java.util.List baseList, int alignment, int widthIfBreakOccurs, MinOptMax widthIfNoBreakOccurs, boolean unflagged)private voidaddElementsForASpace(java.util.List baseList, int alignment, GlyphMapping mapping, int leafValue)private voidaddElementsForAWordFragment(java.util.List baseList, int alignment, GlyphMapping mapping, int leafValue)private voidaddGlyphMapping(int index, GlyphMapping mapping)private voidaddGlyphMapping(GlyphMapping mapping)private voidaddMappingAreas(GlyphMapping mapping, int wordSpaceCount, int letterSpaceCount, int firstMappingIndex, int lastMappingIndex, MinOptMax realWidth, LayoutContext context)booleanapplyChanges(java.util.List<ListElement> oldList)Tell the LM to apply the changes due to hyphenationbooleanapplyChanges(java.util.List<ListElement> 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<ListElement>getChangedKnuthElements(java.util.List<ListElement> 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.ListgetElementsForBreakingSpace(int alignment, GlyphMapping mapping, Position pos2, int p2WidthOffset, Position pos3, int p3WidthOffset, boolean skipZeroCheck)private java.util.ListgetElementsForJustifiedText(GlyphMapping mapping, Position pos2, int p2WidthOffset, Position pos3, int p3WidthOffset, boolean skipZeroCheck, int shrinkability)private GlyphMappinggetGlyphMapping(int index)java.util.List<KnuthSequence>getNextKnuthElements(LayoutContext context, int alignment)Get a sequence of KnuthElements representing the content of the node assigned to the LM.java.lang.StringgetWordChars(Position pos)Get the word chars corresponding to the given position.voidhyphenate(Position pos, HyphContext hyphContext)Tell the LM to hyphenate a wordvoidinitialize()initialize the layout manager.private KnuthBoxmakeAuxiliaryZeroWidthBox()private KnuthPenaltymakeZeroWidthPenalty(int penaltyValue)private voidprocessLeftoverGlyphMapping(int alignment, KnuthSequence sequence, GlyphMapping mapping, boolean breakOpportunityAfter)private KnuthSequenceprocessLinebreak(java.util.List returnList, KnuthSequence sequence)private GlyphMappingprocessWhitespace(int alignment, KnuthSequence sequence, boolean breakOpportunity, int level)private GlyphMappingprocessWord(int alignment, KnuthSequence sequence, GlyphMapping prevMapping, char ch, boolean breakOpportunity, boolean checkEndsWithHyphen, int level, boolean retainControls)private voidremoveGlyphMapping(int index)java.lang.StringtoString()-
Methods inherited from class org.apache.fop.layoutmgr.inline.LeafNodeLayoutManager
addChildArea, addKnuthElementsForBorderPaddingEnd, addKnuthElementsForBorderPaddingStart, get, getAllocationIPD, getChangedKnuthElements, getEffectiveArea, getParentArea, makeAlignmentContext, makeBox, 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, isFromFootnote, isRestartable, setFromFootnote, 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, isFromFootnote, isRestartable, notifyPos, reset, setFinished, setFromFootnote, 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<TextLayoutManager.PendingChange> 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:
initializein interfaceLayoutManager- Overrides:
initializein 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:
addAreasin interfaceLayoutManager- Overrides:
addAreasin 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<KnuthSequence> getNextKnuthElements(LayoutContext context, int alignment)
Get a sequence of KnuthElements representing the content of the node assigned to the LM.- Specified by:
getNextKnuthElementsin interfaceLayoutManager- Overrides:
getNextKnuthElementsin 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<ListElement> addALetterSpaceTo(java.util.List<ListElement> 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:
addALetterSpaceToin interfaceInlineLevelLayoutManager- Overrides:
addALetterSpaceToin 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<ListElement> addALetterSpaceTo(java.util.List<ListElement> 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:
addALetterSpaceToin interfaceInlineLevelLayoutManager- Overrides:
addALetterSpaceToin 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:
hyphenatein interfaceInlineLevelLayoutManager- Overrides:
hyphenatein classLeafNodeLayoutManager- Parameters:
pos- the Position referring to the wordhyphContext- the HyphContext storing hyphenation information
-
applyChanges
public boolean applyChanges(java.util.List<ListElement> oldList)
Tell the LM to apply the changes due to hyphenation- Specified by:
applyChangesin interfaceInlineLevelLayoutManager- Overrides:
applyChangesin 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<ListElement> oldList, int depth)
Tell the LM to apply the changes due to hyphenation Only TextLM has a meaningful implementation of this method- Specified by:
applyChangesin interfaceInlineLevelLayoutManager- Overrides:
applyChangesin 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<ListElement> getChangedKnuthElements(java.util.List<ListElement> 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:
getChangedKnuthElementsin interfaceLayoutManager- Overrides:
getChangedKnuthElementsin 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:
getWordCharsin interfaceInlineLevelLayoutManager- Overrides:
getWordCharsin 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:AbstractBaseLayoutManagerReturns the active change bar list.- Overrides:
getChangeBarListin classAbstractBaseLayoutManager- Returns:
- The active change bar list
-
toString
public java.lang.String toString()
- Overrides:
toStringin classAbstractLayoutManager
-
-