Hi all!

I am an italian student of the University of Bologna.

I have tried to solve a few problems concerning hyphenation, in
particular:
- show the '-' at the end of the hyphenated lines
- use the fo:hyphenate property to enable hyphenation, instead of the
  alignment
- specify the hyphenation character using the fo:hyphenation-character
  property

So, here are the modifications I suggest; I have done some (simple) tests
and they seem to work.


*** layoutmgr/LineLayoutManager.java ***
I changed the condition tested to decide whether try hyphenate, now it
only looks at the appropriate fo property

24a25
> import org.apache.fop.fo.Constants;
212c213,214
<                     if (bTextAlignment == TextAlign.JUSTIFY || prevBP == null) {
---
> //                    if (bTextAlignment == TextAlign.JUSTIFY || prevBP == null) {
>                     if (hyphProps.hyphenate == Constants.TRUE) {


*** fo/TextInfo.java ***
I added the hyphenation character, and removed the bCanHyphenate boolean,
which is no longer necessary, because of the previous change

54c54,56
<     public boolean bCanHyphenate = true;
---
> //    public boolean bCanHyphenate = true;
>     /** the hyphenation character to be used */
>     public char hyphChar = '-';


*** fo/PropertyManager.java ***
Sets the hyphenation character in the TextInfo object


496a497,498
>           textInfo.hyphChar = this.propertyList.get(
>                                   PR_HYPHENATION_CHARACTER).getCharacter();


*** layoutmgr/TextLayoutManager.java ***
I added a iHyphenated boolean in the AreaInfo class; it is set to true
according to the flags of the break possibility chosen, and is value is
looked at before creating the areas, to decide whether to add the
hyphenation character

49a50,52
>       private boolean iHyphenated;
> //        public AreaInfo(short iSIndex, short iBIndex, short iWS,
> //                 MinOptMax ipd) {
51c54,55
<                  MinOptMax ipd) {
---
>                  MinOptMax ipd, boolean iHyp) {
>             iHyphenated = iHyp;
114c118,119
<         hyphIPD = textInfo.fs.getCharWidth('-');
---
> //        hyphIPD = textInfo.fs.getCharWidth('-');
>       hyphIPD = textInfo.fs.getCharWidth(textInfo.hyphChar);
208c213,214
<         if (textArrayLength < iStopIndex || textInfo.bCanHyphenate == false) {
---
> //        if (textArrayLength < iStopIndex || textInfo.bCanHyphenate == false) {
>         if (textArrayLength < iStopIndex) {
401a408,409
> //        vecAreaInfo.add(
> //          new AreaInfo(iWordStart, iNextStart, iWScount, ipd));
403c411
<           new AreaInfo(iWordStart, iNextStart, iWScount, ipd));
---
>           new AreaInfo(iWordStart, iNextStart, iWScount, ipd, ((flags & 
> BreakPoss.HYPHENATED) != 0)));
499a508,512
>
>       // add hyphenation character if the last word is hyphenated
>         if (ai.iHyphenated) {
>             str += textInfo.hyphChar;
>         }


Ok, that's all, I hope this can be useful.

Bye
        Luca

Reply via email to