- From: Dael Jackson <daelcss@gmail.com>
- Date: Mon, 14 Sep 2015 13:59:00 -0400
- To: www-style@w3.org
- Cc: public-fx@w3.org
FXTF Meeting (part 2)
=====================
glyph-orientation
-----------------
- RESOLVED: Drop glyph-orientation-vertical values 270 and 180.
Drop glyph-orientation-horizontal entirely.
Drop text-orientation: use-glyph-orientation value.
Treat glyph-orientation 0, auto, and 90 as aliases
of the corresponding values of text-orientation.
writing-mode Values from SVG 1.1
--------------------------------
- Add RFC2119 optional wording to svg writing-modes keywords.
getTransformToElement
---------------------
- The group felt this needs to be defined better.
Path Animation
--------------
- It was agreed that Shapes level 2 should add motion path so that
it's all defined in the same places.
Zoom Features for Media Queries
-------------------------------
- KDDI presented a proposal for a zoom features property to be
added to media queries.
- It was thought that these use cases were best addressed by a
JavaScript API rather than a CSS property.
- The breakdown of the various types of zoom that may need to be
supported was helpful and sparked renewed interest in creating
a more generalized spec involving zoom.
===== FULL MINUTES BELOW ======
scribe: dael
FXTF Meeting (con't)
====================
glyph-orientation
-----------------
heycam: There were two things in writing-modes.
heycam: One was the values for compatible with SVG 1.1 for
text-orientation. We've discussed this before but there
had been holdouts on our side, but we now all agree that
we don't need them. They're not compatibly implemented
everywhere.
heycam: I'd like to propose removing.
fantasai: I think there's probably some implementation that needs
some values to work. Last time we discussed maybe 0deg
needed to work in glyph-orientation-vertical.
fantasai: I think 270deg doesn't have use cases. If exact
compatibility isn't an issue, we can treat
glyph-orientation-vertical as an alias.
krit: Since they're different properties, I'd prefer to deprecate
them.
fantasai: We shouldn't change in the new property. You can't
support two things that control the same behavior
without defining how they interact. How it's defined
currently is text-orientation has a special keyword. I
suggest we drop the keyword and have the three values
that are used map as aliases to the text-orientation
properties.
fantasai: We did this with page break. The technical way we did
this is we defined page-break-inside as a shorthand of
break-inside. This would be the proper approach to
aliasing for the implementations that need to support
glyph-orientation. If no one needs it we could drop.
heycam: I thought we might be there.
krit: I'd rather the text-orientation. I was verifying that what
the new property supports is things that make sense.
<fantasai> Proposal would be that 'glyph-orientation-vertical:
0deg' is shorthand for 'text-orientation: upright',
'glyph-orientation-vertical: auto' is shorthand for
'text-orientation: mixed', and 'glyph-orientation-
vertical: 90deg' is shorthand for 'text-orientation:
sideways-right'
<fantasai> And glyph-orientation-vertical is not a real property,
only a shorthand
<fantasai> And the other values of glyph-orientation-vertical are
dropped
heycam: The day before we were talking about support for
glyph-orientation-vertical itself. Do you think we can
drop that whole property?
krit: One moment.
krit: It only has upright, sideways-right and sideways-left. So as
an alternative to 0deg, 180 deg and 270deg.
jdaggett: We've been talking about a proposal for sideways-lr and
sideways-rl going into the writing of shorthand which
would necessary to making sideways be sideways right.
fantasai: I don't think that affects too much what we're doing
here. It might effect the mapping of 90deg.
jdaggett: Is anyone in the room talking about implementing this
value? glyph-orientation?
fantasai: I'm proposing we drop. If there is no implementations,
if everyone will drop their existing implementation and
not be able to read glyph-orientation then we can drop
it from the spec and define that glyph-orientation-
vertical isn't valid.
krit: I'd rather if we add text-orientation support and you
ignored glyph-orientation when it was present.
fantasai: That's not a great interaction between properties. I'd
rather we define the interaction as aliasing because that
gets everything to work correctly. You implement it as a
shorthand and glyph-orientation: 0, auto, and 90 are
'upright', 'mixed' and 'sideways'. So it only needs
text-orientation plus this shorthand.
krit: It sounds complex. It's backwards-compatible and specify how
it works with the new, but it seems a lot of work.
fantasai: It's less work because no where in your code base is
checking two properties. You only support glyph-
orientation when you're doing the parsing stage because
it will map directly into the text-orientation. It saves
you data.
krit: Maybe not in Firefox, but having a new structure for a
shorthand property is a lot of work.
Florian: It's not a lot. Engines support shorthands already.
heycam: To get back to implementation. For webkit and blink, do
you support glyph-orientation-vertical: 0 now?
krit: Just for SVG.
heycam: Do you plan to remove?
krit: The problem with removal is we have content out there.
fantasai: If you're going to remove it, we'll remove the mention
from all spec. If you're not, we need to define it, and
this is a better definition.
jdaggett: Do we know there's content using this?
krit: It was used, yes. Illustrator does.
jdaggett: Illustrator is ancient.
fantasai: But Illustrator is an implementation. If they want to be
able to implement that we need to support it. If any SVG
reader needs it we have to define how to handle it in
the new world in a way they can read their old content.
This solves their problem.
fantasai: We try and avoid situations with two properties that
control the same thing. But when that happens, in CSS
the override mechanism is the cascade.
fantasai: This mechanism lets us use the cascade and that's the
same thing we've done in equivalent situations like
page-break-inside/break-inside, where we've had legacy
syntax we needed to map over. If we don't have to
support 180 and 270, which have no equivalent in text-
orientation, this is the best way.
<jdaggett> um, if no user agent implements this value I think we
should drop it
<jdaggett> legacy relationships do exist but if there's not a lot
of content that uses this
<fantasai> jdaggett, the issue is non-Web content. We need to
define how it works for those implementations, even if
no browser ever needs to implement it
Florian: We spent a bunch of time looking at mechanisms to handle
aliasing and this was best.
heycam: Okay, in the case that we're not as close to removing,
this keyword is a smart way to do it.
krit: I disagree shorthands are easier to handle. Illustrator is
interested in the new text-orientation property.
fantasai: Proposal is drop glyph-orientation vertical, drop 270
and 180, drop glyph-orientation-horizontal entirely.
Drop text-orientation use glyph-orientation value. Treat
glyph-orientation 0, auto, and 90 as aliases of the
corresponding values of text-orientation
heycam: I agree with that concept.
krit: I agree with the first points. You know my opinion on the
last, but I'm not going to object.
fantasai: If we're doing mapping, this is the way we should do it.
RESOLVED: drop glyph-orientation vertical, drop 270 and 180, drop
glyph-orientation-horizontal entirely. Drop
text-orientation use glyph-orientation value. Treat
glyph-orientation 0, auto, and 90 as aliases of the
corresponding values of text-orientation
<Florian> Here is a page on the csswg wiki exploring different
aliasing mechanism: https://wiki.csswg.org/ideas/aliasing
writing-mode Values from SVG 1.1
--------------------------------
heycam: I was initially opposed to including the old keywords as
aliases but my objection wasn't particularly strong. I
tried to e-mail Jonathan Kew, but I didn't get a reply.
fantasai: I think the spec needs that table. I don't think we need
to require that every implementation includes it. We
need that mapping for those that support the values. I
think IE does.
heycam: Unless anybody remains objecting, that's fine.
krit: So what elements would be supported for SVG?
fantasai: You either support the values or you don't. If you don't
support SVG you need to support those values.
krit: You suggested there's an ability to write it to the UA
Stylesheet.
fantasai: If you only need to support the presentation attr syntax
you can do that. If you need CSS values you'll end up
parsing in all contexts.
krit: Will that be required for all UA that support SVG?
fantasai: That's up to SVG group.
heycam: I would say yes. Given that IE has the old values and
others do, we might as well have unconditional support.
heycam: What does it say in the spec re: required?
<fantasai> "Implementations that wish to support these values in
the context of CSS must treat them as follows: "
fantasai: I should qualify that for writing modes conformance it's
optional and SVG can say it's required.
Tav: I think it should be required for SVG.
fantasai: It's required in CSS in general if you don't support SVG
you might not need to, but most UA will.
heycam: I'm fine with it.
ed_paris: Do we need a resolution?
heycam: If that's the current state, then I guess it's fine to
leave as-is.
<fantasai> ACTION fantasai add RFC2119 optional wording to svg
writing-modes keywords
<trackbot> Created ACTION-716
getTransformToElement
---------------------
<heycam> http://dev.w3.org/fxtf/geometry/
heycam: In the SVG WG we just removed some method that was under
defined that was getTransformToElement. The intention
was to give you a matrix that transforms between one
element in a system to another. One undefined piece was
what happens when you have two SVG fragments.
heycam: If you're going to support anything like that it should be
more general than SVG elements. We wanted to find out if
that's something people wanted to see. It's not urgent,
but to see if people were opposed.
smfr: It would work across 3D transforms? There are problems
computing matrices with flattened. I'd like to see points
and rectangular between coordinate systems which I think is
geometry.
heycam: Converting points and things is usually what you'll want.
shane: So this returns a matrix, is that right?
heycam: The old does a matrix. It was a SVGMatrix and recently
changed to the added DOMMatrix. What's the actual method
that does the transform.
smfr: Do you have a link?
<zcorpan> https://drafts.csswg.org/cssom-view/#the-geometryutils-interface
heycam: So that relates to take a point, interpolate and take it
to a point in another one.
zcorpan: I don't really remember.
krit: If you have a transform you can apply it to a point. You
can't take it from one point to another point in a different
coordinate system.
heycam: The main definition seems to be missing.
heycam: The answer is probably that these methods will do what
they need to or that's an obvious place to put something.
Path Animation
--------------
Tav: One piece that's missing is path animation. I think there's a
lot of interest in it. I'd like to see it be implemented
somehow. If you can just use a string or not and how you do
that, I think birtles might know more.
birtles: I'm not sure how much more. We discussed the other day
and more or less agree on the attr on a property so that
we can animate CSS transitions and animations. The part
we need is the syntax for that. Having looked at what we
have in motion path that could be more consistent to wrap
up the SVG path function and allow using the shape
functions.
birtles: We haven't quite resolved it. We also talked about making
it easier to interpolate. I wanted to try and solve that
problem, but I want to adjust to the same thing SVG does.
I think that's the state at the moment. I'm not sure
there's anything to discuss.
heycam: It got on the agenda to discuss the syntax issues. It's in
the motion path animation and it's clear we should do that.
Not sure who would be driving this.
TabAtkins: Do we have a spec for the SVG stuff as properties?
heycam: In the SVG 2 spec, yeah.
TabAtkins: So put it there. It's a paragraph for the simplest form.
I nominate heycam to write it.
heycam: Okay.
heycam: We'll discuss further in SVG.
krit: We have CSS shapes split to different specs. Level 1 had
circle, ellipse and polygon. Motion path has the path. Can
we combine so future spec would reference this one?
heycam: You want to move all the shape definitions into a single
spec?
krit: I'm asking if that would make sense.
Tav: Where?
TabAtkins: Shapes.
astearns: I have an issue in Shapes level 2 to add path.
astearns: We can add it there.
krit: Sure, that would work for me.
krit: I want to have it in one spec, I don't care where.
Tav: Animation between path and shapes is non-trivial. I don't
want to create something very complicated.
heycam: I think that's a separate decision as to if the new CSS
shapes will be used in this.
krit: The motion spec defines the start point of the motion of the
shape.
Zoom Features for Media Queries
-------------------------------
<tkonno> https://lists.w3.org/Archives/Public/www-style/2015Aug/0224.html
<tkonno> http://rawgit.com/satakagi/mediaQueryZoom/master/index.html
<tkonno> http://svg2.mbsrv.net/devinfo/devstd/css-mediaquery-zoom/20150825_zoom_media_features.pdf
tkonno: Today for the presentation we have the proposal for media
features for MQ. The two topics are the basic
functionality and features.
tkonno: First is overview of zoom media features. First the e-mail
above has a draft spec. This is an overview.
tkonno: I proposal a new feature to control the styles or content
to zoom. We prepared this to confirm the concept. The goal
of my presentation is to get approval to proceed to an ED.
tkonno: The use cases, we are interested in the mapping using SVG.
For mapping, the map is zoomed out and the user wants the
overview. On the other hand when the map is zoomed in they
want the details such as landmarks.
tkonno: The generated map consists of the marker areas so if the
content switched according to zoom the user can get the
appropriate information. It is essential for mapping to
switch the content radius according to zoom.
tkonno: Also zoomable high resolution features. This diagram is
zoomable. In this case the user the feels that low
resolution is enough when zoomed out. Then the diagram is
zoomed in and they want high resolution images. These use
cases are realized by JS or other than web standard. We'd
like to recognize this with web standards.
tkonno: Assuming these use cases are good, how can we do them?
min-zoom is the new feature. In this example, if the
ZoomRatio is <2.0 the content would be displayed.
tkonno: The details. I explained the overview, but it is unclear
how can we define zoom.
tkonno: We think zoom is in two types. One is UA zoom, which is
page and pinch zoom.
tkonno: The pinch zoom is controlled by the user pinch zoom
gesture and it doesn't effect the viewport.
tkonno: Second is webapps control. They control the scale of the
contents. So ZoomRatio should be represented as these
parameters [page 8 of slide show]
tkonno: This formula indicates the relationship between the device
size and the content size.
tkonno: This chart [slide 9] corresponds to the previous formula.
There are 6 types of zoom type. I'm not sure all are
needed or should be prescribed. From the viewpoint of
mapping we need to prescribe #3.
tkonno: As for the other types of the document zoom, it depends on
the use case. So we'd like to propose the document zoom
feature. Imagine the use case, the web page has a map in
an iframe. The user might zoom the map content, but the
user might zoom all content. It can be realized by the CSS
transform.
tkonno: When the webpage is zoomed in using pinch zoom it's the
transform. In the case of the map, that should be changed
with the pinch zoom.
<dbaron> the term "zoom" seems quite overloaded
<dbaron> and I'm not sure what some of these numbers in the slide
actually mean
tkonno: As we look back, if you agree with us we'd like to proceed
to ED. Thank you.
Florian: I read the mail, sorry I didn't reply on the list. I
think you did a through job of describing how zoom can
interact. There's one thing. Can you put back on screen
slide 9?
Florian: Just to be clear, when you're talking about document
scale this is when the iframe is being engaged by a
document around it. All the zoom you're talking about
here is pinch zoom or transforms. That's the major
difficulty. Having a MQ on pinch zoom changes the game.
Normally pinch zoom is magnifying glass and not an
opportunity for re-layout.
Florian: I don't think this is compatible with how browsers do
zoom. It's also not clear this is user friendly. Your
cases are places that it can be done for a user in a
friendly way, but there are ways that can not be. Though
the model makes sense, in your examples you had pinch
zoom or transforms it makes me think this might not work.
Florian: What we can use in MQ is custom MQ. That way the
application is in control of what it's doing. If you have
the +/- it wouldn't be browser supported, but browser
assisted. This wouldn't natively interact with pinch
zoom, but you can hook events into doing this. You get
less help from the browser, but you get some. It would be
interesting to hear from browser vendors.
tkonno: It's different than people with implementation need.
Florian: From the user's PoV there are many bad ways of doing this.
If you do what you had with the map that's fine, but if
you re-layout while you pinch that is a bad interaction.
TabAtkins: We can expose some events, but doing it directly is
weird interaction with the compositor.
smfr: We agree. We have a policy of not exposing pinch zoom for
that reason. I think the map examples are deceptive. You
could end up devoting too many resources. The author would
think you could load high resolution as you zoom in, but it
would be for the whole page. In the map example the author
needs more control than responding to a zoom MQ. I don't
think this is something we would be interested in.
dino: It would be difficult to spec what would be used. What
labels would intersect etc. You can't do a staticDOM on a
pinch zoom level. There would be a lot of code on every
frame.
Florian: Even though in the general case this doesn't work, but in
some specialized cases you can have this. You can have a
custom MQ with JS that could work.
dino: It could be a case where it makes sense in a containment
element that would never re-layout.
Florian: For some simple examples it might work out.
dino: You can think of it as another way to do it where instead of
different resources you're swapping.
tantek: Can you get the zoom level in JS?
dino: Sometimes, depending on the browser.
tantek: Well what the MQ would be relying on.
Florian: In a mapping situation with just pinch, you don't
intercept a touch event.
tantek: That's not the question. In maps today they do take over
all the mouse events and don't let the browser zoom. What
I'm talking about is there a way for a web page to just
query.
iank: Some Google apps do this, but it's horrible.
tantek: I'd argue that if you're interested in this we should do
that first and before that a MQ is premature.
MaRakow: This is, it seems you're trying to have a MQ that's the
ratio of CSS pixels to screen pixels. I would echo the
same concern that this isn't going to be 1:1 with real
map scenarios in reality. Trying to do this as a MQ
implies the switch would be immediate upon crossing that
threshold. I think some browsers defer that activity to a
later point.
MaRakow: I think to emulate a native pinch zoom by increasing
fidelity I think needs to be more sophisticated. I do
think there might be a good case to detect your screen to
local CSS pixel ratio. I can see that, though maybe not
as a MQ.
liam: There's also an interaction with a11y issues. When I zoom in
on a map I do it because I can't see the details. If the
details change I'm going to be frustrated. There's a
difference between zooming in for details and for what's
there.
tantek: Talking about this in theory is pointless. The wide
variety you could do is incredible. All the parallax stuff
added to scroll, for example. We don't have a MQ for
scrolling either. I want to keep pushing back and saying
no this is premature. Let's start with a simple JS DOM API
and see what people build and we can see if there's a
pattern in what people build.
<tantek> e.g. http://www.sbs.com.au/theboat/ (parallax example)
dbaron: It also focuses most on the most global zoom. Many things
want to be just this local document zooms and not say
someone is in the middle of zooming your be app. Some
browsers might use zoom to show it, not the webpage
reacting to that.
Florian: This is an interface that happened in old Opera where you
have a zoom out preview of your content and MQ starts
making things strange, that doesn't quite work.
Florian: Being liam's reasons, I'm not even sure the API from
tantek is right because even the magnifying glass is just
to make things bigger. I'm reluctant to hijack things.
There are good things to do here, but I'm hesitant to
have the problems.
liam: There is an analogy to open type fonts. They can remove
detail when the font is rendered small. There's precedent
for this kind of behavior. But you don't change E to W as
you zoom, but you can change serif to be flat instead of
curved. I could see merit in that for SVG, but the set of
use cases is different. That's done partly for making
rendering fast. Fetching a network resource would slow
things down.
tantek: Thats' what Google maps do.
Rossen: This is almost like saying you shouldn't do xhr based on
user interaction. It's overstating.
tantek: Authors can do stupid thing, that's not a for or against.
zcorpan: For the high resolution use case, there's srcset for the
x descriptor. When the user zooms in the browser can load
high resolution?
Florian: And that works better than MQ. The trigger points for MQ
are basic. The logic for SourceSet approach is left to
the browser and it can be smart.
zcorpan: So if you start zoom in and you load the high image,
there's no reason to download the low resolution.
Florian: And in MQ if you go up and down it reloads every time.
ed_paris: It seems the group doesn't agree with publishing. Do we
want to resolve?
heycam: It sounds like starting with JS API to expose zoom levels
and events when zoom level changes.
Rossen: Yes. That is an old discussion we had in Shenzhen where
there was a spec that was supposed to be written by
various members of the group and this didn't go well.
Rossen: I think this is something that comes up more and more. We
better get this spec done and document the different zoom
types and then expose some minimal OM hooks so that people
who care can build.
dino: One thing that put me off it is any time the topic was
brought up the response was we agree and you should do it
our way. So maybe we should agree that we should come up
with a new way.
Rossen: I think there's a strong signal that we need something.
Florian: In terms of exploring the different types, today's
proposal does a good job of looking at the different
types of zoom and how they interact.
tantek: Rossen I'm not seeing the strong signal that you are.
tantek: Which is why I'm advocating for the JS API for people to
experiment and develop use cases.
<tantek> also, zoom property?
<tantek> are you (Rossen) going to drop that?
Rossen: JS API is fine, I wasn't suggesting anything.
dbaron: What Rossen is saying is before we have the API we should
have a list of what the different types of zoom are and we
don't have it.
Rossen: In our implementation we've been trying to reduce the
crazy things we were trying to do before.
Rossen: I proposed a spec in the NY F2F on the zoom property.
smfr: I was waiting on you for sites that do that.
shane: I've collected data.
Rossen: There were very few sites using zoom. There was one site
trying to use zoom for some really weird reason and
getting lucky, but as soon as you throw in different API
and other user settings, it was a mess.
birtles: Before we get on the zoom property, can we tie up the
previous conversation?
birtles: What is lacking in the current analysis of the zoom types?
dbaron: In that document? I couldn't understand the types so I
couldn't map.
birtles: So we need more data?
tantek: Is that document in IRC?
several: yes
birtles: I wasn't sure what use cases are lacking? The property
isn't abstract, it is for maps they want to use it for.
dbaron: I think a lot of people are saying this is not a good way
to do maps.
birtles: I'd be curious for a way ahead. KDDI was looking at
pictures with media attr and I think that's where MQ
entered the equation. I think it's clear that MQ in the
general case isn't for this. I think high resolution
photography use case isn't clear. You have low and high
resolution and want to break up the tiles so just source
doesn't address that.
hober: Once you start talking tiles it's custom.
tantek: Tiling is the abstraction that covers maps and these
photos.
birtles: They had some use cases covering this type of feature. I
think it's clear that MQ isn't the way forward. There's
more forward and for the tiles which is the way forward.
ed_paris: Do we need a formal conclusion?
ed_paris: I think that was the last FX topic?
<break=15min(ish)>
<fantasai> ACTION fantasai to add note about baseline-table property
<trackbot> Created ACTION-717
Received on Monday, 14 September 2015 17:59:58 UTC