{ define style "BaseStyle"; font Trinity.Medium; fontsize 14pt; linespacep 120%; spaceabove 0pt; spacebelow 14pt; leftmargin 18pt; rightmargin -0pt; returnmargin 18pt; condframethrow 0pt; fontaspect 100%; fontcolour rgb=(0,0,0); linecolour rgb=(0,0,0); rulecolour rgb=(0,0,0); justify left; underline 0; strikeout off; script off; hyphenate off; leader ""; locktolinespace off; italic off; bold off; ruleaboveoffset 0pt; rulecontrol 0; vertrulewidth 0pt; ruleleftmargin 0pt; rulerightmargin 0pt; rulewidth 0pt; ruleoffset 0pt; tracking 0; overprintb off; overprint off; dectabchar "."; keepparagraph off; keepnext off; keepregion off; shortcut 2; tabs 72pt,144pt,216pt,288pt,360pt,432pt,504pt,576pt,648pt,648pt,720pt,792pt,864pt,936pt,1008pt,1080pt,1152pt,1224pt,1296pt,1368pt,1440pt,1512pt,1584pt,1656pt,1728pt,1800pt,1872pt,1944pt,2016pt,2088pt,2160pt,2232pt; menuitem off}{ define style "Main Heading"; font Homerton.Bold; fontsize 24pt; linespacep 120%; leftmargin 40pt; returnmargin 0pt; keepnext on; contents 1; autoparagraph; shortcut 385; menuitem on}{ define style "Sub-Heading"; font Homerton.Medium; fontsize 18pt; linespacep 120%; returnmargin 9pt; keepnext on; contents 2; autoparagraph; shortcut 386; menuitem on}{ define style "Italic"; font Trinity.Medium.Italic; menuitem on}{ define style "Bold"; font Homerton.Bold; menuitem on}{ define style "Example"; spacebelow 0pt; locktolinespace off; keepregion on; autoparagraph; menuitem on}{ define style "Screen"; font Corpus.Medium; fontaspect 80%; shortcut 393; menuitem on}{ define style "No Paragraph Space"; spacebelow 0pt; shortcut 459; menuitem on}{ define style "Index"; index; menuitem on}{ define style "Sub-Sub-Heading"; font Homerton.Bold; spacebelow 0pt; keepnext on; autoparagraph; menuitem on}{ define style "DDF"; font Homerton.Medium; spacebelow 0pt; leftmargin 71.2pt; returnmargin 71.2pt; fontaspect 90%; tabs 143.2pt,215.2pt,288pt,360pt,432pt,504pt; menuitem on}{ define style "DDF keyword"; font Homerton.Bold.Oblique; fontcolour rgb=(0,0,0); backcolour hsv=(0,0,0.922); shortcut 11; menuitem on}{"Main Heading" on}Impression Document Description Format {"Main Heading" off}Impression supports the loading and saving of multi-{"Index" on}font{"Index" off} text in a simple ASCII format, called {\144}{"Index" on}DDF{"Index" off}{\145} or {\144}Document Description File{\145} format. The changes in {"Index" on}font{"Index" off}, {"Index" on}colour{"Index" off}, underline, etc are stored as command strings in the ASCII file and this means that the tagged files can be edited or even originated in simple text editors. Furthermore the ASCII character set used in {"Index" on}DDF{"Index" off} files is the seven bit character set (no ASCII codes greater than 127 are used) so that it is easy to export tagged files to other systems via modems. The "Save text with styles" menu option saves files in DDF format. A {"Index" on}DDF{"Index" off} interpreter is permanently resident in Impression. This interpreter is used whenever text needs to be converted into Impression{\145}s own format. The search-and-replace and abbreviation dialogues use DDF to specify special codes in a document. When a text file icon is dropped onto a frame the DDF interpreter is used to give that text tabs, styles, page numbers, etc. So, any text file will be interpreted by Impression as a {"Index" on}DDF{"Index" off} file. Most normal text files will pass through the {"Index" on}DDF{"Index" off} interpreter unharmed but occasionally a file may unintentionally contain a {"Index" on}DDF{"Index" off} embedded command which will alter the format of the loaded text. This is {"Italic" on}very{"Italic" off} unlikely because if the syntax of the command is not {"Italic" on}exactly {"Italic" off}correct, Impression will treat the embedded command as part of the text. The {"Index" on}DDF{"Index" off} interpreter is also used by the loader modules. They do not convert files directly into the internal Impression format but translate it first into DDF in memory. The DDF interpreter then converts from DDF into the internal form. All characters in the ASCII range 32-126 are recognised, except for the opening curly bracket, which marks the start of a special command. These commands are used to store style changes, characters from 0-31 and 128-255 and other things. ASCII code 9 is recognised as a tab and codes 10 and 13 are both recognised as a return (end of paragraph) character. {"Sub-Heading" on}{"Index" on}DDF{"Index" off} commands {"Sub-Heading" off}{"Sub-Sub-Heading" on}Style changes {"Sub-Sub-Heading" off}A style change is stored in the form: {"Screen" on}{\123}{\148}Style name{\149} on}some text{\123}{\148}Style name{\149} off}{"Screen" off} A style on code must be followed by a style off code, otherwise the style will be on for the duration of the document. Impression will put in style off codes for any unmatched style on codes. New to this version of the DDF interpreter is an optional third parameter for advanced users which describes the level at which the style application should take place. The integer parameter gives the level from the top of the style list to insert the new style code, 0 applying the style change at the top where it would be applied normally. {"Sub-Sub-Heading" on}Effects {"Sub-Sub-Heading" off}An effect change is stored in a similar way to the style change except that turning on a new effect will cancel any previous effect which sets the same attribute. To turn an effect on the effect command takes a parameter and to turn it off the command is given with no parameter. For example: {"Screen" on}{\123}fontsize 20pt}This is 20pt {\123}fontsize 10pt}This is 10pt{\123}fontsize}This is back to default.{"Screen" off} {"Sub-Sub-Heading" on}Tabs {"Sub-Sub-Heading" off}A {"Index" on}tab{"Index" off} is stored in the form:{tab}{"Screen" on}{\123}tab}{"Screen" off} ASCII character 9 is also recognised as a {"Index" on}tab{"Index" off}. {"Sub-Sub-Heading" on}Returns {"Sub-Sub-Heading" off}A return is stored as character 13. {"Screen" on}{\123}cr}{"Screen" off} is also recognised as return. Linefeeds (character 10) are converted to returns. {"Sub-Sub-Heading" on}Top bit set characters {"Sub-Sub-Heading" off}Characters in the range 128-255 are stored as:{tab}{"Screen" on}{\123}\ n} {"Screen" off}where {"Screen" on}n{"Screen" off} is the character code. {"Sub-Sub-Heading" on}Star, Hash and At {"Sub-Sub-Heading" off}When DDF is used in the search dialogue the star (*), hash (#) and at (@) characters represent wildcards and so the DDF commands {"Screen" on}{\123}star}{"Screen" off}, {"Screen" on}{\123}hash}{"Screen" off} and {"Screen" on}{\123}at}{"Screen" off} are supplied to make it easier to search for these characters. {"Sub-Sub-Heading" on}Force to next frame {"Sub-Sub-Heading" off}A force to next frame is stored as:{tab}{"Screen" on}{\123}nextframe}{"Screen" off} {"Sub-Sub-Heading" on}Including curly brackets {"Sub-Sub-Heading" off}If your document needs to include the open curly brackets symbol, the command {"Screen" on}{\123}\123} {"Screen" off}should be used. {"Sub-Sub-Heading" on}Kern commands {"Sub-Sub-Heading" off}Kern commands specify both the x and y movements to be applied to the following text. The values given are measured in 1000ths of an em as in the kern dialogue box. {"No Paragraph Space" on}Example:{tab}{tab}{"Screen" on}{\123}kern 120 -50}{"No Paragraph Space" off}{"Screen" off} {"Sub-Sub-Heading" on}Page and chapter numbers {"Sub-Sub-Heading" off}Page number and chapter number commands both have optional parameters describing the way in which the page number is shown. If the parameter is not present then the number will be displayed in numeric form. The possible parameters are decimal, romanlower and romanupper for numeric, lowercase roman numerals and uppercase roman numerals respectively. {"Example" on}Examples:{tab}{"Screen" on}{\123}pagenumber romanlower} {tab}{tab}{\123}chapternumber decimal} {"Example" off}{tab}{tab}{\123}pagenumber}{"Screen" off} {"Sub-Sub-Heading" on}Soft hyphens {"Sub-Sub-Heading" off}Soft, or discretionary, hyphens are stored as:{tab}{"Screen" on}{\123}softhyphen}{"Screen" off} {"Sub-Sub-Heading" on}Style definitions {"Sub-Sub-Heading" off}Styles can be defined from within DDF using the {"Screen" on}{\123}define style ...}{"Screen" off} command. This command is slightly different from the other commands in that it doesn't insert anything into the text. The style definition can describe every attribute of a style from it's name right down to whether it will appear on the style menu or not. The attributes are identified by DDF keywords which are usually followed by parameters and are separated by semicolons (see the Syntax description below for complete details). Style definition commands can occur anywhere in the text - the only restriction being that a style must be defined before it is applied by a style change command. Rulers are defined in a very similar way to styles except that the command used is {"Screen" on}{\123}define ruler ...}{"Screen" off}. Ruler definitions should only contain leftmargin, rightmargin, returnmargin and tabs attributes. Some the of style attributes need further explanation: {"Bold" on}Measure{"Bold" off}{tab}A measurement of some size which can be specified in points, picas, inches, centimetres, etc. exactly as they would be entered into dialogue boxes. {"Bold" on}ColourSpec{"Bold" off}{tab}Most of the UnsignedReal values in colour spec items range in value from 0 to 1 apart from the first component of HSV colours which ranges from 0 to 360 and all three components of RGB24 which range from 0-255. {"Bold" on}RightMargin{"Bold" off}{tab}The right margin attribute can take negative values to mean that the margin is relative to the right-hand side of frames. Positive values still give right margins which are relative to the left-hand side of frames like they always did. Style definitions are only recognised in loaded text - neither the search-and-replace nor the abbreviations dialogue will let you define styles. {"No Paragraph Space" on}Example: {"No Paragraph Space" off}{"Screen" on}{\123}define style Aardvark; font "Dingbats"; fontsize 2.5in; backcolour hsv=(40,0.5,1.0)}{"Screen" off} {"Sub-Sub-Heading" on}DDF Control {"Sub-Sub-Heading" off}It is possible to disable most of the DDF processing by using the new command {"Screen" on}{\123}off}{"Screen" off}. All text following this command will be placed directly in the document including any DDF commands apart from one - {"Screen" on}{\123}on}{"Screen" off}. When the {"Screen" on}{\123}on}{"Screen" off} command is met normal DDF processing will be turned on again. {"Sub-Sub-Heading" on}Smart quotes {"Sub-Sub-Heading" off}When text is loaded into Impression, it often contains quotation marks. These are normally {\144}sexless{\145} quotes, being neither opening nor closing marks. However, in most {"Index" on}font{"Index" off}s there are different symbols for opening and closing quotes, so when loading in an ASCII file, Impression will attempt to convert normal quotes into the correct type, according to the rules of English. The difference smart quotes make, especially when printed at a high resolution, is often surprising. There may be some extremely rare occasions when the code will mistake an apostrophe for a closing quote, but on the whole, it will convert correctly. {"Sub-Heading" on}AdvanceWP {"Sub-Heading" off}This introduced some new commands to DDF. These include:- {"Sub-Sub-Heading" on}Bold{"Bold" on} {"Bold" off}{"Sub-Sub-Heading" off}This specifies the new ability to embolden a font. Example:{tab}{tab}{"Screen" on}{\123}bold on}{"Screen" off} {"Sub-Sub-Heading" on}Italic{"Bold" on} {"Bold" off}{"Sub-Sub-Heading" off}This specifies the new ability to italicise a font. Example:{tab}{tab}{"Screen" on}{\123}italic on} {"Screen" off}{"Sub-Sub-Heading" on}Paragraph boxes{"Bold" on} {"Bold" off}{"Sub-Sub-Heading" off}This specifies the new ability to put boxes in various forms around paragraphs. They come in four forms:- Thick, Thin, Shadow, thick rule and thin rule. Generally, they are followed by a number which controls various extra bits in the style definition. This ranges in value from 1 to 3 and controls formatting flags. {"Example" on}Example:{tab}{tab}{"Screen" on}{\123}box thick} {tab}{"Screen" off}{tab}{"Screen" on}{\123}box thin}{"Screen" off} {"Screen" on}{tab}{"Screen" off}{tab}{"Screen" on}{\123}box shadow}{"Screen" off} {"Screen" on}{tab}{"Screen" off}{tab}{"Screen" on}{\123}box thickrule}{"Screen" off} {"Example" off}{"Screen" on}{tab}{"Screen" off}{tab}{"Screen" on}{\123}box thinrule}{"Screen" off} {"Sub-Heading" on}Impression 2.50 {"Sub-Heading" off}This introduced some more new commands to DDF. These include:- {"Sub-Sub-Heading" on}Tracking commands {"Sub-Sub-Heading" off}Tracking commands specify the x movements to be applied to the following text. The values given are measured in 1000ths of an em as in the kern/tracking dialogue box. Example:{tab}{tab}{"Screen" on}{\123}tracking 120}{"Screen" off} {"Sub-Sub-Heading" on}Decimal tab character{"Bold" on} {"Bold" off}{"Sub-Sub-Heading" off}This specifies the new ability to say what is going to be used as the 'decimal point' for decimal point tabs. Example:{tab}{tab}{"Screen" on}{\123}dectabchar "."} {"Screen" off}{"Sub-Sub-Heading" on}Overprinting{"Bold" on} {"Bold" off}{"Sub-Sub-Heading" off}This is a style definition attribute which specifies whether overprinting is on or off. It comes in two forms to cover foreground and background overprinting. {"Example" on}Example:{tab}{tab}{"Screen" on}{\123}overprint on} {"Example" off}{tab}{tab}{\123}overprint off} {"Screen" off}{"Sub-Heading" on}Impression Style {"Sub-Heading" off}This introduced some more new commands to DDF. These include:- {"Sub-Sub-Heading" on}Line spacing{"Bold" on} {"Bold" off}{"Sub-Sub-Heading" off}This is a new attribute which specifies that line spacing is being done as a percentage of the font size rather than as an absolute value. It is used as an effect as well as in a style definition. The new form comes as the {"Screen" on}{\123}linespacep}{"Screen" off} command. The old form is retained as {"Screen" on}{\123}linespace}{"Screen" off}. Example:{tab}{tab}{"Screen" on}{\123}linespacep 120%} {"Screen" off}{"Sub-Sub-Heading" on}Keep together{"Bold" on} {"Bold" off}{"Sub-Sub-Heading" off}These are a new group of attributes which specify that keep together control is applied. They come in three forms:- keep with next, keep together and keep region. They can bee used as an effect as well as in a style definition. {"Example" on}Example:{tab}{tab}{"Screen" on}{\123}keepparagraph on} {tab}{tab}{\123}keepnext on}{"Screen" off} {"Example" off}{tab}{tab}{"Screen" on}{\123}keepregion on} {"Screen" off}{"Sub-Sub-Heading" on}Effect rulers {"Sub-Sub-Heading" off}The {"Screen" on}{\123}define ruler ...}.{"Screen" off} is also used by the new effect based rulers. This are distinguished from old style based rulers by having the new {"Screen" on}{\123}menuitem on/off}{"Screen" off}and {"Screen" on}{\123}effectruler on/off}{"Screen" off}attributes. {"Sub-Sub-Heading" on}Styles showing on the style menu {"Sub-Sub-Heading" off}This can now be controlled by the new {"Screen" on}{\123}menuitem on/off}{"Screen" off} command. This is the control over the 'Show on menu' switch in the main section of the style editor. {"Sub-Heading" on}{"Sub-Sub-Heading" on}{"Sub-Heading" off}Auto-paragraph numbering {"Sub-Sub-Heading" off}These are used to allow automatic numbering of paragraphs using a number of different numbering styles. There are two commands defined:- {"Screen" on}{\123}insertfirst}{"Screen" off} and {"Screen" on}{\123}insertnext}{"Screen" off}. The {"Screen" on}{\123}insertfirst}{"Screen" off} command is followed by two numbers. The first number is the number type. The numbering corresponds to the menu ordering so that 0 is 1,2,3,4... , 1 is I,II,III,IV and so on. The second number is the initial number to be used. The {"Screen" on}{\123}insertnext}{"Screen" off} is followed by a single number which is just the numbering type. {"Example" on}Example:{tab}{tab}{"Screen" on}{\123}insertfirst 0 1} {"Example" off}{tab}{tab}{\123}insertnext 0}{"Screen" off} {"Sub-Sub-Heading" on}{"Sub-Heading" on}{"Sub-Sub-Heading" off}{nextframe}Some examples {"Sub-Heading" off}The {"Index" on}DDF{"Index" off} format to make the words {\144}Some examples{\145} appear in the {\144}sub-heading{\145} style would be: {"Bold" on}{\123}Style{"Bold" off} sub-heading {"Bold" on}On}{"Bold" off}Some examples{"Bold" on}{\123}Style{"Bold" off} sub-heading {"Bold" on}Off}{"Bold" off} The next example includes a {"Index" on}tab{"Index" off} between the words {\144}The{\145} and {\144}quick{\145}. The words {\144}quick brown fox{\145} are in style {\144}Main Heading{\145} and the words {\144}fox jumps{\145} are in style {\144}Italic{\145}. So, The{tab}{"Main Heading" on}quick brown {"Italic" on}fox{"Main Heading" off} jumps{"Italic" off} over the lazy dog. could be translated to {"Index" on}DDF{"Index" off} as: The {"Bold" on}{\123}tab}{\123}{"Bold" off}{\148}Main Heading{\149} {"Bold" on}on}{"Bold" off}quick brown {"Bold" on}{\123}{"Bold" off}{\148}Italic{\149} {"Bold" on}on}{"Bold" off}fox{"Bold" on}{\123}{"Bold" off}{\148}Main Heading{\149} {"Bold" on}off} {"Bold" off}jumps{"Bold" on}{\123}{"Bold" off}{\148}Italic{\149} {"Bold" on}off}{"Bold" off} over the lazy dog. Notice that the alternative form of turning styles on and off is used where the style keyword is omitted. Also, the style names are supplied as quoted strings because the style name {\144}Main Heading{\145} includes a space which would otherwise be taken as a delimiter. Finally, here is the previous {"Index" on}DDF{"Index" off} example as it would be saved from Impression. The line uses only one style, called {\144}{"Index" on}Bold{"Index" off}{\145}, around the keywords and curly brackets and remember that the curly brackets themselves have to be specially encoded... The {"Bold" on}{\123}{\148}Bold{\149} on}{\123}\ 123}{"Bold" off}tab}{"Bold" on}{\123}\ 123}{\123}{\148}Bold{\149} off}{"Bold" off}{\148}Main Heading{\149} {"Bold" on}{\123}{\148}Bold{\149} on}{"Bold" off}on}{"Bold" on}{\123}{\148}Bold{\149} off}{"Bold" off}quick brown {"Bold" on}{\123}{\148}Bold{\149} on}{\123}\ 123}{\123}{\148}Bold{\149} off}{"Bold" off}{\148}Italic{\149} {"Bold" on}{\123}{\148}Bold{\149} on}{"Bold" off}on}{"Bold" on}{\123}{\148}Bold{\149} off}{"Bold" off}fox{"Bold" on}{\123}{\148}Bold{\149} on}{\123}\ 123}{\123}{\148}Bold{\149} off}{"Bold" off}{\148}Main Heading{\149} {"Bold" on}{\123}{\148}Bold{\149} on}{"Bold" off}off} {"Bold" on}{\123}{\148}Bold{\149} off}{"Bold" off}jumps{"Bold" on}{\123}{\148}Bold{\149} on}{\123}\ 123}{\123}{\148}Bold{\149} off}{"Bold" off}{\148}Italic{\149} {"Bold" on}{\123}{\148}Bold{\149} on}{"Bold" off}off}{"Bold" on}{\123}{\148}Bold{\149} off}{"Bold" off} over the lazy dog. {"No Paragraph Space" on}{"Sub-Heading" on}{nextframe}Information for advanced users {"Sub-Heading" off}{"Sub-Sub-Heading" on}Syntax description {"Sub-Sub-Heading" off}The syntax of {"Index" on}DDF{"Index" off} is defined below in pseudo Backus-Naur form (BNF). Future versions of {"Index" on}DDF{"Index" off} may contain extensions to the syntax but they will always be compatible with this syntax. The following symbols are not part of the Document Description Format but belong to BNF. ::={tab}{\144}is composed of{\145} |{tab}{\144}or{\145} []{tab}denotes repetition of the enclosed symbol zero or more times. {"No Paragraph Space" off}{"No Paragraph Space" on}{\146} .. {\147}{tab}denotes selection of one symbol from the specified range.{"No Paragraph Space" off}{"No Paragraph Space" on} Keywords and special characters are shown in {"Index" on}bold{"Index" off}, for example, {"DDF keyword" on}Style{"DDF keyword" off}. {"Index" on}{"No Paragraph Space" off}{"Index" off}{"DDF" on}DDF ::={tab}{tab}ElementList ElementList ::={tab}[ Element ] Element ::={tab}{tab}Character | ControlElement Character ::={tab}ASCII 0 .. ASCII 127{\147} ControlElement ::={tab}{"DDF keyword" on} {\123} {"DDF keyword" off} Command {"DDF keyword" on} } {"DDF keyword" off} Command ::={tab}StyleCommand | {tab}{tab}FrameThrowCommand | {tab}{tab}CodeComand | {tab}{tab}CharacterCommand | {tab}{tab}KernCommand | {tab}{tab}NumberCommand | {tab}{tab}DefineCommand | {tab}{tab}EffectCommand | {tab}{tab}ControlCommand StyleCommand ::={tab}{"DDF keyword" on}Style{"DDF keyword" off} StyleName Switch StyleLevel | {tab}{tab}{"DDF keyword" on}Ruler{"DDF keyword" off} StyleName Switch StyleLevel | {tab}{tab}StyleName Switch StyleLevel | {tab}{tab}StyleName StyleLevel ::={tab}UnsignedInt | Empty StyleName ::={tab}Identifier | String Switch ::={tab}{tab}{"DDF keyword" on}On{"DDF keyword" off} | {"DDF keyword" on}Off{"DDF keyword" off} Identifier ::={tab}{tab}Letter [ Letter | Digit ] Letter ::={tab}{tab}{\146}ASCII {\148}A{\149}.. ASCII{\148}Z{\149}{\147} | {tab}{tab}{\146}ASCII {\148}a{\149} .. ASCII {\148}z{\149}{\147} Digit ::={tab}{tab}{\146}ASCII {\148}0{\149} .. ASCII {\148}9{\149}{\147} String ::={tab}{tab}{"DDF keyword" on} " {"DDF keyword" off} [ {\146}ASCII 32 .. ASCII 126{\147} ] {"DDF keyword" on} " {"DDF keyword" off} FrameThrowCommand ::= {tab}{tab}{"DDF keyword" on}Framethrow{"DDF keyword" off} | {"DDF keyword" on}Nextframe{"DDF keyword" off} CodeCommand ::={tab}{"DDF keyword" on}Code{"DDF keyword" off} UnsignedInt | {tab}{tab}{"DDF keyword" on} \ {"DDF keyword" off} UnsignedInt UnsignedInt ::={tab}Digit [ Digit ] CharacterCommand ::={tab}{"DDF keyword" on}Tab{"DDF keyword" off} | {"DDF keyword" on}CR{"DDF keyword" off} | {"DDF keyword" on}Star{"DDF keyword" off} | {"DDF keyword" on}Hash{"DDF keyword" off} | {"DDF keyword" on}At{"DDF keyword" off} | {"DDF keyword" on}SoftHyphen{"DDF keyword" off} KernCommand ::={tab}{"DDF keyword" on}Kern{"DDF keyword" off} SignedInt SignedInt SignedInt ::={tab}{tab}[ {"DDF keyword" on} + {"DDF keyword" off} | {"DDF keyword" on} - {"DDF keyword" off} ] UnsignedInt DefineCommand ::={tab}{"DDF keyword" on}Define{"DDF keyword" off} {"DDF keyword" on}Style{"DDF keyword" off} StyleName BaseOption {"DDF keyword" on} ; {"DDF keyword" off} AttributeList | {tab}{tab}{"DDF keyword" on}Define{"DDF keyword" off} {"DDF keyword" on}Ruler{"DDF keyword" off} StyleName BaseOption {"DDF keyword" on} ; {"DDF keyword" off} AttributeList BaseOption ::={tab}{"DDF keyword" on}BasedOn{"DDF keyword" off} StyleName | Empty AttributeList ::={tab}Attribute [ {"DDF keyword" on} ; {"DDF keyword" off} Attribute ] | Empty Attribute ::={tab}{tab}FontAttribute | MeasureAttribute | ColourAttribute | {tab}{tab}PercentAttribute | TrackingAttribute | JustifyAttribute | {tab}{tab}TabsAttribute | RuleControlAttribute | SwitchAttribute | {tab}{tab}ScriptAttribute | UnderlineAttribute | LeaderAttribute | {tab}{tab}TracerAttribute | TabCharacterAttribute | FlagAttribute | {tab}{tab}ShortcutAttribute | StylenameAttribute FontAttribute ::={tab}{"DDF keyword" on}Font{"DDF keyword" off} String MeasureAttribute ::={tab}{"DDF keyword" on}FontSize{"DDF keyword" off} Measure | {"DDF keyword" on}LineSpace{"DDF keyword" off} Measure | {tab}{tab}{"DDF keyword" on}SpaceAbove{"DDF keyword" off} Measure | {"DDF keyword" on}SpaceBelow{"DDF keyword" off} Measure | {tab}{tab}{"DDF keyword" on}CondFrameThrow{"DDF keyword" off} Measure | {tab}{tab}{"DDF keyword" on}LeftMargin{"DDF keyword" off} Measure | {"DDF keyword" on}RightMargin{"DDF keyword" off} Measure | {tab}{tab}{"DDF keyword" on}ReturnMargin{"DDF keyword" off} Measure | {"DDF keyword" on}LeftRuleMargin {"DDF keyword" off} Measure | {tab}{tab}{"DDF keyword" on}RightRuleMargin{"DDF keyword" off} Measure | {tab}{tab}{"DDF keyword" on}RuleWidth{"DDF keyword" off} Measure | {"DDF keyword" on}VertRuleWidth{"DDF keyword" off} Measure | {tab}{tab}{"DDF keyword" on}RuleAboveOffset{"DDF keyword" off} Measure |{"DDF" off} {"DDF" on}{"DDF keyword" on}RuleOffset{"DDF keyword" off} Measure | {tab}{tab}{"DDF keyword" on}KeepTogether{"DDF keyword" off} Measure ColourAttribute ::={tab}{"DDF keyword" on}FontColour{"DDF keyword" off} ColourSpec | {"DDF keyword" on}BackColour{"DDF keyword" off} ColourSpec | {tab}{tab}{"DDF keyword" on}LineColour{"DDF keyword" off} ColourSpec | {"DDF keyword" on}RuleColour{"DDF keyword" off} ColourSpec PercentAttribute ::={tab}{"DDF keyword" on}FontAspect{"DDF keyword" off} UnsignedInt {"DDF keyword" on} % {"DDF" off}{"DDF keyword" off}{"DDF" on} | {"DDF" off}{tab}{tab}{tab}{"DDF keyword" on}LinespaceP{"DDF keyword" off}{"DDF" on} UnsignedInt {"DDF keyword" on} % {"DDF" off}{"DDF keyword" off}{"DDF" on} TrackingAttribute ::={tab}{"DDF keyword" on}Tracking{"DDF keyword" off} SignedInt JustifyAttribute ::={tab}{"DDF keyword" on}Justify{"DDF keyword" off} {"DDF keyword" on}Left{"DDF keyword" off} | {"DDF keyword" on}Justify{"DDF keyword" off} {"DDF keyword" on}Centre{"DDF keyword" off} | {tab}{tab}{"DDF keyword" on}Justify{"DDF keyword" off} {"DDF keyword" on}Right{"DDF keyword" off} | {"DDF keyword" on}Justify{"DDF keyword" off} {"DDF keyword" on}Full{"DDF keyword" off} TabsAttribute ::={tab}{"DDF keyword" on}Tabs{"DDF keyword" off} TabList TabList ::={tab}{tab}TabSpec [ {"DDF keyword" on} , {"DDF keyword" off} TabSpec ] TabSpec ::={tab}{tab}TabType Measure TabType ::={tab}{tab}{"DDF keyword" on}Left{"DDF keyword" off} | {"DDF keyword" on}Centre{"DDF keyword" off} | {"DDF keyword" on}Right{"DDF keyword" off} | {"DDF keyword" on}Decimal{"DDF keyword" off} | {"DDF keyword" on}VertRule{"DDF keyword" off} | Empty RuleControlAttribute ::={tab}{"DDF keyword" on}RuleControl{"DDF keyword" off} UnsignedInt SwitchAttribute ::={tab}{"DDF keyword" on}Strikeout{"DDF keyword" off} Switch | {tab}{tab}{"DDF keyword" on}Hyphenate{"DDF keyword" off} Switch | {tab}{tab}{"DDF keyword" on}MenuItem{"DDF keyword" off} Switch | {tab}{tab}{"DDF keyword" on}LockToLinespace{"DDF keyword" off} Switch | {tab}{tab}{"DDF keyword" on}Bold {"DDF keyword" off}Switch | {tab}{tab}{"DDF keyword" on}Italic{"DDF keyword" off} Switch {tab}{tab}{"DDF keyword" on}KeepParagraph{"DDF keyword" off} Switch {tab}{tab}{"DDF keyword" on}KeepNext{"DDF keyword" off} Switch {tab}{tab}{"DDF keyword" on}KeepRegion{"DDF keyword" off} Switch {tab}{tab}{"DDF keyword" on}Overprint{"DDF keyword" off} Switch {tab}{tab}{"DDF keyword" on}OverprintB{"DDF keyword" off} Switch {tab}{tab}{"DDF keyword" on}EffectRuler{"DDF keyword" off} Switch ScriptAttribute ::={tab}{"DDF keyword" on}Script{"DDF keyword" off} {"DDF keyword" on}Off{"DDF keyword" off} | {"DDF keyword" on}Script{"DDF keyword" off} {"DDF keyword" on}Sub{"DDF keyword" off} | {"DDF keyword" on}Script{"DDF keyword" off} {"DDF keyword" on}Super{"DDF keyword" off} UnderlineAttribute ::={tab}{"DDF keyword" on}Underline{"DDF keyword" off} {"DDF keyword" on}Off{"DDF keyword" off} | {"DDF keyword" on}Underline{"DDF keyword" off} UnsignedInt LeaderAttribute ::={tab}{"DDF keyword" on}Leader{"DDF keyword" off} String TabCharacterAttribute ::={tab}{"DDF keyword" on}DecTabChar{"DDF keyword" off} String TracerAttribute ::={tab}{"DDF keyword" on}Index{"DDF keyword" off} | {"DDF keyword" on}Contents{"DDF keyword" off} UnsignedInt FlagAttribute ::={tab}{"DDF keyword" on}AutoLineSpace{"DDF keyword" off} ShortcutAttribute ::={tab}{"DDF keyword" on}Shortcut{"DDF keyword" off} UnsignedInt StylenameAttribute ::={tab}StyleName Measure ::={tab}{tab}Measurement [ Measurement ] Measurement ::={tab}UnsignedReal UnitSpec | {tab}{tab}{"DDF keyword" on} - {"DDF keyword" off} UnsignedReal UnitSpec UnitSpec ::={tab}{tab}{"DDF keyword" on}M{"DDF keyword" off} | {"DDF keyword" on}CM{"DDF keyword" off} | {"DDF keyword" on}MM{"DDF keyword" off} | {"DDF keyword" on}YD{"DDF keyword" off} | {"DDF keyword" on}FT{"DDF keyword" off} | {"DDF keyword" on}IN{"DDF keyword" off} | {"DDF keyword" on}PI{"DDF keyword" off} | {"DDF keyword" on}PT{"DDF keyword" off} | {"DDF keyword" on} " {"DDF keyword" off} | {"DDF keyword" on} ' {"DDF keyword" off} | Empty ColourSpec ::={tab}{"DDF keyword" on}RGB{"DDF keyword" off} {"DDF keyword" on} = {"DDF keyword" off} {"DDF keyword" on} ( {"DDF keyword" off} UnsignedReal {"DDF keyword" on} , {"DDF keyword" off} UnsignedReal {"DDF keyword" on} , {"DDF keyword" off} {tab}{tab}{tab}{tab}UnsignedReal {"DDF keyword" on} ) {"DDF keyword" off} | {tab}{tab}{"DDF keyword" on}CMYK{"DDF keyword" off} {"DDF keyword" on} = {"DDF keyword" off} {"DDF keyword" on} ( {"DDF keyword" off} UnsignedReal {"DDF keyword" on} , {"DDF keyword" off} UnsignedReal {"DDF keyword" on} , {"DDF keyword" off} {tab}{tab}{tab}UnsignedReal {"DDF keyword" on} , {"DDF keyword" off} UnsignedReal {"DDF keyword" on} ) {"DDF keyword" off} | {tab}{tab}{"DDF keyword" on}HSV{"DDF keyword" off} {"DDF keyword" on} = {"DDF keyword" off} {"DDF keyword" on} ( {"DDF keyword" off} UnsignedReal {"DDF keyword" on} , {"DDF keyword" off} UnsignedReal {"DDF keyword" on} , {"DDF keyword" off} {tab}{tab}{tab}{tab}UnsignedReal {"DDF keyword" on} ) {"DDF keyword" off} | {tab}{tab}{"DDF keyword" on}RGB24{"DDF keyword" off} {"DDF keyword" on} = {"DDF keyword" off} {"DDF keyword" on} ( {"DDF keyword" off} UnsignedReal {"DDF keyword" on} , {"DDF keyword" off} UnsignedReal {"DDF keyword" on} , {"DDF keyword" off} {tab}{tab}{tab}{tab}UnsignedReal {"DDF keyword" on} ) {"DDF keyword" off} UnsignedReal ::={tab}UnsignedInt | UnsignedInt {"DDF keyword" on} . {"DDF keyword" off} Digit [ Digit ] NumberCommand ::={tab}{"DDF keyword" on}PageNumber{"DDF keyword" off} NumberSpec | {tab}{tab}{"DDF keyword" on}ChapterNumber{"DDF keyword" off} NumberSpec NumberSpec ::={tab}{"DDF keyword" on}Roman{"DDF keyword" off} | {"DDF keyword" on}UpperRoman{"DDF keyword" off} | {"DDF keyword" on}Decimal{"DDF keyword" off} | {tab}{tab}UnsignedInt | Empty EffectCommand ::={tab}FontEffect | MeasureEffect | PercentEffect | {tab}{tab}JustifyEffect | StrikeoutEffect | ScriptEffect | {tab}{tab}UnderlineEffect | ColourEffect | SwitchEffect FontEffect ::={tab}FontAttribute | {"DDF keyword" on}Font{"DDF keyword" off} MeasureEffect ::={tab}MeasureAttribute | {"DDF keyword" on}FontSize{"DDF keyword" off} | {"DDF keyword" on}LineSpace{"DDF keyword" off} | {tab}{tab}{"DDF keyword" on}SpaceAbove{"DDF keyword" off} | {"DDF keyword" on}SpaceBelow{"DDF keyword" off} | {"DDF keyword" on}CondFrameThrow{"DDF keyword" off} | {tab}{tab}{"DDF keyword" on}LeftMargin{"DDF keyword" off} |{tab}{"DDF keyword" on}RightMargin{"DDF keyword" off} | {"DDF keyword" on}ReturnMargin{"DDF keyword" off} | {tab}{tab}{"DDF keyword" on}RuleWidth{"DDF keyword" off} | {"DDF keyword" on}RuleOffset{"DDF" off}{"DDF keyword" off}{"DDF" on} | {"DDF keyword" on}LeftRuleMargin {"DDF keyword" off} | {tab}{tab}{"DDF keyword" on}RightRuleMargin{"DDF keyword" off} | {"DDF keyword" on}RuleWidth{"DDF keyword" off} | {"DDF keyword" on}VertRuleWidth{"DDF keyword" off} | {tab}{tab}{"DDF keyword" on}RuleAboveOffset{"DDF keyword" off} |{"DDF" off} {"DDF" on}{"DDF keyword" on}RuleOffset{"DDF" off}{"DDF keyword" off}{"DDF" on} | {"DDF keyword" on}KeepTogether{"DDF keyword" off} PercentEffect ::={tab}PercentAttribute | {"DDF keyword" on}FontAspect{"DDF" off}{"DDF keyword" off}{"DDF" on} | {"DDF keyword" on}LineSpaceP{"DDF" off}{"DDF keyword" off}{"DDF" on} TrackingEffect ::={tab}TrackingAttribute | {"DDF keyword" on}Tracking{"DDF" off}{"DDF keyword" off}{"DDF" on} JustifyEffect ::={tab}JustifyAttribute | {"DDF keyword" on}Justify{"DDF keyword" off} StrikeoutEffect ::={tab}StrikeoutAttribute | {"DDF keyword" on}StrikeOut{"DDF keyword" off} ScriptEffect ::={tab}ScriptAttribute | {"DDF keyword" on}Script{"DDF keyword" off} UnderlineEffect ::={tab}UnderlineAttribute | {"DDF keyword" on}Underline{"DDF keyword" off} ColourEffect ::={tab}{"DDF keyword" on}FontColour{"DDF keyword" off} | {"DDF keyword" on}BackColour{"DDF keyword" off} | {"DDF keyword" on}LineColour{"DDF keyword" off} | {tab}{tab}{"DDF keyword" on}RuleColour{"DDF keyword" off} | ColourAttribute SwitchEffect ::={tab}SwitchAttribute | {"DDF keyword" on}Bold{"DDF" off}{"DDF keyword" off}{"DDF" on} | {"DDF" off}{"DDF" on}{"DDF keyword" on}Italic{"DDF keyword" off} | {tab}{tab}{"DDF keyword" on}OverPrint{"DDF keyword" off} | {"DDF keyword" on}OverPrintB{"DDF keyword" off} | {tab}{tab}{"DDF keyword" on}KeepParagraph{"DDF" off}{"DDF keyword" off}{"DDF" on} |{"DDF keyword" on}KeepNext{"DDF keyword" off} | {"DDF keyword" on}KeepRegion{"DDF" off}{"DDF keyword" off}{"DDF" on} ControlCommand ::={tab}{"DDF keyword" on}On{"DDF keyword" off} | {"DDF keyword" on}Off{"DDF keyword" off} Empty ::= {"DDF" off} The Character elements make up the textual part of the file which holds information for the reader. The ControlElements contain information for the formatter about how to display the textual part. All of the Character elements with printable ASCII codes except the opening curly bracket are recognised as part of the text. This means that ASCII codes 32 to 122 and 124 to 126 will be displayed in the formatted output. The only non-printing ASCII codes which have any meaning are: {"No Paragraph Space" on}ASCII 9{tab}{tab}Tab ASCII 10{tab}End of paragraph ASCII 13{tab}End of paragraph{"No Paragraph Space" off} Character elements with any other ASCII code are ignored. {"No Paragraph Space" on}To display an opening curly bracket in the text, one of the code commands must be used to insert the ASCII code, ie {"Bold" on}{\123}Code{"Bold" off} 123{"Bold" on}}{"Bold" off} or {"Bold" on}{\123}\ {"Bold" off}123{"Bold" on}}{"Bold" off}{"No Paragraph Space" off} Inside the ControlElements the closing curly bracket, semi-colon, comma and any ASCII code less than 33 are treated as delimiters separating keywords and parameters. Spaces are treated as white space. The style change commands assume that the named styles already exist or have been created by the {"Screen" on}{\123} define style ..}{"Screen" off} command and that the interpreter reading the file can format the text accordingly. {"Sub-Heading" on}Hint: {"Sub-Heading" off}The ability to define styles in DDF is very powerful. If you prefer to define styles textually rather than use the style editor you can do so with a text editor. First, type in the DDF command to build the style or styles that you want in the text editor. Then put the caret in the Impression document that you want the style to be defined in. Select the save option from the text editor, drag the text file over the Impression document where the caret is and drop it there. The new style will be created in that document (assuming that there weren't any syntax errors in the style definition).