- From: Dael Jackson <daelcss@gmail.com>
- Date: Wed, 23 Mar 2016 20:00:52 -0400
- To: www-style@w3.org
- Cc: public-fx@w3.org
=========================================
These are the official CSSWG minutes.
Unless you're correcting the minutes,
Please respond by starting a new thread
with an appropriate subject line.
=========================================
SVG Text Issues
---------------
- The group went through a list of issues and problems that Tav
has documented here: http://tavmjong.free.fr/SVG/TEXT_SYDNEY_2016/
- Discussed using exclusions to help handle SVG shapes
- It was noted that shape-inside doesn't have an equivalent
functionality to wrap-flow (which says which side of the shape
to fill); this is needed to handle filling concave shapes
- Discussed ideas for sequentially filling shapes
- Need to clarify that line boxes are fitted to nonrectangular
shapes by requiring zero intersection.
- Middle (half of the x height) and Alignment (synonym for text
top and text bottom) baselines may be useful to add to CSS
Inline.
- It may be preferable to have the baseline table reset when the
baseline font changes - this would be a behavior change from
SVG 1.1.
- SVG origin for coordinates isn't changed by values from text
orientation.
- A decision on default values for mathematical values will wait
for more data.
===== FULL MINUTES BELOW ======
Agenda: https://wiki.CSSwg.org/planning/sydney-2016
Scribe: alancutter & nainar
SVG text issues
===============
Tav: Let me paste a link.
<Tav> http://tavmjong.free.fr/SVG/TEXT_SYDNEY_2016/
Tav: I have a whole series of issues with trying to finalize SVG
text.
Tav: Maybe I should go through how SVG text differs from CSS text.
Auto-wrapped text
-----------------
Tav: I have two diagrams there.
Tav: For HTML you have an absolute size and right flow left
Tav: float right float left using shape outside property you can
cut out regions - you end up with a region you can fill.
Tav: You can cut out regions and have a region that you fill which
is the blue line region.
Tav: In SVG we don't have floats - have a text element
Tav: because we don't have floats you can have a shape outside
that you exclude.
Tav: Once you get to that point everything that works for CSS
should work for SVG.
Tav: We in the SVG group have discussed at what level do we
combine with CSS?
astearns: One way to paper over the difference is to have
shape-outside to apply to exclusions.
astearns: Apply to exclude - 1st diagram could have instead of
floats exclusions - map closer to SVG
astearns: map closer to what we are trying to layout.
fantasai: SVG provides some shape and you get a containing block.
Tav: Yes, been my understanding...
Tav: CSS just fills that makes sense to me.
fantasai: Whether you think about that as a shape inside or a
bunch of floats doesn't matter much.
Tav: The spec only needs to deal with containing block and shape.
Tav: Right - a few issues
Tav: In html a float on one side - float right on the other side
Tav: because the shape-outside applies to float...there is one
shape per float.
Tav: In SVG have a float on each side so you can exclude values.
AmeliaBR: The exclusion spec would do this
AmeliaBR: but its not using the syntax you have here.
AmeliaBR: shape-outside is applied to the element that interrupts
the flow not the shape below.
AmeliaBR: With CSS exclusions it could be made consistent.
AmeliaBR: Depends whether SVG wants to go ahead with ways to do
the exclusions or ???
astearns: I would qualify the status of the spec as waiting
implementer interest beyond the first implementation.
astearns: Better if SVG forges on.
Tav: Get back to we are wrapped text
Tav: relies on a lot of modules
Tav: how to layout the top line?
Tav: Not just SVG issue - you can with floats and now with round
display.
Tav: You can have a non straight edge.
Tav: What do you do ... move down a few steps.
fantasai: Yes that's how normal floats work.
fantasai: It's not fantastic but that's how normal floats work ....
there's no baseline grid.
Tav: I saw there was a spec - line width? may be solution
Tav: Slide down till you fit something in.
Tav: Next question how to handle overflow - natural way of
expanding.
Tav: A good solution would be to expose the text somehow
Tav: by clicking on ellipsis on end - eg
Tav: or a tooltip appear
Tav: in shapes too you continue underneath rectangular area.
Tav: Covering up other content..
astearns: That's the general situation for overflow:
it covers up other content.
astearns: I like your overflow tooltip to add.
astearns: The basic case should be what CSS does with their
defined boxes.
astearns: It overflows in the direction.
<astearns> though whiffing in overflow situations seems appropriate
How to handle shapes with doughnut holes, etc.?
-----------------------------------------------
Tav: OK, we don't have a block content - we could fake it
Tav: using the width?
Tav: How to handle shapes like doughnut holes?
Tav: The SVG 2.1 spec had
Tav: kind of looks like a lot squeezed in the middle.
astearns: Is this the same link?
<Tav> http://tavmjong.free.fr/SVG/TEXT_SYDNEY_2016/
<heycam> we are now looking at section 3.3
Tav: Same link here.
Tav: Same discussion that wrap flow property not appropriate in
this situation.
Tav: Limit text to one side or other side.
Tav: To start what is shown there is the proper thing to do...
Tav: in the future add another property.
<AmeliaBR> I've written up some comments here, too. Possible new
property:
https://github.com/w3c/SVGwg/issues/37#issuecomment-178850020
astearns: I'm not sure I understand... looking at fig 11?
Tav: Yes, is there a problem with the way its filled
Tav: broken up into L/R side.
astearns: Right, we did talk a bit about this yesterday where
we're going to tighten up the spec to say in these cases
the lines are broken up into separate line boxes.
Tav: Yes.
Tav: and are placed in the order determined by the writing mode.
Tav: Yeah I agree with you.
Tav: Probably not what anyone would want to do.
Tav: But thats a behavior you should do.
astearns: That's my expectation.
AmeliaBR: I agree that it's not ideal especially when fitting text
to an SVG shape.
AmeliaBR: One suggestion: add a property that by default is the
behavior ... continue on in a straight line
AmeliaBR: Stand across the line and put text in that or ..
interruption ...
AmeliaBR: The wrap-flow property has different applications and
different values that can control wrapping outside a
solution region...
AmeliaBR: Here we're talking about an arbitrary shape.
astearns: Already have wrap-flow max and min.
astearns: You are correct there is something called wrap-flow fill
- we can add that you are correct.
astearns: Sure.
Tav: I don't see that as high priority but something maybe for the
future.
AmeliaBR: Couldn't be the same wrap-flow property, it's the
difference between shape-inside and shape-outside.
AmeliaBR: Talking here about what happens inside a shape-inside
property.
AmeliaBR: It would be parallel ..
AmeliaBR: As long as there's a clearly defined default behavior.
astearns: I see your point - we don't have the max and min for the
shape-inside - can be added
Sequential Shapes
-----------------
Tav: Moving on - next topic - question on how to fill sequential
into multiple shape.
Tav: this was something in SVG 1.2
Tav: I would like to be able to preserve that.
Tav: At first CSS regions seems like a solution but I tried
sitting down to mock up something but couldn't.
Tav: The easiest way seems like have a shape inside and a list of
URL references.
Tav: You fill the first shape and if there's text left over you
fill the next shape.
astearns: Going by the named flow terminology - create a region
with id - doesn't work for SVG purposes - what is in the
region spec
astearns: flow-from? Wouldn't get the list from ... we have talked
of creating different region chains before.
astearns: Have an element say what the next thing in the list is
astearns: CSS mechanism if that doesn't work.
Tav: Would a list shape inside and a list work?
astearns: I suspect so - more flexibility - CSS gets order from
document order, can't change.
fantasai: You can use order.
astearns: Took that out.
AmeliaBR: The main difference is CSS regions assume there are
elements in the document that provide
AmeliaBR: While in SVG the shape wouldn't necessarily be text
containers.
AmeliaBR: Is there any objection to expanding shape-inside and
should it be SVG specific or welcome in CSS shapes in
general?
AmeliaBR: Would not be the union but you spill across....
astearns: I think if you are going to come up with a new mechanism
for a region chain - should be SVG specific - rejected
ways of constructing region chains in SVG.
Tav: We would just define SVG shape-inside syntax for SVG purposes.
astearns: I think so - that would be right way to start - merge
later
Tav: Okay.
Tav: Same thing for shape-outside
astearns: The shape outside - might be better to converge with how
exclusions are created in CSS - nothing new needed to be
added for SVG.
Tav: I can take a look at that.
shepazu: Is it that case that an implicit...
shepazu: if you have a class on an element or selector ... you had
one or several text elements.
shepazu: You used the wrap selector it would fill them
sequentially in document order?
Tav: One text element that has all text.
shepazu: What about there regions?
Tav: Different regions are properties within that element -
referenced in the region.
shepazu: I see okay.
Tav: In that case could the list be generated by the shape inside
the element .. let's talk later.
ed: I have a question about flow regions, is there a way to get a
callback for when a flow region is full?
astearns: Yes.
astearns: To generate additional regions in script?
astearns: In the region specification - specified there.
Fitting Glyphs to Nonrectangular Edges
--------------------------------------
Tav: Ok.. the final item in this section
Tav: How is the first glyph positioned and aligned - easiest thing
is considering the embox height
Tav: fit it against whatever edge you have.
Tav: What if line-height of 2
Tav: extend the box up and down - that's the box up against the
edge.
Tav: That's nowhere in CSS a spec.
Tav: Understand what I'm asking?
astearns: Catching up...this is fig 13?
Tav: fig 13 - CSS inline spec
Tav: Some gray boxes, assume they wouldn't be existent in our text
wrapping - shape margin/padding at edge.
fantasai: I think it's an alternate way of thinking about it, it's
equivalent.
astearns: The diagonal is misleading. Boxes don't exist, outline
exists.
Tav: I understand that.
Tav: What part, the 'o' of voting.
Tav: Assuming 'V' is giving the edge of the shape, how close does
the 'o' get to the 'V'?
astearns: Entire height of the line-box.
astearns: As soon as any of it collides - it stops.
Tav: Okay, I didn't see where that was specced in CSS?
Tav: Check and make sure.
Tav: Certainly line height - make clear in spec.
Tav: Working same way as floats - shape had been replaced by 1 px
tall floats how line box would fit against floats.
Additional Baselines
--------------------
Tav: Okay. We can go back to baseline issues.
Tav: Section two. Let's talk about dominant baseline.
Tav: It shows the existing values of dominant-baseline in SVG and
tests what different browsers are doing.
Tav: The SVG dominant baseline is based on ? there's use-script ...
text-before-edge.
Tav: I'm not worried about losing use-script, I didn't test other
browsers.
Tav: Then there's reset-size that has a purpose that maybe CSS ...
it's not needed.
Tav: Is it possible to get ideographic and add it to CSS inline
spec?
AmeliaBR: It might be worth mentioning middle is in CSS inline not
for dominant baseline.
AmeliaBR: For alignment baseline - as synonym for text top and
text bottom
AmeliaBR: for SVG content - same can be done for dominant baseline.
AmeliaBR: Also in most forms equal to ext after edge
AmeliaBR: can also be added in a fall back synonym for fallback
SVG synonym.
fantasai: The list of baseline values that are in the spec are
aggressively trimmed down. We have an open issue to
check what's actually needed and add as necessary.
Tav: In fonts - the baseline table.
fantasai: Less clear what middle means.
Tav: It's half of the x height.
AmeliaBR: Middle is very useful in SVG - things look nicely in
lower case text - center is good for upper case
ideographical texts.
fantasai: Okay.
ACTION: fantasai add middle and ideographic baselines to
dominant-baseline
Tav: It would be great to get those two added.
Baseline Tables and Font Size Shifts
------------------------------------
Tav: 2.1.3 is baseline table
Tav: SVG 1.1 xll - on which SVG 1.1 is derived.
Tav: The baseline table changes when baseline font changes.
Tav: Looking at CSS inline spec it's not clear what expected
behavior is.
Tav: Tested browsers don't follow this.
Tav: Browsers don't implement - follow - behavior in SVG 1.1 xll
Tav: Change font size hanging glyphs hang from same point -
alphabetic scripts - would be positioned along alphabetic
baseline.
fantasai: We're not doing that and that's an intentional change.
fantasai: If we need a value that preserves baseline table,
could add that, but need use cases.
fantasai: You have a bunch of small text and text twice as big.
fantasai: It doesn't make sense to have hanging baseline hand down.
fantasai: Makes sense to reset instead.
Tav: I was thinking about where it makes sense - make font 10%
bigger to emphasize.
fantasai: Alright.
fantasai: The only a problem is if mixing script - strange to have
baseline shift.
fantasai: Would be strange to have it not shift.
fantasai: Let me draw it.
AmeliaBR: Related is to have CSS inline .. dominant baseline
property.
AmeliaBR: define dominant baseline that sets layout grid .. is not
layout grid until set to explicit value.
AmeliaBR: the fact that dominant baseline is inherit by default
AmeliaBR: tab's issue .. you're always calculating it ...
fantasai: Dominant baseline property inherits
fantasai: baseline doesn't...
fantasai: Small text big text in middle.
fantasai: Take text to align to hanging baseline.
fantasai: Sine if same size here - if same size here - expect it
to go here.
fantasai: Off-center - shift to bigger size.
fantasai: Stuff of same size align together.
fantasai: That's why we reformat baseline everytime font changes.
Tav: Now do the opposite, make the things smaller.
fantasai: <draws>
fantasai: vs floating way up here - weird also.
fantasai: Nesting structure - makes sense for content of same
nesting structure should fit same nesting structure.
fantasai: Parallel structure floats together: baseline table
is maintained at parent's size.
fantasai: But when nesting - each unit of text consistent with
itself.
fantasai: Thats why reformat baseline table when the font changes.
fantasai: Mixed content aligns to single unit with respect to text
Tav: I'm not sure I would expect that, if I had handing glyphs in
the ABC I would expect the smaller text to match the ABC.
fantasai: If you asked it to attach itself to a nesting element
fantasai: If this is a sibling of that and the alignment is a
sibling of the other
fantasai: if this is a parent element with text inside it
fantasai: then that intermediary element - will reset base element
for all its kids.
fantasai: If you aren't inside here use parent inline baseline
table.
SteveZ: So the difference arises when I have an element that is
inside and have a hanging text in it.
SteveZ: The small hanging text goes to the top the alphabetic text
SteveZ: it's all going to be smaller and the alphabetic will all
be at the bottom or all at the top.
fantasai: No, actually that is not what happens.
fantasai: Not about what element comes first.
fantasai: If you decide you have a quote inside a p you have a
quote with text in different language mixed in
fantasai: If the quote's baseline table is sized differently -
fit inconsistent size.
Tav: That's what reset size value is supposed to do.
fantasai: We reset by default - usually what you want
SteveZ: We don't have a survey that says what you want.
SteveZ: I think the point is that what the default value for
resize is it's clear there's use cases that want to avoid
resizing or explicitly do resizing.
SteveZ: We could have a preserve value so that it doesn't change.
SteveZ: That's just changing the default.
fantasai: I mean if we look at single script - super/sub script -
the script is not floating in line - in consistent
position - I would expect similar structures to have
same behavior.
fantasai: No one has shown me a case where you want the preserve
behavior.
fantasai: Love to see examples outside of spec examples.
Tav: Maybe it's not significant, it is a change in behavior from
SVG1.1 though.
fantasai: I mean if SVG needs behavior for compat...
Tav: Maybe it is not needed. We still need to mention change in
behavior.
astearns: so.. is that about as far as we will get on this one.
astearns: Let's take a 15 minute break.
<br type=15 minutes>
* fantasai just checked in definitions for ideographic and middle
baseline values
text-orientation
----------------
astearns: Let's get started again.
astearns: tav you have a couple more issues?
Tav: Okay the next issue: auto values for text-orientation.
Tav: SVG has vertical values because there's Adobe content whose
output can rotate the glyphs.
Tav: The default baseline is alphabetic, in SVG1.1 the alignment
baseline for vertical text was always central.
Tav: Is is going to cause text from old Adobe products to shift a
bit when there's text orientation 90 degrees.
fantasai: So, we should fix this by defining that in SVG the origin
for coordinates isn't changed by values from text
orientation.
fantasai: While dominate baseline may change
fantasai: auto value of baseline may change
fantasai: also causing SVG to recognize that origin point for
coordinates doesn't change.
Tav: Okay so that would be in the CSS, would take care of that.
Tav: I think that would end up being a change to outline spec.
Tav: Auto values that references auto mode - will also have this
magic.
Tav: Okay that sounds good.
Tav: Where coordinate system doesn't change.
<fantasai> Tav --
https://hg.csswg.org/drafts/diff/6384ffddc849/CSS-inline/Overview.bs ?
Default Values
--------------
Tav: The next issue is default values for where the baseline should
be if the font does not specify it.
Tav: Default values for mathematical values.
Tav: There is a default value of .6em.
Tav: Might be useful for there to be a suggested value for
mathematical values.
Tav: Firefox uses ? for the baseline which is not correct.
heycam: Easiest thing to get at.. nobody uses one.
heycam: Had some discussions in Houdini over the weekend -
exposing baseline to script -
heycam: We didn't want to expose guesses - is my recollection
correct?
astearns: We want to expose what is available for the font and the
baseline but browsers need some heuristics.
astearns: It'd be nice to have standard heuristics so things don't
jump around between browsers.
SteveZ: A little bit more subtle than that.
SteveZ: Came up with V1 for Houdini api-
SteveZ: restricted to ideographic or alphabetic.
SteveZ: Fairly reliably expect - come up with reliable heuristics -
expose in future version of Houdini
SteveZ: Don't start with a hard problem to solve.
SteveZ: Haven't specced a good way to give that heuristic yet.
Tav: It could be possible to measure these values from a font.
Tav: Some fonts might be difficult because they only have ?.
Tav: The mathematical fonts would use the minus character.
AmeliaBR: Not sure the original SVG spec had a sentence that if
the exact value wasn't available UA should synthesize
appropriate heuristic.
AmeliaBR: One option is to keep vague opening - vendors? choose to
apply a fraction of em/ex
AmeliaBR: or translate the glyph that way...
AmeliaBR: Other option is to give explicit easy to calculate
heuristic.
AmeliaBR: How do you expose data to script and houdini?
SteveZ: One of the action items for inline spec is to come up with
standard heuristics.
SteveZ: This is for interoperability, if things are different
everywhere people will be unhappy.
SteveZ: Need to gather data for determining these heuristics.
Tav: Chicken and egg problem - no one uses it.
Tav: The same issue is for Hebrew which is top aligned, most fonts
don't have reliable values except for alphabetic and emba(?)
astearns: Specially in the case of Indic - font worked well enough,
astearns: everyone uses it.
astearns: We could either have heuristics that every browser must
interoperably implement
astearns: or we could allow browsers to implement better heuristics.
SteveZ: Why don't we wait for data before deciding?
astearns: That sounds good.
Tav: That concludes my issues.
astearns: thank you.. lets see.
astearns: CSS sizing?
gregwhitworth: Covered yesterday.
astearns: How about CSS alignment?
gregwhitworth: fantasai?
fantasai: I don't have anything for that.
fantasai: Nothing to add.
Received on Thursday, 24 March 2016 00:01:51 UTC