On 18.09.2005 13:10:34 Manuel Mall wrote: > On Fri, 16 Sep 2005 11:41 pm, Jeremias Maerki wrote: > > I'm not a specialist on typography, yet, but the character wrapping > > (your option a) sounds definitely like a hack. I've started reading > > the parts in the spec about baselines and that's not a casual read. > > But I think that at one point we need to handle baselines and all > > these little details. I'm not a big help here but I think it would be > > worth reading through the following sections in the spec: 4.2.6, > > 7.8.1, 7.13. Somewhere in there all the necessary traits and their > > handling should be hidden. They should at least get you some hints > > how to handle the problem at hand. > > Jeremias, seems to me we are talking about two different things here.
I don't think so. I only tend to look at how to get a problem right for good as opposed to a quick change to make things work. I see that this was not fully appropriate here. Sorry for that. > My > initial problem simply was that I needed more data in the area tree to > correctly draw border/padding/background for various inline fos > (leader, page-number, page-number-citation, character). The other, only > vaguely related matter, is the correct handling of all the area > alignment properties in layout. IMO it is only vaguely related, and > this may be contentious, because for rendering we only need to know > where to place the glyph, i.e. the x/y coordinates of its alignment > point. All the relative and baseline alignment stuff should have been > previously resolved by layout. If you go along with that argument it > would mean the fop area tree as exposed to the renderers will not carry > baseline tables or related data. Not sure if this causes an issue with > the plans to expose the area tree as an official external interface. No, I don't think it would. As I said, I don't know too much about the details involved here so I can't tell what the right approach would be. People who would mess around with the area will need to know what they're doing anyway. No problem if it might get a little complicated on this level. > So, for the time being, I have now fop internally standardised the > meaning of the fop specific "offset" attribute in the fop area tree as > meaning the distance between the before edges of the parent area and > the area to be rendered. I have also introduced a new attribute called > "baselineOffset" which gives the point on the start-edge (distance from > the before-edge) for the actual alignment line for all glyphs in that > inline area, i.e. the alignment point in bpd for all the glyphs in that > area will be on that line. Sounds reasonable. Did you find anything in the spec what exactly the suggested set of trait is? > This seems to have worked well so far and introduced quite a bit of > consistency in the handling of offsets and basic vertical alignment for > all our inline areas. There is an assumption behind this that all > glyphs in an inline area have the same nominal alignment line. This is > certainly true in the moment and I am not aware of a font where > different glyphs have different nominal alignment lines (but there > probably is for fonts mixing Western and non Western glyphs). And even > if so, our font interface (nor FOray's i/f I assume) does not expose > this sort of detail. > > If the two attributes (offset and baselineOffset) are enough in the fop > area tree to cover vertical writing modes I am not sure about - this is > "for further study". > > Hope this makes sense Sounds completely reasonable to me. > > > > > On 16.09.2005 15:50:50 Manuel Mall wrote: > > > Still waiting for some feedback here from others. I am reluctant to > > > change the interface to the renderers without other committers > > > agreeing because such a change affects every renderer out there. On > > > the other hand it feels a bit like a kludge to treat/represent > > > <fo:character ... character="x" /> as <fo:inline ...>x</fo:inline>. > > > There are also some subtleties in the handling of some properties > > > which are interpreted differently when specified on a fo:character > > > to a fo:inline. > > > > > > Manuel > > > > > > On Fri, 16 Sep 2005 03:31 pm, Manuel Mall wrote: > > > > On Fri, 16 Sep 2005 02:58 pm, Finn Bock wrote: > > > > > [Manuel] > > > > > > > > > > > I am currently looking at adding the missing background and > > > > > > border/padding support to fo:character and have run into a > > > > > > co-ordinate system issue. In fop text areas and character > > > > > > areas are positioned in the bpd direction using the "offset" > > > > > > attribute which refers to the character baseline position. > > > > > > However, border/padding and backgrounds are positioned > > > > > > everywhere relative to the top left (or should I say > > > > > > before/start) corner of the area rectangle. However, in the > > > > > > renderer based on the area traits (for a text or character > > > > > > area) I cannot easily determine the before edge position of > > > > > > the rectangle based on the baseline offset unless I go to the > > > > > > font and ask for its ascender size etc.. But that is really > > > > > > stuff for the layout system. > > > > > > > > > > > > I see two options: > > > > > > > > > > > > a) We can wrap the character area into an inlineParent area > > > > > > and put the background/border/padding for the character on > > > > > > the inlineParent. b) We add another attribute to the generic > > > > > > fop area being the baseline offset called "lead". The meaning > > > > > > of the attributes is then that "offset" refers to the > > > > > > distance between the before edge of the parent area to the > > > > > > before edge of the area to be rendered and "lead" is the > > > > > > distance from the before edge to the baseline for character > > > > > > placement. > > > > > > > > > > Perhaps I misunderstand, but I think it would be better if we > > > > > defined an dominant-baseline on the inlines (or even better > > > > > dominant-baseline-identifier on inline and > > > > > actual-baseline-table on the fonts) and a baseline-start-point > > > > > on the linearea. The semantics of these traits are as described > > > > > in [4.2.6] and [4.5]. > > > > > > > > Finn, you understood me correctly and your suggestions to align > > > > our naming with the spec make sense. > > > > > > > > However, the fop area tree is really an interface to the fop > > > > renderers and not an exact implementation of the XSl-FO area > > > > tree. For example at the moment it seems layout is assumed to > > > > take care of all the baseline calculations and the renderers are > > > > only told the position of THE baseline for the glyphs of the font > > > > they are suppose to render. There seems to be no need for the > > > > renderers to be aware of different baselines, baseline tables, > > > > etc. as layout resolved all that into a single vertical (I am > > > > still thinking in terms of lr-tb scripts) position for each > > > > sequence of characters to be rendered. > > > > > > > > So we may have to introduce the concepts you suggest like > > > > actual-baseline-table, dominant-baseline, ... to the fop Layout > > > > Managers so they can do their job properly with respect to all > > > > this baseline stuff but I am not so sure we need it in the area > > > > tree (= interface to the renderers). > > > > > > > > > Together with bpd, I think that would be enough to find the > > > > > rest of the different rectangles. > > > > > > > > > > I guess it is the same as your suggestion b), but I would > > > > > rather stick with the terms used in the spec. > > > > > > > > > > regards, > > > > > finn > > > > > > > > Cheers > > > > Manuel > > > > Jeremias Maerki > Cheers > Manuel Jeremias Maerki