IdentifierManager fstVM = (IdentifierManager)vMgrs[fst];
IdentifierManager fvVM = (IdentifierManager)vMgrs[fv];
IdentifierManager fwVM = (IdentifierManager)vMgrs[fw];
FontSizeManager fszVM = (FontSizeManager)vMgrs[fsz];
StringMap fstSM = fstVM.getIdentifiers();
StringMap fvSM = fvVM.getIdentifiers();
StringMap fwSM = fwVM.getIdentifiers();
StringMap fszSM = fszVM.getIdentifiers();
// Check for font-style, font-variant, & font-weight
// These are all optional.
boolean svwDone= false;
LexicalUnit intLU = null;
while (!svwDone && (lu != null)) {
switch (lu.getLexicalUnitType()) {
case LexicalUnit.SAC_IDENT: {
String s = lu.getStringValue().toLowerCase().intern();
if (fontStyle == null && fstSM.get(s) != null) {
fontStyle = lu;
if (intLU != null) {
if (fontWeight == null) {
fontWeight = intLU;
intLU = null;
} else {
throw createInvalidLexicalUnitDOMException
(intLU.getLexicalUnitType());
}
}
break;
}
if (fontVariant == null && fvSM.get(s) != null) {
fontVariant = lu;
if (intLU != null) {
if (fontWeight == null) {
fontWeight = intLU;
intLU = null;
} else {
throw createInvalidLexicalUnitDOMException
(intLU.getLexicalUnitType());
}
}
break;
}
if (intLU == null && fontWeight == null
&& fwSM.get(s) != null) {
fontWeight = lu;
break;
}
svwDone = true;
break;
}
case LexicalUnit.SAC_INTEGER:
if (intLU == null && fontWeight == null) {
intLU = lu;
break;
}
svwDone = true;
break;
default: // All other must be size,'/line-height', family
svwDone = true;
break;
}
if (!svwDone) lu = lu.getNextLexicalUnit();
}
// Must have font-size.
if (lu == null)
throw createMalformedLexicalUnitDOMException();
// Now we need to get font-size
switch (lu.getLexicalUnitType()) {
case LexicalUnit.SAC_IDENT: {
String s= lu.getStringValue().toLowerCase().intern();
if (fszSM.get(s) != null) {
fontSize = lu; // This is a font-size ident.
lu = lu.getNextLexicalUnit();
}
}
break;