internal static DxfHeaderSection HeaderSectionFromBuffer(DxfCodePairBufferReader buffer) { var section = new DxfHeaderSection(); string keyName = null; Func <short, bool> shortToBool = value => value != 0; while (buffer.ItemsRemain) { var pair = buffer.Peek(); buffer.Advance(); if (DxfCodePair.IsSectionEnd(pair)) { // done reading settings break; } if (pair.Code == 9) { // what setting to get keyName = pair.StringValue; } else { section.Header.SetHeaderVariable(keyName, pair); if (string.Compare(keyName, "$ACADVER", StringComparison.OrdinalIgnoreCase) == 0 && section.Header.Version >= DxfAcadVersion.R2007) { // R2007 and up should switch to a UTF8 reader buffer.SetUtf8Reader(); } } } return(section); }