- From: fantasai <fantasai.lists@inkedblade.net>
- Date: Tue, 19 Feb 2013 22:12:14 -0800
- To: "www-style@w3.org" <www-style@w3.org>
CSS3 Text --------- - Discussed interaction of word-break and line-break. - Wordsmithed line-break definitions - RESOLVED: Strike the two sentences "Support for this property is optional. It is recommended for UAs that wish to support CJK typography and strongly recommended for UAs in the Japanese market." - RESOLVED: (1) do language-specific justification and (2) and there are 4 values: none, auto, distribute and interword (3) auto includes inter-ideographic behavior - Plan to drop min/max values from letter-spacing, only have one value for tracking. - Need some plan to resolve conflict between a) Having ability to turn off letterspacing from justification (Needed for German) b) Having ability to combine tracking and letterspacing (Useful in CJK, possibly needed by legacy Japanese docs using 'text-justify: ideographic; letter-spacing: 0'.) - Plan to defer 'text-align: <string>' to L4. ====== Full minutes below ====== CSS3 Text ========= Scribe: dbaron <jdaggett> http://www.w3.org/Style/CSS/Tracker/products/10 jdaggett: This is list of issues on css3-text. Koji and Elika want to push text to LC. jdaggett: I think this spec needs to be restructured; I think we need to drop a lot of things, because for one reason or another, they're underspecified, experiments, or not clear. jdaggett: I think some of these issues are more than going in and tweaking the wording; I think we should defer some of them all together. word-break vs. line-break ------------------------- <jdaggett> http://www.w3.org/Style/CSS/Tracker/issues/291 jdaggett: I think we can start with a few of these that are relatively simple. <jdaggett> http://lists.w3.org/Archives/Public/www-style/2012Dec/0052.html <jdaggett> http://dev.w3.org/csswg/css3-text/#line-break jdaggett: so the text module has 'line-break' property followed by 'word-break' property jdaggett: These are to some extent governing similar things. jdaggett: These are somewhat based on IE properties, though IE has sort of deprecated... is it 'line-break'? Documentation says word-break equivalent to line-break? fantasai: That seems very unlikely; not the same thing. jdaggett: Both about where you want to have a soft wrap opportunity. jdaggett: 'line-break' is trying to give you general categories; 'word-break' is giving you escape hatches. fantasai: the other way around jdaggett: 'line-break' is giving general categories jdaggett: line-break has loose, normal, strict -- general categories fantasai: word-break is supposed to apply to entire text. General policy, controls breaking between letters. fantasai: line-break is supposed to control line breaking around punctuation. One exception for small kana. jdaggett: There's an interaction between these properties; overlapping, I'd say. fantasai: They overlap in that they both control breaking around small kana, but that's the only overlap. jdaggett: So let me ask one question: why can't these be unified? fantasai: I tried; people want to vary them independently. jdaggett: One property with keywords for one or both? jdaggett: word-break is unfortunate as a property name; really about line-breaking glenn: implementations can be orthogonal to a certain degree, maybe completely <SimonSapin> word-break sounds like hyphenation fantasai: property names are historical; not much I can do, and I didn't have anything substantially better jdaggett: both apply to a similar category of things; would be better as one property jdaggett: unfortunately glenn is now implementing this for WebKit, so we're not just talking about the IE implementation jdaggett: only IE that has implemented these properties in the past koji: don't know about Firefox fantasai: working on, but don't have one jdaggett: so effectively properties only supported by one browser glenn: I know word-break partially supported by WebKit, and there's a patch for line-break. jdaggett: But you're working on that. Koji: glenn working on line-break; word-break is in Safari 3.0 glenn: I know that when I implemented line-break, including a large suite of tests, I did not have to take word-break into account. glenn: so it seemed orthogonal from a semantic perspective jdaggett: because 'word-break' only applies between letter breaking opportunities? glenn: word-break said that you can consider all possible soft breaks within a space-separated segment or not glenn: then once you consider soft opportunities then at that point the line-break property semantics came into play by defining what were soft-break opportunities and what were not glenn: ... in certain contexts, contexts being certain languages glenn: the semantics of the two properties were layered on each other so orthogonal to implement jdaggett: not sure how that's possible given that break-all and keep-all... text "except where forbidden by the line-break property" and "including those explicitly allowed by line-break" glenn: if it said keep-all, then you wouldn't consider any word-breaking in CJK glenn: so none of the soft breaks would apply glenn: if it said break-all, then all would apply glenn: if normal, then it allowed line breaking within words glenn: I was dealing with normal and break-all fantasai: if you do break-all and line-break: strict, then you're allowed to break between any two letters, except can't break before small kana fantasai: I thought this seemed weird, but was told people do that. glenn: I was just reading the definition of -ms-word-break: for break-all, behaves as normal for CJK text, but allows line-break to break normally for non-CJK text. glenn: so it excluded applicability for CJK text fantasai: because they break normally steve: CJK has kinsoku rules... smfr: are these 2 properties consulted at different times in the linebreaking algorithm, or do they all contribute to the possible breaks after which you decide where to break? jdaggett: I'm not sure I believe glenn's assertion jdaggett: where you said first deal with word-break and then deal with line-break jdaggett: seems like with keep-all specified, you still have to consider what line-break is stevez: common use in CJK seems to be to allow western words to be arbitrarily split rather than kept together stevez: no idea what this would mean in Arabic * fantasai notes it's defined for Arabic in css3-text glenn: IE documentation also says keep-all is suitable for non-CJK text including small amounts of CJK, break-all suitable for CJK text including small amounts of non-CJK text jdaggett: so the question is: will this break / be different from the IE implementation? glenn: The IE documentation claims that the unprefixed property is deprecated fantasai: ... in favor of the prefixed one fantasai: probably because there was a previous revision of css3-text where I tried to combine them into one thing glenn: I have to admit, in testing of my patch, I did not create a combinatorial test of line-break and word-break; I just assumed word-break was normal and tested the line-break feature jdaggett: has it landed? glenn: landed, but pulled out for performance regression, not functionality jdaggett: would we in the near future have something to test with? glenn: I'll be resubmitting in the next few weeks jdaggett: important to figure out if there are differences in the implementation and if those differences are important glenn: that's reasonable stevez: I'm more concerned that this is aimed at western text in a CJK setting fantasai: depends on the value stevez: It's still western in CJK, not south asian, not SE asian, not middle-eastern, and it is ill-defined for those cases, all of which have nuances fantasai: It's defined, it's just not useful stevez: it defines letters; for S asian, which work in terms of syllables rather than letters, it's ill-defined jdaggett: what they're saying is it's not useful jdaggett: is there something here that would be useful for those contexts? jdaggett: if this is unneeded, then it doesn't matter so much, but if there's something here that's needed, then that needs to go in the spec stevez: It just seems to me that letters are the wrong thing to define this in terms of. fantasai: Letters are defined to be grapheme clusters in L* or N* categories stevez: but syllables are not grapheme clusters jdaggett: I think the question is much more about if this applies in contexts other than CJK. Koji: is the question about whether to merge these 2 into a single property? jdaggett: In response to what Steve is saying, that these seem to be western/CJK only... stevez: Once sentence in here that's impossible to satisfy: when scripts that are shaped are broken, required to be shaped as not broken... but there are required ligatures that you can't break glenn: [missed]. glenn: example 4 shows 3 words with break opportunities between each connecting character (and non-connecting) stevez: I understand connecting/non-connecting, but ligatures are worse than that. glenn: I think ligatures are second order to connectedness [discussion of lam-alef] [scribe can't keep up] glenn: what this doesn't do is discern the distinction between breaking between glyphs vs. characters glenn: so if result of char->glyph mapping produced ligatures and then connecting glyphs, that's a little different than saying break at the characters that correspond to the output glyphs. glenn: that's not really defined here stevez: where are letters defined? * fantasai trying to remember what was the goal of this discussion, and fails jdaggett: "A letter for the purpose of this specification is a character belonging to ..." fantasai: characters are similarly redefined to be grapheme clusters jdaggett reads definition stevez: syllables are not grapheme clusters fantasai: if you want to deal with breaking between syllables, we could add new values, but that's not a requirement anyone has given me line-break ---------- jdaggett: One issue I have is about line-break: the text uses SHOULD language; I think that makes the entire behavior of this property a SHOULD behavior. I think UAs should be required... fantasai: would changing recommended to required help? glenn: in many CSS specs [missed] jdaggett: I think what fantasai said would be sufficient. jdaggett: What I don't like is that it's using vague terms -- in the hands of an implementor, you'll get implementations that do different things. fantasai: what's vague? jdaggett: what's loose, normal, and strict, for non-CJK languages? glenn: it's clearly defined fantasai: It says "If the content language is C, J, or K..." fantasai: It says allow X, disallow Y, and if the content language is C J or K then also Z jdaggett: For a different language, are there different rules that are stricter or not stricter? [discussion about which part of the spec they're reading] Koji: first bullet applies to all languages, second applies to C J and K jdaggett: c'mon, it's about Kana fantasai: Can you quote the part of the text you have a problem with? jdaggett: As defined, this says nothing about what is done for other languages fantasai: you do nothing [multiple discussions] <glenn> http://trac.webkit.org/wiki/LineBreakingCSS3Mapping glenn: Link to table derived from this spec, with precise definition covering all languages. glenn: if you look at the header of that table, you see ICU open/close parentheses, loose open/close parentheses glenn: That's the column for if it's not CJK, what does loose mean? glenn: - means "as otherwise defined by the default line breaking behavior" glenn: So there are some fallbacks to the default linebreaking behavior defined earlier in the spec glenn: so for any language you can determine which applies stevez: you created this table how? glenn: by interpreting the spec that fantasai wrote glenn: and factoring in the use of ICU and UAX14 glenn: what I'm trying to say is that there's a definitive, unambigious answer about what normal, loose, and strict, mean for all languages, from my reading of the spec jdaggett: (1) says RECOMMENDED fantasai: fixed now jdaggett: (2) not saying anything about other languages jdaggett: in the gestalt of the property, we've got 7 categories for line breaking... if I apply this to all languages is it really the case that loose and strict in this context should really never have a different meaning? fantasai: it's possible we might want to do that in the future fantasai: for this level there are no behavior differences for non-CJK text glenn: this does provide specific results for CJK fantasai: we've gotten no feedback for needs from other languages stevez: the table given does affect other languages stevez: loose sets before/after breaking on ellipsis, and doesn't for strict and normal stevez: ellipsis seems to me to be non-language-specific stevez: Is it only the ellipses that are in a CJK sequence, or all of them? fantasai: We don't say that it's for certain languages... it's for these characters, period. glenn: This table on ellipsis character refers to a specific codepoint, tied in to default behavior of ICU glenn: B/A mean break as permitted before or after glenn: I agree with jdaggett that recommended [...] fantasai: That's done already. <fantasai> RELOAD THE PAGE glenn: if the user-agent implements this property then I think it's done [...] Koji: RELOAD THE PAGE glenn: the fact that it doesn't define it for other languages I don't view as an issue; I agree with Elika glenn: If somebody comes forward and says that for Thai, we want X, then fine... jdaggett: for breaks after prefixes, currency symbols, why not define it in terms of currency symbols rather than specific codepoints? fantasai: Could you file that as an issue? <fantasai> ISSUE: Why aren't all currency symbols included in line-break rules? <trackbot> Created ISSUE-301 jdaggett: The original issue was about the confluence of the two properties. jdaggett: I think there was text added that clarified keep-all. fantasai: So I think we can move on. glenn: In order to address his comment about behavior for other languages, I think we should add a note... fantasai: There's one note on that already, should we have two? jdaggett: There's a line saying "support for this property is optional..."; I think this should be removed. <fantasai> "Support for this property is optional. It is recommended for UAs that wish to support CJK typography and strongly recommended for UAs in the Japanese market. " glenn: I agree. glenn: Support for the property is optional in that we don't have conformance criteria fantasai: we do glenn: not in 2.1 jdaggett: we shouldn't be talking about UAs specialized in a given market SteveZ: The person who disagrees is not in the room. (Håkon) SteveZ: Are you saying you don't want optional properties in...? jdaggett: the notion that it's optional is a redundant statement stevez: I don't think it's redundant at all. jdaggett: all browsers render japanese text fantasai: not all CSS implementations are browsers stevez: not all browsers are conformant <SimonSapin> http://weasyprint.org/docs/tutorial/#weasyprint-navigator stevez: this sentence is here so you can be conformant if you aren't supporting certain things jdaggett: there are a lot of properties in css that only apply in a certain context. We shouldn't be saying that if you're not involved in that context, it's optional. stevez: but it's not optional jdaggett: I don't think this is necessary, and we should remove it. stevez: Then we have to change the [forgot] steve: conformance to a module requires implementing all of the properties in the module correctly unless otherwise stated glenn: there's a section on partial implementations dbaron: The section on partial implementations what this WG insists that you do if you implement it partially. Implementing it partially doesn't mean you're conformant. dbaron: It means we recognize that implementations add features piece by piece, and states we want them to do it this way jdaggett: This is an unnecessary sentence; there are other properties in this spec equally CJK-dependent. jdaggett: We sholudn't be going through our specs and marking things optional... SteveZ: I personally don't care; I'd just rather not cycle back and end up in the same discussion. jdaggett: But I think Håkon was objecting to this property as a whole. SteveZ: I don't think he wanted to be required to do CJK support and vertical text support; I think his reason was largely concerned with implementing CJK. glenn: If you're asking for that particular sentence to be removed, is it safe to assume you also want to change the paragraph just before the bullets... "The precise set of rules in effect ... does recommend that" should also be removed, and the previous sentence for text wrapping should just end with a colon? glenn: you've asked to remove vague language like should and recommend jdaggett: without require, the entire property definition is left open glenn: do you want to remove that text? jdaggett: no glenn: that's inconsistent jdaggett: I'll raise issues on the mailing list and we can fight about this later. fantasai: Now we're deciding whether it's ok to have properties that are optional for conformance with the module. jdaggett: ... This whole module is about international text. stevez: Another way to meet what Håkon wants: note that says for implementations that do not deal with CJK text this property has no effect fantasai: not true; don't want to parse something you don't do something with fantasai: if the implementation doesn't support, it shouldn't parse or trigger @supports stevez: in this case, support was to do nothing fantasai: support should never mean do nothing glenn: there are some specific semantics here in non-CJK text. It prescribes specific meaning to strict/normal/loose for certain non-CJK text. jdaggett: You're just saying that if the language is not CJK it applies. However, the characters are ones that are only used in Japanese. jdaggett: except for ellipsis, maybe glenn: also hyphens glenn: U+2010, U+2013 jdaggett: but that's under language-specific glenn: so only ones are ellipses, U+2025, U+2026 jdaggett: if you're going to object, then we'll move it to the list and resolve it there jdaggett: it's a waste of time to talk about this; it's a non-important discussion jdaggett: I think we should remove the two sentences and go from there Koji: straw poll, and Håkon can object? jdaggett: can just ask if there are objections? Bert: Is there nothing that can be done about the ellipses... whole property for just two characters? jdaggett: We're talking about the sentence glenn: Yes, it would be nice if those 2 characters could be put in the CJK portion jdaggett: There aren't implementations that just wholly ignore languages. fantasai: There used to be implementations that didn't support bidi at all. jdaggett: They're partial implementations... let's get on with our life. jdaggett: Especially for a spec that's all about international text stevez: I agree in general that there shouldn't be optional properties; fairly meaningless in an interoperable world. stevez: If you're saying this particular one is bad, I don't think there's that much of a case. jdaggett: I propose we resolve on striking these sentences. <koji> jdaggett proposed to remove "Support for this property is optional. It is recommended for UAs that wish to support CJK typography and strongly recommended for UAs in the Japanese market" RESOLVED: Strike the two sentences "Support for this property is optional. It is recommended for UAs that wish to support CJK typography and strongly recommended for UAs in the Japanese market." glenn: can I ask a follow-on? jdaggett: ok glenn: prior to the bullets, just above that: "CSS distinguishes between three levels of strictness in the rules for text wrapping. The precise set of rules in effect for each level is up to the UA and should follow language conventions. However, this specification does recommend that: " glenn: I propose removing all but the first sentence of that paragraph and ending with a colon glenn: The use of "recommend" makes everything in the bullets optional fantasai: Is there a need to discuss this? glenn: I don't like recommend; I like to see requires fantasai: RELOAD glenn: ok, I'm fine with that Bert: I had a question, just to verify... Bert: looking at the definition, letter refers to character; says characters have to have a Unicode category. But character is redefined as a cluster. fantasai: There's a definition; it's slightly complicated. text-justify ------------ <jdaggett> http://www.w3.org/Style/CSS/Tracker/issues/295 jdaggett: If there aren't other issues on line-break, I'd like to talk about text-justify jdaggett: So the text-justify property: one of the more important issues I've logged about the spec. jdaggett: I don't think we should move to last call with text-justify as specified jdaggett: see http://www.w3.org/Style/CSS/Tracker/issues/295 <jdaggett> http://lists.w3.org/Archives/Public/www-style/2012Dec/0057.html fantasai: what we've figured out so far that distribute value is needed; commonly opted into for CJK typography fantasai: an inter-ideographic is needed, since default does not allow justification of CJK, so people use it to opt in to CJK justification jdaggett: justification and line breaking are to some degree language dependent jdaggett: so why can't that be something that user agents simply do based on the language? jdaggett: http://dev.w3.org/csswg/css3-text/#text-justify jdaggett: shows values: none / inter-word / ... / kashida values in spec jdaggett: these are the categories jdaggett: I posted reactions that other people have had to this. jdaggett: I don't think this is the right way to specify modifications to the justification algorithm jdaggett: I think we should have a property more about the specific behavior of those things, and then abstract out across languages... e.g., in Thai, if you want to talk about different types of justification. Focus on what it's trying to do. jdaggett: These came out of IE; if you look at the definition of these, it's vague, and not clear what they're doing. Koji: we made it clearer jdaggett: we've given a definition, but I'm not sure what the use case is jdaggett: e.g., for inter-cluster jdaggett: we discuss this at [???]. Led to action item for use cases, led to what's now in the spec. Look from author perspective. Why would author use this? If it's for Thai, why would an author choose this? fantasai: default behavior is for spaces, this distributes between Thai clusters jdaggett: how is that different from distribute? fantasai: that expands Latin characers also fantasai: Definitely distinct from default behavior, you only turn it on in certain situations. fantasai: distribute says to justify between Latin characters just as if they're CJK characters Koji: look at figure jdaggett: not clear whether space after [go] is a fullwidth space or ... fantasai: Can't show all differences between all the values without mixing all the scripts, and nobody does that in real text. fantasai: if you want us to go scan pictures of stuff, we can find pictures to scan jdaggett: these are defined in terms of breaking Unicode character space into sections, in a way that doesn't seem natural to a lot of people jdaggett: people like John Hudson who posted a detailed response that you didn't answer... "why are you breaking scripts like this?" jdaggett: you're defining categories, set of scripts are defined way below... doesn't make sense to a lot of people, which John Hudson was saying http://lists.w3.org/Archives/Public/www-style/2012Dec/0057.html jdaggett: The point I'm trying to make is what he says in the second quote, starting with "Again, I come back to my previous point"; now I'm paraphrasing what he said. glenn: what is your issue on Thai? jdaggett: not Thai... we're breaking this down in a way that's not at all clear to implementors, and using a system of categorizing Unicode scripts not based on standard or commonly used way of breaking it down glenn: I think we can do better examples, like for Thai. It's often the case that you distribute between clusters. glenn: Unfortunately this example doesn't show any combining vowel signs glenn: or combining tone marks glenn: if the example had a consonant with a combining vowel sign and combining tone mark, it would be clear in the example how inter-cluster differs from distribute glenn: That's frequently used in Thai signage, newspapers jdaggett: you're saying the Thai characters are distributed differently from the latin characters? glenn: yes stevez: comes back to the definition of character. The definition of character now in the spec muddles that up. jdaggett: Trying to look at it from a high level and classify high level categories of differences is a safe way to do this. It's going to be error-prone. It's not specified in a way that it's going to be interoperable. glenn: grapheme clusters is defined by Unicode. fantasai: categorization of scripts is not, it's in terms of how they justify jdaggett: ... priorities ..., difference between one value and the other is the priorities jdaggett: I'm still unclear about the use case. glenn: Inside of publishing companies there are probably style rules for how to deal with multi-scripts distribution. glenn: I think you're probably not going to find it outside of that context. glenn: so anything that's definitive in some context is better than the current state of affairs which is pretty random glenn: if we don't have script prioritization specified properly, we could improve jdaggett: I think we should specify in terms of restrictions, "prioritize X less", "prioritize Y last"... we could cover all use cases that way, and leaves you not having to define broad script categories. -glenn Koji: I still don't understand what you mean by use cases Koji: use case for inter-ideograph is japan, china, etc. jdaggett: That's my entire problem with this property. If it's for CJK, why can't you just go based on the language. Koji: that's not what browsers do already for justification jdaggett: but it could easily be defined that way jdaggett: and defining it that way gives UAs more leeway to figure out what the right things, and we don't have to put a lot of effort into detailing script categories jdaggett: you're talking about pushing this to last call; it's not clear if it's the right direction Koji: It's implemented for WebKit and IE; everyone's using it jdaggett: part of the problem is that here, we don't know if implementations match <fantasai> http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0A%3Cstyle%3E%0Ap%20{%20width%3A%202.9em%3B%20border%3A%20solid%3B%20}%0A%3C%2Fstyle%3E%0A%3Cp%20lang%3Dzh%3E%0A%E8%BF%99%E6%98%AF%E4%B8%80%E4%BA%9B%E4%B8%AD%E5%9B%BD%E5%AD%90%E3%80%82 <fantasai> Testcase above shows that implementations don't use lang values to turn on proper justification.... jdaggett: MS people haven't documented their impl stevez: I'm not sure what you're complaining about jdaggett: This spec is defining script categories that are not defined elsewhere; we're coming up with our own set of categories. stevez: There's no external definition of script categories that we can point to stevez: is that part of your point? jdaggett: I'd put it as that we're making groupings that are unique to this spec stevez: there are groupings that are in common use today stevez: there are different justification rules in common use today for groups of scripts * fantasai wonders if we can avoid a lot of this by removing inter-cluster jdaggett: another way to think of them is not breaking them down by script but saying "these scripts share this behavior", and defining property values based on these behaviors, not saying property values say "value means X for this set of scripts and Y for this set" * fantasai is confused what the difference is between the two things above stated stevez: other problem with this outline, I think you're saying.... too many combinations of script X in Y to come up with a reasonable set of finite properties to adequately control every combination stevez: It might be better to be able to, with a script pseudo-element, to label how a fragment of text is to behave in justification stevez: that doesn't get me into the combination thing; the combinations come about by simultaneously trying to apply the set of pieces fantasai: I think that's overkill for 99.99% of the population. stevez: I think the default rules would work for 99% of the population. stevez: e.g., For Latin, the rules are word-spacing, then letter-spacing; for Japanese, normally no spacing at all so need a value to say space the letters; for Thai and most of S Asian I would use cluster spacing jdaggett: is there a tradition of justification fantasai: for Thai and many Indic, yes [details] jdaggett: if I look at Thai as an example dbaron: Koji was saying that browsers don't implement lang-dependent justification rules today dbaron: Just because they don't do it today, doesn't mean the solution is that authors should specify it, if lang-dependent rules would be sufficient. dbaron: If we can do things with same amount of code, but no new properties, then that's better. Koji: I think what we came down... WG wanted not to do language-dependent ... not introduce justification-language: japan jdaggett: nobody wants justification: japan. But browsers already have some line-breaking behavior based on language; it makes equal sense to do the same for justification. jdaggett: ... and what I don't quite get... if a Japanese author says text-justify on a piece of text... are there multiple styles they'd actually use? various: yes jdaggett: then we need values... but do these values make sense to the author? Do the values describe the different styles? Koji: if you want a space between characters, use inter-ideograph... people understand that fantasai: 2 typical styles in japanese: compress around extra spaces around punct; otherwise expand certain things, but don't expand between Latin fantasai: ... or just equally space everywhere (text-justify: distribute) -- less common, but definitely used. jdaggett: I can see the use case for text-justify: distribute. jdaggett: seems like what you want are ways to say "allow this" or "enable that" jdaggett: then it's very clear that for this set of codepoints I'm allowed to expand the box, but at a lower priority jdaggett: that way you're creating property values that make sense to what the author wants to do jdaggett: not some "this is what's best for japan" Koji: then if ... tools work correctly, that changes layout Koji: you're saying to make justification language-dependent jdaggett: yes stevez: he's saying to put in language-specific rules for justification, and only have controls where they're needed to override language-specific rules jdaggett: yes dbaron: If you're doing lang-specific rules for justification dbaron: Could use rules specific to the language of the block dbaron: Within the block, mark sections as other languages dbaron: but not affect the justification choice for the block stevez: so you can distinguish between japanese-in-english and english-in-japanese, which is an important distinction since the rules are different jdaggett: the meta-point here is that this property seems like we're only doing it because IE defined it jdaggett: ... and that I see this as not the right way to do this stevez: slightly differently: we're doing it the way we're doing it because IE defined it. Can we step back and say what is really needed to do the controls that we need? stevez: we recognize the need for a property (normal vs. distribute, maybe other cases) stevez: but I think John's complaint, do what IE/Word did... is that really the most reasonable way of doing this? Koji: I understand your point, but that's not what we want this way Koji: my belief is that layout language and content language are different Koji: I do not want layout dependent on language we use Koji: maybe different pseudo-element can work fantasai: no way to get correct justification by having somebody write the algorithm in CSS syntax... would just be a nightmare, e.g., with different punct characters behaving differently fantasai: doing high-quality justification for a language can't be done reasonably making the user define the algorithm in CSS syntax fantasai: it should be a one-line request for a type of justification stevez: I sort of agree with what you're saying ... jlreq talks about justification and categories therein. But it largely punts on foreign language included in japanese stevez: it says what happens at the boundary, but not necessarily what's inside the foreign piece stevez: I think david's point that you need both a paragraph language and a specific language inside that may change things is another important piece to this stevez: ... which doesn't really get picked up in what we're talking about fantasai;as far as the switches needed: in Japanese need regular vs distribute fantasai: ... in Latin, whether letter-spacing can expand fantasai: ... and in Arabic, ideally, spaces vs. cursive elongation (Kashida) fantasai: ... which is common in newspapers fantasai: Those are the sets of switches that we definitely need to distinguish between jdaggett: example: cursive latin in Japanese text jdaggett: could be any number of styles applied there... can't be called Kashida (it's Latin) Scribe: Bert jdaggett: In that context, you need to say how each one of those blocks will expand jdaggett: It may be that you only want to expand on word spaces jdaggett: In that context, you need to say how each type of block is going to expand. jdaggett: Maybe in the case of Latin, you want to stretch the characters. jdaggett: not widely supported, but neither is kashida. jdaggett: Picking those pieces is not necessarily a single setting. jdaggett: This single property sets all of these. jdaggett: Currently you have kashida and inter-ideogrpahic. jdaggett: Cannot allow them together. fantasai: Maybe in some future level we allow value combinations. fantasai: The example you gave is soooo obscure... we'll never get there. fantasai: Why ever discuss this even in the 15 years? jdaggett: It captures the problem that this prop is trying to define. jdaggett: Opaque to the user. fantasai: We can make it a shorthand in the future, jdaggett: Because we are defining it this way... jdaggett: My alternative is to not define it at this level. jdaggett: Only 'auto' and 'sdtsitribute' and rest in level 4 fantasai: What about 'none'? jdaggett: What's it for? fantasai: accessibilty. Can turn off justification in user stylesheet. SteveZ: What's the harm with none? jdaggett: text-align: left is the same SteveZ: Not the same when you mix arabic and latin. fantasai: Overriding text-align also turns off centering, end-alignment. SteveZ: justification shouldn't have been in text-align. fantasai: auto & distribute would get you japanese distinguishing between two set of rules, that's fine. fantasai: But why not 'inter-word'? Could use it to turn off letterspacing. SteveZ: You can set letter-spacing to 0 [discussion about what letter-spacing with a value does to justification] fantasai: Don't know if anybody cares if you get justification if you set letter-spacing to a positive value. SteveZ: letter-spacing: max? jdaggett: Can add some value. fantasai: text-justify [missed] SteveZ: jdaggett complains about it being a hodgepodge jdaggett: If we can resolve to make text-justify then we can resolve to deal with letterspacing. koji: webkit and ie do this property already. jdaggett: How can you NOT say that japanese behaves [...] koji: there are many docs without a lang attribute koji: Those documents will break jdaggett: this property that was never defines is somehow already defined by practice... fantasai: We have that situation all the time. fantasai: Not a circular referecne jdaggett: I'm not sure this is something that breaks if you treat in lang-specific manner. fantasai: If there is no lang attribute that may ok. fantasai: But there are docs out there there that have no lang attr and specify inter-ideograph. fantasai: They should continue to justify. fantasai: Two ways. fantasai: other is to have the initial value do that fantasai: MY pref would be for auto to just work for japanese, even if lang is not specified. jdaggett: sniffing. fantasai: We don't sniff, those code points just justify. fantasai: You'd have to test if that is web-compatible, though. jdaggett: We don't even know how ie and webkit work. jdaggett: They haven't given any input. jdaggett: not on how it desirable. jdaggett: was an action on sylvain. jdaggett: still not done. jdaggett: for a LC, this property should not be like this. jdaggett: Explore this, is one option. koji: how can we make consensus? koji: both sides have said everything. <fantasai> text-justify: none | auto | distribute | inter-word fantasai: I propose to define text-justify with 4 values: none auto distribute and inter-word. fantasai: interword turns off letterspacing. fantasai: distribute as defined currently. fantasai: auto would need test cases to ensure that CJK is correctly justified with auto. jdaggett: that sounds good. Not sure about inter-word. plinss: sounds like a way forward. SteveZ: inter-word not good for thai. fantasai: no, but use auto for Thai. fantasai: If it turns out to be an issue for Thai we can change it. fantasai: Thai community hasn't been demanding features yet. fantasai: However japanese has had very strong comments. plinss: can we resolve on that? koji: auto includes inter-ideograph fantasai: as long as the language-specific rules do not forbid it, yes. plinss: so, as long as there is no reason not to. fantasai: if you tag something as french and it has CJK, you may want to not space it. fantasai: but if untagged, use ja behavior RESOLVED: (1) do language-specific justification and (2) and there are 4 values: none, auto, distribute and interword (3) auto includes inter-ideographic behavior <fantasai> Discussion on inter-word continues after the break <fantasai> because it interacts with letter-spacing issue [dbaron and tantek leave for airport] -dbaron -tantek Scribe: fantasai letter-spacing -------------- fantasai: The letter-spacing property is defined so that if you apply any spacing value other than the initial value, it suppresses justification except at spaces. fantasai: This means that you can't combine tracking with any sort of East Asian justification fantasai: The proposal is to have letter-spacing: <length>; apply tracking, but leave justification alone fantasai: in other words it sets the optimal spacing between letters, not a fixed spacing szilles: If I have 2 different trackings on a single line szilles: What happens under justification? fantasai: I have no idea jdaggett: Maybe discuss that on www-style <jdaggett> discuss on www-style the new proposal fantasai: Anyway, you were suggesting to remove extra letter-spacing values jdaggett: The justification algorithm isn't specified, so that means the values of letter-spacing as defined in the spec, are not inter-operable jdaggett: These provide very fine-grained control jdaggett: This winds up being something they tweak to handle e.g. bad justification in webkit jdaggett: Some other implementation has better justification jdaggett: But has to deal with these values of letter-spacing, which are tuned to webkit's implementation, and make no sense in this new implementation ... szilles: If we don't say something about justification spacing, when it happens, and how much, then implementations will give different results. jdaggett: If you don't have sufficiently high quality justification algorithm, then this control becomes a crutch jdaggett: And then existing content will constrain future implementations. jdaggett: Thing that concerns me here, usually letter-spacing is used by ppl in design applications where they are setting the value empirically; they're testing against an implementation jdaggett: Usually from design to presentation, all same implementation jdaggett: That's not the case with the Web jdaggett: If you get to point where you need to set this property, then you're already dependent on particular implementation jdaggett: You're setting it so you get what you see in WebKit szilles: I don't think that's the common use. szilles: Can be used that way szilles: But common use is to control the amount of letter-spacing that's allowed to happen jdaggett: Common way this is abused is to make up for deficiencies in hyphenation algorithm jdaggett: Same way InDesign gives controls you shouldn't be using to do this szilles: InDesign case it's ok, because wysiwyg in results jdaggett: If you're proposing a simplified property, willing to defer this to that discussion. fantasai: I want to close off css3-text and send to CR, so if we're redesigning the approach, want to push to L4 jdaggett: But you were saying that we needed to revise letter-spacing from 2.1 ... fantasai: The issue was that 2.1 gives the ability turn off letter-spacing for justification by setting to other than normal, e.g. setting to 0 fantasai: And that's important for some languages like German, the ability to turn that off. fantasai: I was thinking that we could let letter-spacing: <length> allow justification, and use text-justify: inter-word; to turn that off szilles: Suggest letter-spacing-control property that would limit the amount of justification in letter-spacing szilles: John said he's concerned about variety of different implementations using this capability differently szilles: So I suggested that we could define a triggering of the use of letter-spacing-based justification based on a measurement of white space szilles: Most recent idea is that if I increase word spacing by more than X%, then I will trigger the use of up to the max of letter-spacing to reduce the word space szilles: Only reason I put latter in is to make it more clear as to when it's going to happen szilles: How much of it is used is still left up to the algorithm. Might want to do river elimination or something. szilles: The problem I have is that the use of inter-word is binary, not enough control in it. fantasai: Ok, that makes sense. szilles: If we did that, then I'm ok to have current thing have only one value jdaggett: Should we resolve on changing the current definition of letter-spacing to one value? Bert: Depends on what else we do. szilles: Think we should go back to letter-spacing define tracking only. szilles: Controlling justification piece should be separate szilles: So I can live with doing that. jdaggett: Think we have ideas here. Not sure we have something enough to resolve on. jdaggett: Resolve on a single value? szilles: Right now we have inter-word in there, want to drop that fantasai: Think we might still need it in Korean, have to investigate. But purpose there can be not about whether letter-spacing can be used, but about whether justification tries to use spaces only. szilles: Ok, that makes sense to me then. jdaggett: How about we resolve on a single value for letter-spacing, with action on fantasai to come up with wording that handles considerations above. fantasai: So if letter-spacing takes a single value, current definition forbids tracking with justification fantasai: So when letter-spacing is used, forbids any justification other than at spaces, e.g. no justification between characters/clusters in Japanese or Thai fantasai: I'm ok to having only one value, just have a concern with this situation. koji: What about word-spacing? Bert: Have some trouble understanding what word-spacing means with three values [jdaggett and fantasai try to explain this] <jdaggett> what is the maximum value for word-spacing? Scribe: SimonSapin Bert: I was more surprised to see 3 values on word-spacing than on letter-spacing <jdaggett> is it the maximum *additional* spacing (i.e. width of the space + additional word spacing)? <jdaggett> or the maximum of (width of the space + additional space)? [fantasai draws an example] fantasai: the maximum refers to the max of increase to word-spacing from justification <jdaggett> let W = width of the space <jdaggett> L = width of letter spacing <jdaggett> A = variable additional spacing <jdaggett> max value of word-spacing = max(A) <jdaggett> ] SimonSapin: the used word-spacing is one length that is between the computed min/max fantasai: yes, they all refer to the same thing fantasai: yes, that formula is correct fantasai: CSS1 defines word-spacing as the additional space, and I can’t change that fantasai: with calc you can define calc(some value - 100%) to set the exact size of the space. plinss: letter-spacing happens on both sides of the space character plinss: so you get double letter-spacing between words fantasai: […] file an issue on German fantasai: you must not change letter-spacing for justification fantasai: we have to resolve the conflict between allowing Japanese letter-spacing for justification by default and not allowing it for German Bert: justify the last line (or only line) by increasing the font size? jdaggett: copyfitting. That’s hard character-based alignment ------------------------- Bert: text-align with a string value … looked at "tabbing" as done in word processors jdaggett: not much control on how it’s lined up plinss: very controversial Bert: the idea is not to have to use a table jdaggett: table with this makes implementers cry SimonSapin: yes fantasai: syntax may not be ideal, but the functionality gets annoying in any case with tables jdaggett: you want this working in table, wondering if it’s the right way fantasai: could defer to level 4 <jdaggett> agreed etc. ---- fantasai: other issues? jdaggett: none logged. Will review jdaggett: text-justify resolution means we can toss out at the appendix […]? fantasai: yes fantasai: Though redefining distribute to apply to Arabic could be interesting fantasai: or could keep definition of the cursive category plinss: adjourned Meeting closed.
Received on Wednesday, 20 February 2013 06:12:43 UTC