فهرست منبع

registry: converted kw to constants

mattias 1 سال پیش
والد
کامیت
f499240b5a
1فایلهای تغییر یافته به همراه265 افزوده شده و 258 حذف شده
  1. 265 258
      src/base/fresnel.dom.pas

+ 265 - 258
src/base/fresnel.dom.pas

@@ -410,6 +410,140 @@ type
     procedure SplitPadding(Resolver: TCSSBaseResolver; var AttrIDs: TCSSNumericalIDArray; var Values: TCSSStringArray); virtual;
     procedure SplitBackgroundPosition(Resolver: TCSSBaseResolver; var AttrIDs: TCSSNumericalIDArray; var Values: TCSSStringArray); virtual;
     procedure SplitBackground(Resolver: TCSSBaseResolver; var AttrIDs: TCSSNumericalIDArray; var Values: TCSSStringArray); virtual;
+  public
+    // keywords
+    const
+      // predefined
+      kwNone = CSSKeywordNone;
+      kwInitial = CSSKeywordInitial;
+      kwInherit = CSSKeywordInherit;
+      kwUnset = CSSKeywordUnset;
+      kwRevert = CSSKeywordRevert;
+      kwRevertLayer = CSSKeywordRevertLayer;
+      kwAuto = CSSKeywordAuto;
+
+      // Fresnel additions:
+      kwAbsolute = kwAuto+1;
+      kwAlias = kwAbsolute+1;
+      kwAllScroll = kwAlias+1; // all-scroll
+      kwBlock = kwAllScroll+1;
+      kwBlockEnd = kwBlock+1; // block-end
+      kwBlockStart = kwBlockEnd+1; // block-start
+      kwBold = kwBlockStart+1;
+      kwBolder = kwBold+1;
+      kwBorderBox = kwBolder+1; // border-box
+      kwBoth = kwBorderBox+1;
+      kwBothBlock = kwBoth+1; // both-block
+      kwBothInline = kwBothBlock+1; // both-inline
+      kwBottom = kwBothInline+1;
+      kwCaption = kwBottom+1;
+      kwCell = kwCaption+1;
+      kwCenter = kwCell+1;
+      kwClip = kwCenter+1;
+      kwCollapse = kwClip+1;
+      kwColResize = kwCollapse+1; // col-resize
+      kwCommonLigatures = kwColResize+1; // common-ligatures
+      kwCondensed = kwCommonLigatures+1;
+      kwContain = kwCondensed+1;
+      kwContentBox = kwContain+1; // content-box
+      kwContents = kwContentBox+1;
+      kwContextMenu = kwContents+1;
+      kwCopy = kwContextMenu+1;
+      kwCover = kwCopy+1;
+      kwCrosshair = kwCover+1;
+      kwCurrentcolor = kwCrosshair+1; // currentcolor
+      kwDashed = kwCurrentcolor+1;
+      kwDefault = kwDashed+1;
+      kwDotted = kwDefault+1;
+      kwDouble = kwDotted+1;
+      kwEResize = kwDouble+1; // e-resize
+      kwEWResize = kwEResize+1; // ew-resize
+      kwExpanded = kwEWResize+1;
+      kwExtraCondensed = kwExpanded+1; // extra-condensed
+      kwExtraExpanded = kwExtraCondensed+1; // extra-expanded
+      kwFitContent = kwExtraExpanded+1; // fit-content
+      kwFixed = kwFitContent+1;
+      kwFlow = kwFixed+1;
+      kwFlowRoot = kwFlow+1; // flow-root
+      kwGrab = kwFlowRoot+1;
+      kwGrabbing = kwGrab+1;
+      kwGroove = kwGrabbing+1;
+      kwHelp = kwGroove+1;
+      kwHidden = kwHelp+1;
+      kwIcon = kwHidden+1;
+      kwIn = kwIcon+1;
+      kwInline = kwIn+1;
+      kwInlineEnd = kwInline+1; // inline-end
+      kwInlineStart = kwInlineEnd+1; // inline-start
+      kwInset = kwInlineStart+1;
+      kwLarge = kwInset+1;
+      kwLarger = kwLarge+1;
+      kwLeft = kwLarger+1;
+      kwLighter = kwLeft+1;
+      kwLocal = kwLighter+1;
+      kwLTR = kwLocal+1;
+      kwMaxContent = kwLTR+1; // max-content
+      kwMedium = kwMaxContent+1;
+      kwMenu = kwMedium+1;
+      kwMessageBox = kwMenu+1; // message-box
+      kwMinContent = kwMessageBox+1; // min-content
+      kwMove = kwMinContent+1;
+      kwNEResize = kwMove+1; // ne-resize
+      kwNESWResize = kwNEResize+1; // nesw-resize
+      kwNoDrop = kwNESWResize+1; // no-drop
+      kwNoRepeat = kwNoDrop+1; // no-repeat
+      kwNormal = kwNoRepeat+1;
+      kwNotAllowed = kwNormal+1; // not-allowed
+      kwNResize = kwNotAllowed+1; // n-resize
+      kwNSResize = kwNResize+1; // ns-resize
+      kwNWResize = kwNSResize+1; // nw-resize
+      kwNWSEResize = kwNWResize+1; // nwse-resize
+      kwOutset = kwNWSEResize+1;
+      kwPaddingBox = kwOutset+1; // padding-box
+      kwPointer = kwPaddingBox+1;
+      kwProgress = kwPointer+1;
+      kwRelative = kwProgress+1;
+      kwRepeat = kwRelative+1;
+      kwRepeatX = kwRepeat+1; // repeat-x
+      kwRepeatY = kwRepeatX+1; // repeat-y
+      kwRidge = kwRepeatY+1;
+      kwRight = kwRidge+1;
+      kwRound = kwRight+1;
+      kwRowResize = kwRound+1; // row-resize
+      kwRTL = kwRowResize+1;
+      kwScroll = kwRTL+1;
+      kwSemiCondensed = kwScroll+1; // semi-condensed
+      kwSemiExpanded = kwSemiCondensed+1; // semi-expanded
+      kwSEResize = kwSemiExpanded+1; // se-resize
+      kwSmall = kwSEResize+1;
+      kwSmallCaps = kwSmall+1; // small-caps
+      kwSmallCaption = kwSmallCaps+1; // small-caption
+      kwSmaller = kwSmallCaption+1;
+      kwSolid = kwSmaller+1;
+      kwSpace = kwSolid+1;
+      kwSResize = kwSpace+1; // s-resize
+      kwStatic = kwSResize+1;
+      kwStatusBar = kwStatic+1; // status-bar
+      kwSticky = kwStatusBar+1;
+      kwSWResize = kwSticky+1; // sw-resize
+      kwText = kwSWResize+1;
+      kwThick = kwText+1;
+      kwThin = kwThick+1;
+      kwTo = kwThin+1;
+      kwTop = kwTo+1;
+      kwUltraCondensed = kwTop+1; // ultra-condensed
+      kwUltraExpanded = kwUltraCondensed+1; // ultra-expanded
+      kwVerticalText = kwUltraExpanded+1; // vertical-text
+      kwVisible = kwVerticalText+1;
+      kwWait = kwVisible+1;
+      kwWResize = kwWait+1; // w-resize
+      kwXLarge = kwWResize+1; // x-large
+      kwXSmall = kwXLarge+1; // x-small
+      kwXXLarge = kwXSmall+1; // xx-large
+      kwXXSmall = kwXXLarge+1; // xx-small
+      kwXXXLarge = kwXXSmall+1; // xxx-large
+      kwZoomIn = kwXXXLarge+1; // zoom-in
+      kwZoomOut = kwZoomIn+1; // zoom-out
   public
     FresnelAttrIDBase: TCSSNumericalID;
     FresnelAttrs: array[TFresnelCSSAttribute] of TFresnelCSSAttrDesc;
@@ -417,136 +551,6 @@ type
     FresnelPseudoClassIDBase: TCSSNumericalID;
     FresnelPseudoClasses: array[TFresnelCSSPseudoClass] of TFresnelCSSPseudoClassDesc;
 
-    // keywords
-    kwAbsolute,
-    kwAlias,
-    kwAllScroll, // all-scroll
-    kwAuto,
-    kwBlock,
-    kwBlockEnd, // block-end
-    kwBlockStart, // block-start
-    kwBold,
-    kwBolder,
-    kwBorderBox, // border-box
-    kwBoth,
-    kwBothBlock, // both-block
-    kwBothInline, // both-inline
-    kwBottom,
-    kwCaption,
-    kwCell,
-    kwCenter,
-    kwClip,
-    kwCollapse,
-    kwColResize, // col-resize
-    kwCommonLigatures, // common-ligatures
-    kwCondensed,
-    kwContain,
-    kwContentBox, // content-box
-    kwContents,
-    kwContextMenu,
-    kwCopy,
-    kwCover,
-    kwCrosshair,
-    kwCurrentcolor, // currentcolor
-    kwDashed,
-    kwDefault,
-    kwDotted,
-    kwDouble,
-    kwEResize, // e-resize
-    kwEWResize, // ew-resize
-    kwExpanded,
-    kwExtraCondensed, // extra-condensed
-    kwExtraExpanded, // extra-expanded
-    kwFitContent, // fit-content
-    kwFixed,
-    kwFlow,
-    kwFlowRoot, // flow-root
-    kwGrab,
-    kwGrabbing,
-    kwGroove,
-    kwHelp,
-    kwHidden,
-    kwIcon,
-    kwIn,
-    kwInherit,
-    kwInitial,
-    kwInline,
-    kwInlineEnd, // inline-end
-    kwInlineStart, // inline-start
-    kwInset,
-    kwLarge,
-    kwLarger,
-    kwLeft,
-    kwLighter,
-    kwLocal,
-    kwLTR,
-    kwMaxContent, // max-content
-    kwMedium,
-    kwMenu,
-    kwMessageBox, // message-box
-    kwMinContent, // min-content
-    kwMove,
-    kwNEResize, // ne-resize
-    kwNESWResize, // nesw-resize
-    kwNoDrop, // no-drop
-    kwNone,
-    kwNoRepeat, // no-repeat
-    kwNormal,
-    kwNotAllowed, // not-allowed
-    kwNResize, // n-resize
-    kwNSResize, // ns-resize
-    kwNWResize, // nw-resize
-    kwNWSEResize, // nwse-resize
-    kwOutset,
-    kwPaddingBox, // padding-box
-    kwPointer,
-    kwProgress,
-    kwRelative,
-    kwRepeat,
-    kwRepeatX, // repeat-x
-    kwRepeatY, // repeat-y
-    kwRevert,
-    kwRevertLayer, // revert-layer
-    kwRidge,
-    kwRight,
-    kwRound,
-    kwRowResize, // row-resize
-    kwRTL,
-    kwScroll,
-    kwSemiCondensed, // semi-condensed
-    kwSemiExpanded, // semi-expanded
-    kwSEResize, // se-resize
-    kwSmall,
-    kwSmallCaps, // small-caps
-    kwSmallCaption, // small-caption
-    kwSmaller,
-    kwSolid,
-    kwSpace,
-    kwSResize, // s-resize
-    kwStatic,
-    kwStatusBar, // status-bar
-    kwSticky,
-    kwSWResize, // sw-resize
-    kwText,
-    kwThick,
-    kwThin,
-    kwTo,
-    kwTop,
-    kwUltraCondensed, // ultra-condensed
-    kwUltraExpanded, // ultra-expanded
-    kwUnset,
-    kwVerticalText, // vertical-text
-    kwWait,
-    kwWResize, // w-resize
-    kwXLarge, // x-large
-    kwXSmall, // x-small
-    kwXXLarge, // xx-large
-    kwXXSmall, // xx-small
-    kwXXXLarge, // xxx-large
-    kwZoomIn, // zoom-in
-    kwZoomOut, // zoom-out
-    kwVisible:
-      TCSSNumericalID;
 
     // attribute functions
     afUrl,
@@ -2607,6 +2611,16 @@ begin
 end;
 
 procedure TFresnelCSSRegistry.Init;
+
+  procedure AddKW(ExpectedID: TCSSNumericalID; const KW: TCSSString);
+  var
+    ActualKW: TCSSNumericalID;
+  begin
+    ActualKW:=AddKeyword(KW);
+    if ActualKW=ExpectedID then exit;
+    raise EFresnel.Create('register keyword "'+KW+'" failed. Expected '+IntToStr(ExpectedID)+', but got '+IntToStr(ActualKW));
+  end;
+
 var
   Desc: TFresnelCSSAttrDesc;
   PseudoCl: TFresnelCSSPseudoClass;
@@ -2614,134 +2628,127 @@ begin
   inherited Init;
 
   // keywords
-  kwNone:=CSSKeywordNone;
-  kwInitial:=CSSKeywordInitial;
-  kwInherit:=CSSKeywordInherit;
-  kwUnset:=CSSKeywordUnset;
-  kwRevert:=CSSKeywordRevert;
-  kwRevertLayer:=CSSKeywordRevertLayer;
-  kwAuto:=CSSKeywordAuto;
-  kwContents:=AddKeyword('contents'); // e.g. display-box
-  kwFlow:=AddKeyword('flow'); // e.g. display-inside
-  kwFlowRoot:=AddKeyword('flow-root'); // e.g. display-inside
-  kwBlock:=AddKeyword('block'); // e.g. display-outside
-  kwInline:=AddKeyword('inline'); // e.g. display-outside
-  kwStatic:=AddKeyword('static'); // e.g. position
-  kwRelative:=AddKeyword('relative'); // e.g. position
-  kwAbsolute:=AddKeyword('absolute'); // e.g. position
-  kwFixed:=AddKeyword('fixed'); // e.g. position, background-attachment
-  kwSticky:=AddKeyword('sticky'); // e.g. position
-  kwContentBox:=AddKeyword('content-box'); // e.g. box-sizing
-  kwBorderBox:=AddKeyword('border-box'); // e.g. box-sizing
-  kwLTR:=AddKeyword('ltr'); // e.g. direction
-  kwRTL:=AddKeyword('rtl'); // e.g. direction
-  kwVisible:=AddKeyword('visible'); // e.g. overflow-x, visible
-  kwHidden:=AddKeyword('hidden'); // e.g. overflow-x, border-style, visible
-  kwClip:=AddKeyword('clip'); // e.g. overflow-x
-  kwScroll:=AddKeyword('scroll'); // e.g. overflow-x, background-attachment
-  kwInlineStart:=AddKeyword('inline-start'); // e.g. clear, float
-  kwInlineEnd:=AddKeyword('inline-end'); // e.g. clear, float
-  kwBlockStart:=AddKeyword('block-start'); // e.g. clear
-  kwBlockEnd:=AddKeyword('block-end'); // e.g. clear
-  kwLeft:=AddKeyword('left'); // e.g. clear, float
-  kwRight:=AddKeyword('right'); // e.g. clear, float
-  kwTop:=AddKeyword('top'); // e.g. clear
-  kwBottom:=AddKeyword('bottom'); // e.g. clear
-  kwBothInline:=AddKeyword('both-inline'); // e.g. clear
-  kwBothBlock:=AddKeyword('both-block'); // e.g. clear
-  kwBoth:=AddKeyword('both'); // e.g. clear
-  kwMaxContent:=AddKeyword('max-content'); // e.g. width, min-width
-  kwMinContent:=AddKeyword('min-content'); // e.g. width, min-width
-  kwFitContent:=AddKeyword('fit-content'); // e.g. width, min-width
-  kwThin:=AddKeyword('thin'); // e.g. border-left-width
-  kwMedium:=AddKeyword('medium'); // e.g. border-left-width, font-size
-  kwThick:=AddKeyword('thick'); // e.g. border-left-width
-  kwCurrentcolor:=AddKeyword('currentcolor'); // e.g. color
-  kwDotted:=AddKeyword('dotted'); // e.g. border-style
-  kwDashed:=AddKeyword('dashed'); // e.g. border-style
-  kwSolid:=AddKeyword('solid'); // e.g. border-style
-  kwDouble:=AddKeyword('double'); // e.g. border-style
-  kwGroove:=AddKeyword('groove'); // e.g. border-style
-  kwRidge:=AddKeyword('ridge'); // e.g. border-style
-  kwInset:=AddKeyword('inset'); // e.g. border-style
-  kwOutset:=AddKeyword('outset'); // e.g. border-style
-  kwNormal:=AddKeyword('normal'); // e.g. font-feature-settings, font-size
-  kwXXSmall:=AddKeyword('xx-small'); // e.g. font-size
-  kwXSmall:=AddKeyword('x-small'); // e.g. font-size
-  kwSmall:=AddKeyword('small'); // e.g. font-size
-  kwSmaller:=AddKeyword('smaller'); // e.g. font-size
-  kwLarge:=AddKeyword('large'); // e.g. font-size
-  kwLarger:=AddKeyword('larger'); // e.g. font-size
-  kwXLarge:=AddKeyword('x-large'); // e.g. font-size
-  kwXXLarge:=AddKeyword('xx-large'); // e.g. font-size
-  kwXXXLarge:=AddKeyword('xxx-large'); // e.g. font-size
-  kwBold:=AddKeyword('bold'); // e.g. font-weight
-  kwBolder:=AddKeyword('bolder'); // e.g. font-weight
-  kwLighter:=AddKeyword('lighter'); // e.g. font-weight
-  kwSmallCaps:=AddKeyword('small-caps'); // e.g. font-variant
-  kwCommonLigatures:=AddKeyword('common-ligatures'); // e.g. font-variant
-  kwCollapse:=AddKeyword('collapse'); // e.g. visible
-  kwPaddingBox:=AddKeyword('padding-box'); // e.g. background-origin
-  kwDefault:=AddKeyword('default'); // e.g. cursor
-  kwContextMenu:=AddKeyword('context-menu'); // e.g. cursor
-  kwHelp:=AddKeyword('help'); // e.g. cursor
-  kwPointer:=AddKeyword('pointer'); // e.g. cursor
-  kwProgress:=AddKeyword('progress'); // e.g. cursor
-  kwWait:=AddKeyword('wait'); // e.g. cursor
-  kwCell:=AddKeyword('cell'); // e.g. cursor
-  kwCrosshair:=AddKeyword('crosshair'); // e.g. cursor
-  kwText:=AddKeyword('text'); // e.g. cursor
-  kwVerticalText:=AddKeyword('vertical-text'); // e.g. cursor
-  kwAlias:=AddKeyword('alias'); // e.g. cursor
-  kwCopy:=AddKeyword('copy'); // e.g. cursor
-  kwMove:=AddKeyword('move'); // e.g. cursor
-  kwNoDrop:=AddKeyword('no-drop'); // e.g. cursor
-  kwNotAllowed:=AddKeyword('not-allowed'); // e.g. cursor
-  kwGrab:=AddKeyword('grab'); // e.g. cursor
-  kwGrabbing:=AddKeyword('grabbing'); // e.g. cursor
-  kwEResize:=AddKeyword('e-resize'); // e.g. cursor
-  kwNResize:=AddKeyword('n-resize'); // e.g. cursor
-  kwNEResize:=AddKeyword('ne-resize'); // e.g. cursor
-  kwNWResize:=AddKeyword('nw-resize'); // e.g. cursor
-  kwSResize:=AddKeyword('s-resize'); // e.g. cursor
-  kwSEResize:=AddKeyword('se-resize'); // e.g. cursor
-  kwSWResize:=AddKeyword('sw-resize'); // e.g. cursor
-  kwWResize:=AddKeyword('w-resize'); // e.g. cursor
-  kwEWResize:=AddKeyword('ew-resize'); // e.g. cursor
-  kwNSResize:=AddKeyword('ns-resize'); // e.g. cursor
-  kwNESWResize:=AddKeyword('nesw-resize'); // e.g. cursor
-  kwNWSEResize:=AddKeyword('nwse-resize'); // e.g. cursor
-  kwColResize:=AddKeyword('col-resize'); // e.g. cursor
-  kwRowResize:=AddKeyword('row-resize'); // e.g. cursor
-  kwAllScroll:=AddKeyword('all-scroll'); // e.g. cursor
-  kwZoomIn:=AddKeyword('zoom-in'); // e.g. cursor
-  kwZoomOut:=AddKeyword('zoom-out'); // e.g. cursor
-  kwIn:=AddKeyword('in'); // e.g. background-image
-  kwTo:=AddKeyword('to'); // e.g. background-image
-  kwLocal:=AddKeyword('local'); // e.g. background-attachment
-  kwCenter:=AddKeyword('center'); // e.g. background-position-x
-  kwRepeat:=AddKeyword('repeat'); // e.g. background-repeat
-  kwNoRepeat:=AddKeyword('no-repeat'); // e.g. background-repeat
-  kwSpace:=AddKeyword('space'); // e.g. background-repeat
-  kwRound:=AddKeyword('round'); // e.g. background-repeat
-  kwRepeatX:=AddKeyword('repeat-x'); // e.g. background-repeat
-  kwRepeatY:=AddKeyword('repeat-y'); // e.g. background-repeat
-  kwContain:=AddKeyword('contain'); // e.g. background-size
-  kwCover:=AddKeyword('cover'); // e.g. background-size
-  kwCondensed:=AddKeyword('condensed'); // e.g. font-stretch
-  kwSemiCondensed:=AddKeyword('semi-condensed'); // e.g. font-stretch
-  kwExtraCondensed:=AddKeyword('extra-condensed'); // e.g. font-stretch
-  kwUltraCondensed:=AddKeyword('ultra-condensed'); // e.g. font-stretch
-  kwExpanded:=AddKeyword('expanded'); // e.g. font-stretch
-  kwSemiExpanded:=AddKeyword('semi-expanded'); // e.g. font-stretch
-  kwExtraExpanded:=AddKeyword('extra-expanded'); // e.g. font-stretch
-  kwUltraExpanded:=AddKeyword('ultra-expanded'); // e.g. font-stretch
-  kwCaption:=AddKeyword('caption'); // e.g. font
-  kwIcon:=AddKeyword('icon'); // e.g. font
-  kwMenu:=AddKeyword('menu'); // e.g. font
-  kwMessageBox:=AddKeyword('message-box'); // e.g. font
-  kwSmallCaption:=AddKeyword('small-caption'); // e.g. font
-  kwStatusBar:=AddKeyword('status-bar'); // e.g. font
+  AddKW(kwAbsolute,'absolute'); // e.g. position
+  AddKW(kwAlias,'alias'); // e.g. cursor
+  AddKW(kwAllScroll,'all-scroll'); // e.g. cursor
+  AddKW(kwBlock,'block'); // e.g. display-outside
+  AddKW(kwBlockEnd,'block-end'); // e.g. clear
+  AddKW(kwBlockStart,'block-start'); // e.g. clear
+  AddKW(kwBold,'bold'); // e.g. font-weight
+  AddKW(kwBolder,'bolder'); // e.g. font-weight
+  AddKW(kwBorderBox,'border-box'); // e.g. box-sizing
+  AddKW(kwBoth,'both'); // e.g. clear
+  AddKW(kwBothBlock,'both-block'); // e.g. clear
+  AddKW(kwBothInline,'both-inline'); // e.g. clear
+  AddKW(kwBottom,'bottom'); // e.g. clear
+  AddKW(kwCaption,'caption'); // e.g. font
+  AddKW(kwCell,'cell'); // e.g. cursor
+  AddKW(kwCenter,'center'); // e.g. background-position-x
+  AddKW(kwClip,'clip'); // e.g. overflow-x
+  AddKW(kwCollapse,'collapse'); // e.g. visible
+  AddKW(kwColResize,'col-resize'); // e.g. cursor
+  AddKW(kwCommonLigatures,'common-ligatures'); // e.g. font-variant
+  AddKW(kwCondensed,'condensed'); // e.g. font-stretch
+  AddKW(kwContain,'contain'); // e.g. background-size
+  AddKW(kwContentBox,'content-box'); // e.g. box-sizing
+  AddKW(kwContents,'contents'); // e.g. display-box
+  AddKW(kwContextMenu,'context-menu'); // e.g. cursor
+  AddKW(kwCopy,'copy'); // e.g. cursor
+  AddKW(kwCover,'cover'); // e.g. background-size
+  AddKW(kwCrosshair,'crosshair'); // e.g. cursor
+  AddKW(kwCurrentcolor,'currentcolor'); // e.g. color
+  AddKW(kwDashed,'dashed'); // e.g. border-style
+  AddKW(kwDefault,'default'); // e.g. cursor
+  AddKW(kwDotted,'dotted'); // e.g. border-style
+  AddKW(kwDouble,'double'); // e.g. border-style
+  AddKW(kwEResize,'e-resize'); // e.g. cursor
+  AddKW(kwEWResize,'ew-resize'); // e.g. cursor
+  AddKW(kwExpanded,'expanded'); // e.g. font-stretch
+  AddKW(kwExtraCondensed,'extra-condensed'); // e.g. font-stretch
+  AddKW(kwExtraExpanded,'extra-expanded'); // e.g. font-stretch
+  AddKW(kwFitContent,'fit-content'); // e.g. width, min-width
+  AddKW(kwFixed,'fixed'); // e.g. position, background-attachment
+  AddKW(kwFlow,'flow'); // e.g. display-inside
+  AddKW(kwFlowRoot,'flow-root'); // e.g. display-inside
+  AddKW(kwGrab,'grab'); // e.g. cursor
+  AddKW(kwGrabbing,'grabbing'); // e.g. cursor
+  AddKW(kwGroove,'groove'); // e.g. border-style
+  AddKW(kwHelp,'help'); // e.g. cursor
+  AddKW(kwHidden,'hidden'); // e.g. overflow-x, border-style, visible
+  AddKW(kwIcon,'icon'); // e.g. font
+  AddKW(kwIn,'in'); // e.g. background-image
+  AddKW(kwInline,'inline'); // e.g. display-outside
+  AddKW(kwInlineEnd,'inline-end'); // e.g. clear, float
+  AddKW(kwInlineStart,'inline-start'); // e.g. clear, float
+  AddKW(kwInset,'inset'); // e.g. border-style
+  AddKW(kwLarge,'large'); // e.g. font-size
+  AddKW(kwLarger,'larger'); // e.g. font-size
+  AddKW(kwLeft,'left'); // e.g. clear, float
+  AddKW(kwLighter,'lighter'); // e.g. font-weight
+  AddKW(kwLocal,'local'); // e.g. background-attachment
+  AddKW(kwLTR,'ltr'); // e.g. direction
+  AddKW(kwMaxContent,'max-content'); // e.g. width, min-width
+  AddKW(kwMedium,'medium'); // e.g. border-left-width, font-size
+  AddKW(kwMenu,'menu'); // e.g. font
+  AddKW(kwMessageBox,'message-box'); // e.g. font
+  AddKW(kwMinContent,'min-content'); // e.g. width, min-width
+  AddKW(kwMove,'move'); // e.g. cursor
+  AddKW(kwNEResize,'ne-resize'); // e.g. cursor
+  AddKW(kwNESWResize,'nesw-resize'); // e.g. cursor
+  AddKW(kwNoDrop,'no-drop'); // e.g. cursor
+  AddKW(kwNoRepeat,'no-repeat'); // e.g. background-repeat
+  AddKW(kwNormal,'normal'); // e.g. font-feature-settings, font-size
+  AddKW(kwNotAllowed,'not-allowed'); // e.g. cursor
+  AddKW(kwNResize,'n-resize'); // e.g. cursor
+  AddKW(kwNSResize,'ns-resize'); // e.g. cursor
+  AddKW(kwNWResize,'nw-resize'); // e.g. cursor
+  AddKW(kwNWSEResize,'nwse-resize'); // e.g. cursor
+  AddKW(kwOutset,'outset'); // e.g. border-style
+  AddKW(kwPaddingBox,'padding-box'); // e.g. background-origin
+  AddKW(kwPointer,'pointer'); // e.g. cursor
+  AddKW(kwProgress,'progress'); // e.g. cursor
+  AddKW(kwRelative,'relative'); // e.g. position
+  AddKW(kwRepeat,'repeat'); // e.g. background-repeat
+  AddKW(kwRepeatX,'repeat-x'); // e.g. background-repeat
+  AddKW(kwRepeatY,'repeat-y'); // e.g. background-repeat
+  AddKW(kwRidge,'ridge'); // e.g. border-style
+  AddKW(kwRight,'right'); // e.g. clear, float
+  AddKW(kwRound,'round'); // e.g. background-repeat
+  AddKW(kwRowResize,'row-resize'); // e.g. cursor
+  AddKW(kwRTL,'rtl'); // e.g. direction
+  AddKW(kwScroll,'scroll'); // e.g. overflow-x, background-attachment
+  AddKW(kwSemiCondensed,'semi-condensed'); // e.g. font-stretch
+  AddKW(kwSemiExpanded,'semi-expanded'); // e.g. font-stretch
+  AddKW(kwSEResize,'se-resize'); // e.g. cursor
+  AddKW(kwSmall,'small'); // e.g. font-size
+  AddKW(kwSmallCaps,'small-caps'); // e.g. font-variant
+  AddKW(kwSmallCaption,'small-caption'); // e.g. font
+  AddKW(kwSmaller,'smaller'); // e.g. font-size
+  AddKW(kwSolid,'solid'); // e.g. border-style
+  AddKW(kwSpace,'space'); // e.g. background-repeat
+  AddKW(kwSResize,'s-resize'); // e.g. cursor
+  AddKW(kwStatic,'static'); // e.g. position
+  AddKW(kwStatusBar,'status-bar'); // e.g. font
+  AddKW(kwSticky,'sticky'); // e.g. position
+  AddKW(kwSWResize,'sw-resize'); // e.g. cursor
+  AddKW(kwText,'text'); // e.g. cursor
+  AddKW(kwThick,'thick'); // e.g. border-left-width
+  AddKW(kwThin,'thin'); // e.g. border-left-width
+  AddKW(kwTo,'to'); // e.g. background-image
+  AddKW(kwTop,'top'); // e.g. clear
+  AddKW(kwUltraCondensed,'ultra-condensed'); // e.g. font-stretch
+  AddKW(kwUltraExpanded,'ultra-expanded'); // e.g. font-stretch
+  AddKW(kwVerticalText,'vertical-text'); // e.g. cursor
+  AddKW(kwVisible,'visible'); // e.g. overflow-x, visible
+  AddKW(kwWait,'wait'); // e.g. cursor
+  AddKW(kwWResize,'w-resize'); // e.g. cursor
+  AddKW(kwXLarge,'x-large'); // e.g. font-size
+  AddKW(kwXSmall,'x-small'); // e.g. font-size
+  AddKW(kwXXLarge,'xx-large'); // e.g. font-size
+  AddKW(kwXXSmall,'xx-small'); // e.g. font-size
+  AddKW(kwXXXLarge,'xxx-large'); // e.g. font-size
+  AddKW(kwZoomIn,'zoom-in'); // e.g. cursor
+  AddKW(kwZoomOut,'zoom-out'); // e.g. cursor
 
   // color keywords
   AddColorKeywords;