
## CompatibilityOptions class

Contains compatibility options (that is, the user preferences entered on the **Compatibility**
tab of the **Options** dialog in Microsoft Word).
To learn more, visit the [Detect File Format and Check Format Compatibility](https://docs.aspose.com/words/nodejs-net/detect-file-format-and-check-format-compatibility/) documentation article.




### Properties

| Name | Description |
| --- | --- |
| [adjustLineHeightInTable](./adjustLineHeightInTable/) | Add Document Grid Line Pitch To Lines in Table Cells. |
| [alignTablesRowByRow](./alignTablesRowByRow/) | Align Table Rows Independently. |
| [allowSpaceOfSameStyleInTable](./allowSpaceOfSameStyleInTable/) | Allow Contextual Spacing of Paragraphs in Tables. |
| [applyBreakingRules](./applyBreakingRules/) | Use Legacy Ethiopic and Amharic Line Breaking Rules. |
| [autoSpaceLikeWord95](./autoSpaceLikeWord95/) | Emulate Word 95 Full-Width Character Spacing. |
| [autofitToFirstFixedWidthCell](./autofitToFirstFixedWidthCell/) | Allow Table Columns To Exceed Preferred Widths of Constituent Cells. |
| [balanceSingleByteDoubleByteWidth](./balanceSingleByteDoubleByteWidth/) | Balance Single Byte and Double Byte Characters. |
| [cachedColBalance](./cachedColBalance/) | Use Cached Paragraph Information for Column Balancing. |
| [convMailMergeEsc](./convMailMergeEsc/) | Treat Backslash Quotation Delimiter as Two Quotation Marks. |
| [disableOpenTypeFontFormattingFeatures](./disableOpenTypeFontFormattingFeatures/) | Specifies to disable OpenType font formatting features. |
| [displayHangulFixedWidth](./displayHangulFixedWidth/) | Always Use Fixed Width for Hangul Characters. |
| [doNotAutofitConstrainedTables](./doNotAutofitConstrainedTables/) | Do Not AutoFit Tables To Fit Next To Wrapped Objects. |
| [doNotBreakConstrainedForcedTable](./doNotBreakConstrainedForcedTable/) | Don't Break Table Rows Around Floating Tables. |
| [doNotBreakWrappedTables](./doNotBreakWrappedTables/) | Do Not Allow Floating Tables To Break Across Pages. |
| [doNotExpandShiftReturn](./doNotExpandShiftReturn/) | Don't Justify Lines Ending in Soft Line Break. |
| [doNotLeaveBackslashAlone](./doNotLeaveBackslashAlone/) | Convert Backslash To Yen Sign When Entered. |
| [doNotSnapToGridInCell](./doNotSnapToGridInCell/) | Do Not Snap to Document Grid in Table Cells with Objects. |
| [doNotSuppressIndentation](./doNotSuppressIndentation/) | Do Not Ignore Floating Objects When Calculating Paragraph Indentation. |
| [doNotSuppressParagraphBorders](./doNotSuppressParagraphBorders/) | Do Not Suppress Paragraph Borders Next To Frames. |
| [doNotUseEastAsianBreakRules](./doNotUseEastAsianBreakRules/) | Do Not Compress Compressible Characters When Using Document Grid. |
| [doNotUseHTMLParagraphAutoSpacing](./doNotUseHTMLParagraphAutoSpacing/) | Use Fixed Paragraph Spacing for HTML Auto Setting. |
| [doNotUseIndentAsNumberingTabStop](./doNotUseIndentAsNumberingTabStop/) | Ignore Hanging Indent When Creating Tab Stop After Numbering. |
| [doNotVertAlignCellWithSp](./doNotVertAlignCellWithSp/) | Don't Vertically Align Cells Containing Floating Objects. |
| [doNotVertAlignInTxbx](./doNotVertAlignInTxbx/) | Ignore Vertical Alignment in Textboxes. |
| [doNotWrapTextWithPunct](./doNotWrapTextWithPunct/) | Do Not Allow Hanging Punctuation With Character Grid. |
| [footnoteLayoutLikeWW8](./footnoteLayoutLikeWW8/) | Emulate Word 6.x/95/97 Footnote Placement. |
| [forgetLastTabAlignment](./forgetLastTabAlignment/) | Ignore Width of Last Tab Stop When Aligning Paragraph If It Is Not Left Aligned. |
| [growAutofit](./growAutofit/) | Allow Tables to AutoFit Into Page Margins. |
| [layoutRawTableWidth](./layoutRawTableWidth/) | Ignore Space Before Table When Deciding If Table Should Wrap Floating Object. |
| [layoutTableRowsApart](./layoutTableRowsApart/) | Allow Table Rows to Wrap Inline Objects Independently. |
| [lineWrapLikeWord6](./lineWrapLikeWord6/) | Emulate Word 6.0 Line Wrapping for East Asian Text. |
| [mwsmallCaps](./mwsmallCaps/) | Emulate Word 5.x for the Macintosh Small Caps Formatting. |
| [noColumnBalance](./noColumnBalance/) | Do Not Balance Text Columns within a Section. |
| [noExtraLineSpacing](./noExtraLineSpacing/) | Do Not Center Content on Lines With Exact Line Height. |
| [noLeading](./noLeading/) | Do Not Add Leading Between Lines of Text. |
| [noSpaceRaiseLower](./noSpaceRaiseLower/) | Do Not Increase Line Height for Raised/Lowered Text. |
| [noTabHangInd](./noTabHangInd/) | Do Not Create Custom Tab Stop for Hanging Indent. |
| [overrideTableStyleFontSizeAndJustification](./overrideTableStyleFontSizeAndJustification/) | Specifies how the style hierarchy of the document is evaluated. |
| [printBodyTextBeforeHeader](./printBodyTextBeforeHeader/) | Print Body Text before Header/Footer Contents. |
| [printColBlack](./printColBlack/) | Print Colors as Black And White without Dithering. |
| [selectFldWithFirstOrLastChar](./selectFldWithFirstOrLastChar/) | Select Field When First or Last Character Is Selected. |
| [shapeLayoutLikeWW8](./shapeLayoutLikeWW8/) | Emulate Word 97 Text Wrapping Around Floating Objects. |
| [showBreaksInFrames](./showBreaksInFrames/) | Display Page/Column Breaks Present in Frames. |
| [spaceForUL](./spaceForUL/) | Add Additional Space Below Baseline For Underlined East Asian Text. |
| [spacingInWholePoints](./spacingInWholePoints/) | Only Expand/Condense Text By Whole Points. |
| [splitPgBreakAndParaMark](./splitPgBreakAndParaMark/) | Always Move Paragraph Mark to Page after a Page Break. |
| [subFontBySize](./subFontBySize/) | Increase Priority Of Font Size During Font Substitution. |
| [suppressBottomSpacing](./suppressBottomSpacing/) | Ignore Exact Line Height for Last Line on Page. |
| [suppressSpBfAfterPgBrk](./suppressSpBfAfterPgBrk/) | Do Not Use Space Before On First Line After a Page Break. |
| [suppressSpacingAtTopOfPage](./suppressSpacingAtTopOfPage/) | Ignore Minimum Line Height for First Line on Page. |
| [suppressTopSpacing](./suppressTopSpacing/) | Ignore Minimum and Exact Line Height for First Line on Page. |
| [suppressTopSpacingWP](./suppressTopSpacingWP/) | Emulate WordPerfect 5.x Line Spacing. |
| [swapBordersFacingPgs](./swapBordersFacingPgs/) | Swap Paragraph Borders on Odd Numbered Pages. |
| [swapInsideAndOutsideForMirrorIndentsAndRelativePositioning](./swapInsideAndOutsideForMirrorIndentsAndRelativePositioning/) | Specifies to swap inside and outside for mirror indents and relative positioning. |
| [transparentMetafiles](./transparentMetafiles/) | Specifies not to blank the area behind metafile pictures. |
| [truncateFontHeightsLikeWP6](./truncateFontHeightsLikeWP6/) | Emulate WordPerfect 6.x Font Height Calculation. |
| [uicompat97To2003](./uicompat97To2003/) | True to disable UI functionality which is not compatible with Word97-2003. Default value is ``false``. |
| [ulTrailSpace](./ulTrailSpace/) | Underline All Trailing Spaces. |
| [underlineTabInNumList](./underlineTabInNumList/) | Underline Following Character Following Numbering. |
| [useAltKinsokuLineBreakRules](./useAltKinsokuLineBreakRules/) | Use Alternate Set of East Asian Line Breaking Rules. |
| [useAnsiKerningPairs](./useAnsiKerningPairs/) | Use ANSI Kerning Pairs from Fonts. |
| [useFELayout](./useFELayout/) | Do Not Bypass East Asian/Complex Script Layout Code. |
| [useNormalStyleForList](./useNormalStyleForList/) | Do Not Automatically Apply List Paragraph Style To Bulleted/Numbered Text. |
| [usePrinterMetrics](./usePrinterMetrics/) | Use Printer Metrics To Display Documents. |
| [useSingleBorderforContiguousCells](./useSingleBorderforContiguousCells/) | Use Simplified Rules For Table Border Conflicts. |
| [useWord2002TableStyleRules](./useWord2002TableStyleRules/) | Emulate Word 2002 Table Style Rules. |
| [useWord2010TableStyleRules](./useWord2010TableStyleRules/) | Specifies to use Word2010 table style rules. |
| [useWord97LineBreakRules](./useWord97LineBreakRules/) | Emulate Word 97 East Asian Line Breaking. |
| [wpjustification](./wpjustification/) | Emulate WordPerfect 6.x Paragraph Justification. |
| [wpspaceWidth](./wpspaceWidth/) | Specifies whether to set the width of a space as is done in WordPerfect 5.x. |
| [wrapTrailSpaces](./wrapTrailSpaces/) | Line Wrap Trailing Spaces. |

### Methods

| Name | Description |
| --- | --- |
|[ optimizeFor(version)](./optimizeFor/#mswordversion) | Allows to optimize the document contents as well as default Aspose.Words behavior to a particular versions of MS Word. |

### Examples

Shows how to set an OOXML compliance specification for a saved document to adhere to.

```js
let doc = new aw.Document();
let builder = new aw.DocumentBuilder(doc);

// If we configure compatibility options to comply with Microsoft Word 2003,
// inserting an image will define its shape using VML.
doc.compatibilityOptions.optimizeFor(aw.Settings.MsWordVersion.Word2003);
builder.insertImage(base.imageDir + "Transparent background logo.png");

expect(doc.getShape(0, true).markupLanguage).toEqual(aw.Drawing.ShapeMarkupLanguage.Vml);

// The "ISO/IEC 29500:2008" OOXML standard does not support VML shapes.
// If we set the "Compliance" property of the SaveOptions object to "OoxmlCompliance.Iso29500_2008_Strict",
// any document we save while passing this object will have to follow that standard. 
let saveOptions = new aw.Saving.OoxmlSaveOptions();
saveOptions.compliance = aw.Saving.OoxmlCompliance.Iso29500_2008_Strict;
saveOptions.saveFormat = aw.SaveFormat.Docx;

doc.save(base.artifactsDir + "OoxmlSaveOptions.Iso29500Strict.docx", saveOptions);

// Our saved document defines the shape using DML to adhere to the "ISO/IEC 29500:2008" OOXML standard.
doc = new aw.Document(base.artifactsDir + "OoxmlSaveOptions.Iso29500Strict.docx");

expect(doc.getShape(0, true).markupLanguage).toEqual(aw.Drawing.ShapeMarkupLanguage.Dml);
```

Shows how to optimize the document for different versions of Microsoft Word.

```js
test('OptimizeFor', () => {
  let doc = new aw.Document();

  // This object contains an extensive list of flags unique to each document
  // that allow us to facilitate backward compatibility with older versions of Microsoft Word.
  let options = doc.compatibilityOptions;

  // Print the default settings for a blank document.
  console.log("\nDefault optimization settings:");
  printCompatibilityOptions(options);

  // We can access these settings in Microsoft Word via "File" -> "Options" -> "Advanced" -> "Compatibility options for...".
  doc.save(base.artifactsDir + "CompatibilityOptions.optimizeFor.DefaultSettings.docx");

  // We can use the OptimizeFor method to ensure optimal compatibility with a specific Microsoft Word version.
  doc.compatibilityOptions.optimizeFor(aw.Settings.MsWordVersion.Word2010);
  console.log("\nOptimized for Word 2010:");
  printCompatibilityOptions(options);

  doc.compatibilityOptions.optimizeFor(aw.Settings.MsWordVersion.Word2000);
  console.log("\nOptimized for Word 2000:");
  printCompatibilityOptions(options);
});


/// <summary>
/// Groups all flags in a document's compatibility options object by state, then prints each group.
/// </summary>
function printCompatibilityOptions(options) {
  let enabledOptions = [];
  let disabledOptions = [];
  addOptionName(options.adjustLineHeightInTable, "AdjustLineHeightInTable", enabledOptions, disabledOptions);
  addOptionName(options.alignTablesRowByRow, "AlignTablesRowByRow", enabledOptions, disabledOptions);
  addOptionName(options.allowSpaceOfSameStyleInTable, "AllowSpaceOfSameStyleInTable", enabledOptions, disabledOptions);
  addOptionName(options.applyBreakingRules, "ApplyBreakingRules", enabledOptions, disabledOptions);
  addOptionName(options.autoSpaceLikeWord95, "AutoSpaceLikeWord95", enabledOptions, disabledOptions);
  addOptionName(options.autofitToFirstFixedWidthCell, "AutofitToFirstFixedWidthCell", enabledOptions, disabledOptions);
  addOptionName(options.balanceSingleByteDoubleByteWidth, "BalanceSingleByteDoubleByteWidth", enabledOptions, disabledOptions);
  addOptionName(options.cachedColBalance, "CachedColBalance", enabledOptions, disabledOptions);
  addOptionName(options.convMailMergeEsc, "ConvMailMergeEsc", enabledOptions, disabledOptions);
  addOptionName(options.disableOpenTypeFontFormattingFeatures, "DisableOpenTypeFontFormattingFeatures", enabledOptions, disabledOptions);
  addOptionName(options.displayHangulFixedWidth, "DisplayHangulFixedWidth", enabledOptions, disabledOptions);
  addOptionName(options.doNotAutofitConstrainedTables, "DoNotAutofitConstrainedTables", enabledOptions, disabledOptions);
  addOptionName(options.doNotBreakConstrainedForcedTable, "DoNotBreakConstrainedForcedTable", enabledOptions, disabledOptions);
  addOptionName(options.doNotBreakWrappedTables, "DoNotBreakWrappedTables", enabledOptions, disabledOptions);
  addOptionName(options.doNotExpandShiftReturn, "DoNotExpandShiftReturn", enabledOptions, disabledOptions);
  addOptionName(options.doNotLeaveBackslashAlone, "DoNotLeaveBackslashAlone", enabledOptions, disabledOptions);
  addOptionName(options.doNotSnapToGridInCell, "DoNotSnapToGridInCell", enabledOptions, disabledOptions);
  addOptionName(options.doNotSuppressIndentation, "DoNotSnapToGridInCell", enabledOptions, disabledOptions);
  addOptionName(options.doNotSuppressParagraphBorders, "DoNotSuppressParagraphBorders", enabledOptions, disabledOptions);
  addOptionName(options.doNotUseEastAsianBreakRules, "DoNotUseEastAsianBreakRules", enabledOptions, disabledOptions);
  addOptionName(options.doNotUseHTMLParagraphAutoSpacing, "DoNotUseHTMLParagraphAutoSpacing", enabledOptions, disabledOptions);
  addOptionName(options.doNotUseIndentAsNumberingTabStop, "DoNotUseIndentAsNumberingTabStop", enabledOptions, disabledOptions);
  addOptionName(options.doNotVertAlignCellWithSp, "DoNotVertAlignCellWithSp", enabledOptions, disabledOptions);
  addOptionName(options.doNotVertAlignInTxbx, "DoNotVertAlignInTxbx", enabledOptions, disabledOptions);
  addOptionName(options.doNotWrapTextWithPunct, "DoNotWrapTextWithPunct", enabledOptions, disabledOptions);
  addOptionName(options.footnoteLayoutLikeWW8, "FootnoteLayoutLikeWW8", enabledOptions, disabledOptions);
  addOptionName(options.forgetLastTabAlignment, "ForgetLastTabAlignment", enabledOptions, disabledOptions);
  addOptionName(options.growAutofit, "GrowAutofit", enabledOptions, disabledOptions);
  addOptionName(options.layoutRawTableWidth, "LayoutRawTableWidth", enabledOptions, disabledOptions);
  addOptionName(options.layoutTableRowsApart, "LayoutTableRowsApart", enabledOptions, disabledOptions);
  addOptionName(options.lineWrapLikeWord6, "LineWrapLikeWord6", enabledOptions, disabledOptions);
  addOptionName(options.mWSmallCaps, "MWSmallCaps", enabledOptions, disabledOptions);
  addOptionName(options.noColumnBalance, "NoColumnBalance", enabledOptions, disabledOptions);
  addOptionName(options.noExtraLineSpacing, "NoExtraLineSpacing", enabledOptions, disabledOptions);
  addOptionName(options.noLeading, "NoLeading", enabledOptions, disabledOptions);
  addOptionName(options.noSpaceRaiseLower, "NoSpaceRaiseLower", enabledOptions, disabledOptions);
  addOptionName(options.noTabHangInd, "NoTabHangInd", enabledOptions, disabledOptions);
  addOptionName(options.overrideTableStyleFontSizeAndJustification, "OverrideTableStyleFontSizeAndJustification", enabledOptions, disabledOptions);
  addOptionName(options.printBodyTextBeforeHeader, "PrintBodyTextBeforeHeader", enabledOptions, disabledOptions);
  addOptionName(options.printColBlack, "PrintColBlack", enabledOptions, disabledOptions);
  addOptionName(options.selectFldWithFirstOrLastChar, "SelectFldWithFirstOrLastChar", enabledOptions, disabledOptions);
  addOptionName(options.shapeLayoutLikeWW8, "ShapeLayoutLikeWW8", enabledOptions, disabledOptions);
  addOptionName(options.showBreaksInFrames, "ShowBreaksInFrames", enabledOptions, disabledOptions);
  addOptionName(options.spaceForUL, "SpaceForUL", enabledOptions, disabledOptions);
  addOptionName(options.spacingInWholePoints, "SpacingInWholePoints", enabledOptions, disabledOptions);
  addOptionName(options.splitPgBreakAndParaMark, "SplitPgBreakAndParaMark", enabledOptions, disabledOptions);
  addOptionName(options.subFontBySize, "SubFontBySize", enabledOptions, disabledOptions);
  addOptionName(options.suppressBottomSpacing, "SuppressBottomSpacing", enabledOptions, disabledOptions);
  addOptionName(options.suppressSpBfAfterPgBrk, "SuppressSpBfAfterPgBrk", enabledOptions, disabledOptions);
  addOptionName(options.suppressSpacingAtTopOfPage, "SuppressSpacingAtTopOfPage", enabledOptions, disabledOptions);
  addOptionName(options.suppressTopSpacing, "SuppressTopSpacing", enabledOptions, disabledOptions);
  addOptionName(options.suppressTopSpacingWP, "SuppressTopSpacingWP", enabledOptions, disabledOptions);
  addOptionName(options.swapBordersFacingPgs, "SwapBordersFacingPgs", enabledOptions, disabledOptions);
  addOptionName(options.swapInsideAndOutsideForMirrorIndentsAndRelativePositioning, "SwapInsideAndOutsideForMirrorIndentsAndRelativePositioning", enabledOptions, disabledOptions);
  addOptionName(options.transparentMetafiles, "TransparentMetafiles", enabledOptions, disabledOptions);
  addOptionName(options.truncateFontHeightsLikeWP6, "TruncateFontHeightsLikeWP6", enabledOptions, disabledOptions);
  addOptionName(options.uICompat97To2003, "UICompat97To2003", enabledOptions, disabledOptions);
  addOptionName(options.ulTrailSpace, "UlTrailSpace", enabledOptions, disabledOptions);
  addOptionName(options.underlineTabInNumList, "UnderlineTabInNumList", enabledOptions, disabledOptions);
  addOptionName(options.useAltKinsokuLineBreakRules, "UseAltKinsokuLineBreakRules", enabledOptions, disabledOptions);
  addOptionName(options.useAnsiKerningPairs, "UseAnsiKerningPairs", enabledOptions, disabledOptions);
  addOptionName(options.useFELayout, "UseFELayout", enabledOptions, disabledOptions);
  addOptionName(options.useNormalStyleForList, "UseNormalStyleForList", enabledOptions, disabledOptions);
  addOptionName(options.usePrinterMetrics, "UsePrinterMetrics", enabledOptions, disabledOptions);
  addOptionName(options.useSingleBorderforContiguousCells, "UseSingleBorderforContiguousCells", enabledOptions, disabledOptions);
  addOptionName(options.useWord2002TableStyleRules, "UseWord2002TableStyleRules", enabledOptions, disabledOptions);
  addOptionName(options.useWord2010TableStyleRules, "UseWord2010TableStyleRules", enabledOptions, disabledOptions);
  addOptionName(options.useWord97LineBreakRules, "UseWord97LineBreakRules", enabledOptions, disabledOptions);
  addOptionName(options.wPJustification, "WPJustification", enabledOptions, disabledOptions);
  addOptionName(options.wPSpaceWidth, "WPSpaceWidth", enabledOptions, disabledOptions);
  addOptionName(options.wrapTrailSpaces, "WrapTrailSpaces", enabledOptions, disabledOptions);
  /*console.log("\tEnabled options:");
  for (let optionName of enabledOptions)
    console.log(`\t\t${optionName}`);
  console.log("\tDisabled options:");
  for (let optionName of disabledOptions)
    console.log(`\t\t${optionName}`);*/
}

function addOptionName(option, optionName, enabledOptions, disabledOptions)
{
  if (option)
    enabledOptions.push(optionName);
  else
    disabledOptions.push(optionName);
}
```

### See Also

* module [Aspose.Words.Settings](../)
* class [Document](../../aspose.words/document/)
* property [Document.compatibilityOptions](../../aspose.words/document/compatibilityOptions/)

