Inlines etc

1. Adding horizontal space in line
2. fo:wrapper vs fo:inline
3. Superscript and line separation
4. White space treatment to separate content
5. text-altitude
6. Drop caps.
7. inlines with combining characters
8. Strike through
9. inline alignment

1.

Adding horizontal space in line

Paul Grosso


> I am working from design specifications which require 12pt of space 
> between 2 parts of a line. 
>I want something like 
>Page number, 12pt of space, "Chapter " followed by chapter number, etc.
>

<fo:leader leader-length="12pt"/>

2.

fo:wrapper vs fo:inline

J.Pietschmann



> I'm wondering about (what may be) a fine point of FO semantics.

> Is there something about fo:inline that prevents them from breaking 
> across lines?

No. Inlines can flow across several lines.


> I'm prepared to use fo:wrapper to instigate momentary changes, say, into 
> an italic face -- but had supposed fo:inline was the right way.

The difference between fo:inline and fo:wrapper is that the wrapper only holds inheritable properties for the areas within, while the fo:inline generates areas. This means a fo:inline can have a border, background, space-start and space-end and padding and a few other bits, while a fo:wrapper cannot. If you just want to change the font-style to italic, it doesn't matter whether you use fo:wrapper or fo:inline. The latter is more commonly used though.

3.

Superscript and line separation

David Tolpin



> I often use terms like "n^2"; then the line of text in which the 
> superscript "2" appears is set with a distance to the preceding line 1.5 
> times bigger than lines without a superscript.

line-height-shift-adjustment is 'consider-shifts' by default, you want it to be 'ignore-shifts' if sub/super-scripts must not affect line leadings.

4.

White space treatment to separate content

Victor Vishnyakov



> 2. I'm trying to append some spaces into a string but the spaces 
> don't show properly.. eg.. I want..  Is there any fo item that will 
> create an empty space?
> "Blah:  Blah01"
> Comes out
> "Blah:Blah01"

Solutions:

1. use 7.15.8 "white-space-treatment" with value "preserve"
2. use fo:leader
3. use fo:character

5.

text-altitude

David Tolpin



> Would you use text-altitude="1em" to then lift it to the right position?
>     (I got an error on text-altitude='100%')

the example was just to show how one could overlay two characters. To do that, I looked up the characters width in the corresponding font metrics table and set character-spacing to -1em*character_width

The author will not have to displace vertically diacritics since they are normally already positioned at the correct height from the baseline.

If for some purposes you want to specify text-altitude, then it's correct value is 1em. 100% offends the parser because it contains '%', the percent sign has to be escaped.

6.

Drop caps.

W. Eliot Kimber

I've always done drop caps with side floats:

       <fo:block
         font-size="12pt"
         font-family="sans-serif"
         line-height="1em"
       >
         <fo:float float="start">
           <fo:block
               font-size="72pt"
               font-family="serif"
               line-height="1em"
               padding-end="24pt"
               >H</fo:block>
         </fo:float>
         <fo:inline>ere is the start of the paragraph.
         And this is more content in the paragraph.
         And more. And more. And this is more content in the paragraph.
         And more. And more. And this is more content in the paragraph.
         And more. And more. And this is more content in the paragraph.
         And more. And more. </fo:inline>
       </fo:block>

This may require jiggering of the details of edge margins, padding, etc., as different implementations are likely to vary in their behavior at the level of precise character placement.

Side floats are the only construct that provide any form of runaround in XSL-FO 1.0.

7.

inlines with combining characters

Unknown

 <fo:block>Some standard inline text to test umlaut. </fo:block>
    <fo:block> <fo:inline>This uses the combining character value 0308,
the diaresis.<fo:character 
	    character="o"/><fo:character 
	    character="&#x0308;"
	    font-family="'Arial' 'Garamond' Serif"/> </fo:inline>
</fo:block>

    <fo:block>
     <fo:inline>Some more standard inline text to test a different way.
      &#160;<fo:character 
     character="o" 
     letter-spacing="-1.5em" /><fo:character character="-" 
	    font-family="'Arial' 'Garamond' Serif" 
	    vertical-align="30%"/> </fo:inline></fo:block>

8.

Strike through

Eliot Kimber




> My question is I think very easy but how to strike a text line in an 
> fo:block?

<fo:inline text-decoration="line-through">...</fo:inline>

9.

inline alignment

Eliot Kimber


> Now i am trying to align 2 pieces of info, on 1 line, at the bottom 
> of static content without putting each piece in its own 
> block,  but it does not work...

This is a little fo trick:

- set text-align-last="justify" on your block - put an auto-length space leader between the two parts:

<fo:block text-align-last="justify">
   <fo:inline>This is on the left</fo:inline>
   <fo:leader leader-length="auto" leader-pattern="space"/>
   <fo:inline>This is on the right</fo:inline>
</fo:block>