/// <summary>
 /// Copies all of the properties from the source writing system to this writing system.
 /// </summary>
 /// <param name="source">The source writing system.</param>
 public void Copy(CoreWritingSystemDefinition source)
 {
     Language = source.Language;
     Script   = source.Script;
     Region   = source.Region;
     Variants.ReplaceAll(source.Variants);
     Abbreviation      = source.Abbreviation;
     RightToLeftScript = source.RightToLeftScript;
     Fonts.ReplaceAll(source.Fonts.CloneItems());
     DefaultFont        = source.DefaultFont == null ? null : Fonts[source.Fonts.IndexOf(source.DefaultFont)];
     Keyboard           = source.Keyboard;
     VersionNumber      = source.VersionNumber;
     VersionDescription = source.VersionDescription;
     SpellCheckDictionaries.ReplaceAll(source.SpellCheckDictionaries.CloneItems());
     SpellCheckingId = source.SpellCheckingId;
     DateModified    = source.DateModified;
     LocalKeyboard   = source.LocalKeyboard;
     WindowsLcid     = source.WindowsLcid;
     DefaultRegion   = source.DefaultRegion;
     KnownKeyboards.ReplaceAll(source.KnownKeyboards);
     MatchedPairs.Clear();
     MatchedPairs.UnionWith(source.MatchedPairs);
     PunctuationPatterns.Clear();
     PunctuationPatterns.UnionWith(source.PunctuationPatterns);
     QuotationMarks.ReplaceAll(source.QuotationMarks);
     QuotationParagraphContinueType = source.QuotationParagraphContinueType;
     Collations.ReplaceAll(source.Collations.CloneItems());
     DefaultCollation = source.DefaultCollation == null ? null : Collations[source.Collations.IndexOf(source.DefaultCollation)];
     CharacterSets.ReplaceAll(source.CharacterSets.CloneItems());
     LegacyMapping     = source.LegacyMapping;
     IsGraphiteEnabled = source.IsGraphiteEnabled;
 }