int lineHeight = ( (PDFBlockStackingLM) parent ).getLineHeight( ); if(lineHeight>0) {  child.setPosition( child.getX( ), spacing/2 + child.getY( ) ); }
	protected void align( )	{		if ( root == null )		{			return;		}		assert ( parent instanceof PDFBlockStackingLM );		String align = ( (PDFBlockStackingLM) parent ).getTextAlign( );		// single line		if ( ( CSSConstants.CSS_RIGHT_VALUE.equalsIgnoreCase( align ) || CSSConstants.CSS_CENTER_VALUE				.equalsIgnoreCase( align ) ) )		{			int spacing = root.getContentWidth( ) - getCurrentIP( );			Iterator iter = root.getChildren( );			while ( iter.hasNext( ) )			{				AbstractArea area = (AbstractArea) iter.next( );				if ( CSSConstants.CSS_RIGHT_VALUE.equalsIgnoreCase( align ) )				{					area.setAllocatedPosition( spacing + area.getAllocatedX( ),							area.getAllocatedY( ) );				}				else if ( CSSConstants.CSS_CENTER_VALUE						.equalsIgnoreCase( align ) )				{					area.setAllocatedPosition( spacing / 2							+ area.getAllocatedX( ), area.getAllocatedY( ) );				}			}		}		// FIXME to implement		// implement vertical alignment, current only support top, bottom and		// center		// reslove used value of height		Iterator iter = root.getChildren( );		int height = root.getHeight( );		// vertical alignment		while ( iter.hasNext( ) )		{			AbstractArea child = (AbstractArea) iter.next( );			IStyle childStyle = child.getStyle( );			String vAlign = childStyle.getVerticalAlign( );			if ( childStyle != null )			{				int spacing = height - child.getAllocatedHeight( );				assert ( spacing >= 0 );				if ( CSSConstants.CSS_BOTTOM_VALUE.equalsIgnoreCase( vAlign )						|| CSSConstants.CSS_BASELINE_VALUE								.equalsIgnoreCase( vAlign ) )				{					child.setPosition( child.getX( ), spacing + child.getY( ) );				}				else if ( CSSConstants.CSS_MIDDLE_VALUE						.equalsIgnoreCase( vAlign ) )				{					child.setPosition( child.getX( ), spacing + child.getY( ) );				}				else				{					// do nothing				}			}		}	}