Skip to content

Commit c6ba7f9

Browse files
committed
1 parent 14a7026 commit c6ba7f9

File tree

3 files changed

+90
-56
lines changed

3 files changed

+90
-56
lines changed

org/w3c/css/properties/css3/fontface/CssAscentOverride.java

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//
22
// Author: Yves Lafon <ylafon@w3.org>
33
//
4-
// (c) COPYRIGHT MIT, ERCIM, Keio, Beihang, 2018.
4+
// (c) COPYRIGHT W3C, 2018.
55
// Please first read the full copyright statement in file COPYRIGHT.html
66
package org.w3c.css.properties.css3.fontface;
77

@@ -11,9 +11,14 @@
1111
import org.w3c.css.values.CssIdent;
1212
import org.w3c.css.values.CssTypes;
1313
import org.w3c.css.values.CssValue;
14+
import org.w3c.css.values.CssValueList;
15+
16+
import java.util.ArrayList;
17+
18+
import static org.w3c.css.values.CssOperator.SPACE;
1419

1520
/**
16-
* @spec https://www.w3.org/TR/2021/WD-css-fonts-4-20210729/#descdef-font-face-ascent-override
21+
* @spec https://www.w3.org/TR/2026/WD-css-fonts-5-20260303/#descdef-font-face-ascent-override
1722
*/
1823
public class CssAscentOverride extends org.w3c.css.properties.css.fontface.CssAscentOverride {
1924

@@ -52,7 +57,7 @@ public CssAscentOverride() {
5257
*/
5358
public CssAscentOverride(ApplContext ac, CssExpression expression, boolean check)
5459
throws InvalidParamException {
55-
if (check && expression.getCount() > 1) {
60+
if (check && expression.getCount() > 2) {
5661
throw new InvalidParamException("unrecognize", ac);
5762
}
5863

@@ -61,24 +66,31 @@ public CssAscentOverride(ApplContext ac, CssExpression expression, boolean check
6166
char op;
6267
CssValue val;
6368

64-
val = expression.getValue();
65-
op = expression.getOperator();
69+
ArrayList<CssValue> values = new ArrayList<>();
6670

67-
switch (val.getType()) {
68-
case CssTypes.CSS_PERCENTAGE:
69-
value = val;
70-
break;
71-
case CssTypes.CSS_IDENT:
72-
if (getAllowedIdent(val.getIdent()) != null) {
73-
value = val;
71+
while (!expression.end()) {
72+
val = expression.getValue();
73+
op = expression.getOperator();
74+
switch (val.getType()) {
75+
case CssTypes.CSS_PERCENTAGE:
76+
values.add(val);
7477
break;
75-
}
76-
default:
77-
throw new InvalidParamException("value",
78-
val.toString(),
79-
getPropertyName(), ac);
78+
case CssTypes.CSS_IDENT:
79+
if (getAllowedIdent(val.getIdent()) != null) {
80+
values.add(val);
81+
break;
82+
}
83+
default:
84+
throw new InvalidParamException("value",
85+
val.toString(),
86+
getPropertyName(), ac);
87+
}
88+
expression.next();
89+
if (!expression.end() && op != SPACE) {
90+
throw new InvalidParamException("operator", op, ac);
91+
}
8092
}
81-
expression.next();
93+
value = (values.size() == 1) ? values.get(0) : new CssValueList(values);
8294
}
8395

8496
public CssAscentOverride(ApplContext ac, CssExpression expression)

org/w3c/css/properties/css3/fontface/CssDescentOverride.java

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//
22
// Author: Yves Lafon <ylafon@w3.org>
33
//
4-
// (c) COPYRIGHT MIT, ERCIM, Keio, Beihang, 2018.
4+
// (c) COPYRIGHT W3C, 2018.
55
// Please first read the full copyright statement in file COPYRIGHT.html
66
package org.w3c.css.properties.css3.fontface;
77

@@ -11,9 +11,14 @@
1111
import org.w3c.css.values.CssIdent;
1212
import org.w3c.css.values.CssTypes;
1313
import org.w3c.css.values.CssValue;
14+
import org.w3c.css.values.CssValueList;
15+
16+
import java.util.ArrayList;
17+
18+
import static org.w3c.css.values.CssOperator.SPACE;
1419

1520
/**
16-
* @spec https://www.w3.org/TR/2021/WD-css-fonts-4-20210729/#descdef-font-face-descent-override
21+
* @spec https://www.w3.org/TR/2026/WD-css-fonts-5-20260303/#descdef-font-face-descent-override
1722
*/
1823
public class CssDescentOverride extends org.w3c.css.properties.css.fontface.CssDescentOverride {
1924

@@ -52,33 +57,39 @@ public CssDescentOverride() {
5257
*/
5358
public CssDescentOverride(ApplContext ac, CssExpression expression, boolean check)
5459
throws InvalidParamException {
55-
if (check && expression.getCount() > 1) {
60+
if (check && expression.getCount() > 2) {
5661
throw new InvalidParamException("unrecognize", ac);
5762
}
5863

5964
setByUser();
6065

6166
char op;
6267
CssValue val;
68+
ArrayList<CssValue> values = new ArrayList<>();
6369

64-
val = expression.getValue();
65-
op = expression.getOperator();
66-
67-
switch (val.getType()) {
68-
case CssTypes.CSS_PERCENTAGE:
69-
value = val;
70-
break;
71-
case CssTypes.CSS_IDENT:
72-
if (getAllowedIdent(val.getIdent()) != null) {
73-
value = val;
70+
while (!expression.end()) {
71+
val = expression.getValue();
72+
op = expression.getOperator();
73+
switch (val.getType()) {
74+
case CssTypes.CSS_PERCENTAGE:
75+
values.add(val);
7476
break;
75-
}
76-
default:
77-
throw new InvalidParamException("value",
78-
val.toString(),
79-
getPropertyName(), ac);
77+
case CssTypes.CSS_IDENT:
78+
if (getAllowedIdent(val.getIdent()) != null) {
79+
values.add(val);
80+
break;
81+
}
82+
default:
83+
throw new InvalidParamException("value",
84+
val.toString(),
85+
getPropertyName(), ac);
86+
}
87+
expression.next();
88+
if (!expression.end() && op != SPACE) {
89+
throw new InvalidParamException("operator", op, ac);
90+
}
8091
}
81-
expression.next();
92+
value = (values.size() == 1) ? values.get(0) : new CssValueList(values);
8293
}
8394

8495
public CssDescentOverride(ApplContext ac, CssExpression expression)

org/w3c/css/properties/css3/fontface/CssLineGapOverride.java

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
//
22
// Author: Yves Lafon <ylafon@w3.org>
33
//
4-
// (c) COPYRIGHT MIT, ERCIM, Keio, Beihang, 2018.
4+
// (c) COPYRIGHT W3C, 2018.
55
// Please first read the full copyright statement in file COPYRIGHT.html
66
package org.w3c.css.properties.css3.fontface;
77

@@ -11,9 +11,14 @@
1111
import org.w3c.css.values.CssIdent;
1212
import org.w3c.css.values.CssTypes;
1313
import org.w3c.css.values.CssValue;
14+
import org.w3c.css.values.CssValueList;
15+
16+
import java.util.ArrayList;
17+
18+
import static org.w3c.css.values.CssOperator.SPACE;
1419

1520
/**
16-
* @spec https://www.w3.org/TR/2021/WD-css-fonts-4-20210729/#descdef-font-face-line-gap-override
21+
* @spec https://www.w3.org/TR/2026/WD-css-fonts-5-20260303/#descdef-font-face-line-gap-override
1722
*/
1823
public class CssLineGapOverride extends org.w3c.css.properties.css.fontface.CssLineGapOverride {
1924

@@ -52,33 +57,39 @@ public CssLineGapOverride() {
5257
*/
5358
public CssLineGapOverride(ApplContext ac, CssExpression expression, boolean check)
5459
throws InvalidParamException {
55-
if (check && expression.getCount() > 1) {
60+
if (check && expression.getCount() > 2) {
5661
throw new InvalidParamException("unrecognize", ac);
5762
}
5863

5964
setByUser();
6065

6166
char op;
6267
CssValue val;
68+
ArrayList<CssValue> values = new ArrayList<>();
6369

64-
val = expression.getValue();
65-
op = expression.getOperator();
66-
67-
switch (val.getType()) {
68-
case CssTypes.CSS_PERCENTAGE:
69-
value = val;
70-
break;
71-
case CssTypes.CSS_IDENT:
72-
if (getAllowedIdent(val.getIdent()) != null) {
73-
value = val;
70+
while (!expression.end()) {
71+
val = expression.getValue();
72+
op = expression.getOperator();
73+
switch (val.getType()) {
74+
case CssTypes.CSS_PERCENTAGE:
75+
values.add(val);
7476
break;
75-
}
76-
default:
77-
throw new InvalidParamException("value",
78-
val.toString(),
79-
getPropertyName(), ac);
77+
case CssTypes.CSS_IDENT:
78+
if (getAllowedIdent(val.getIdent()) != null) {
79+
values.add(val);
80+
break;
81+
}
82+
default:
83+
throw new InvalidParamException("value",
84+
val.toString(),
85+
getPropertyName(), ac);
86+
}
87+
expression.next();
88+
if (!expression.end() && op != SPACE) {
89+
throw new InvalidParamException("operator", op, ac);
90+
}
8091
}
81-
expression.next();
92+
value = (values.size() == 1) ? values.get(0) : new CssValueList(values);
8293
}
8394

8495
public CssLineGapOverride(ApplContext ac, CssExpression expression)

0 commit comments

Comments
 (0)