diff --git a/BUILD.gn b/BUILD.gn
index 5464d1c..1cbc476 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -363,7 +363,6 @@
     "core/fpdfdoc/cpvt_generateap.h",
     "core/fpdfdoc/cpvt_line.h",
     "core/fpdfdoc/cpvt_lineinfo.h",
-    "core/fpdfdoc/cpvt_secprops.h",
     "core/fpdfdoc/cpvt_section.h",
     "core/fpdfdoc/cpvt_sectioninfo.cpp",
     "core/fpdfdoc/cpvt_sectioninfo.h",
diff --git a/core/fpdfdoc/cpdf_variabletext.cpp b/core/fpdfdoc/cpdf_variabletext.cpp
index 753e7ea..e22e954 100644
--- a/core/fpdfdoc/cpdf_variabletext.cpp
+++ b/core/fpdfdoc/cpdf_variabletext.cpp
@@ -237,8 +237,6 @@
 
   CSection* pSection = m_pVT->m_SectionArray[m_CurPos.nSecIndex].get();
   section.rcSection = m_pVT->InToOut(pSection->m_SecInfo.rcSection);
-  if (pSection->m_SecInfo.pSecProps)
-    section.SecProps = *pSection->m_SecInfo.pSecProps;
   if (pSection->m_SecInfo.pWordProps)
     section.WordProps = *pSection->m_SecInfo.pWordProps;
   return true;
@@ -249,8 +247,6 @@
     return false;
 
   CSection* pSection = m_pVT->m_SectionArray[m_CurPos.nSecIndex].get();
-  if (pSection->m_SecInfo.pSecProps)
-    *pSection->m_SecInfo.pSecProps = section.SecProps;
   if (pSection->m_SecInfo.pWordProps)
     *pSection->m_SecInfo.pWordProps = section.WordProps;
   return true;
diff --git a/core/fpdfdoc/cpdf_variabletext.h b/core/fpdfdoc/cpdf_variabletext.h
index 9daf56e..f714102 100644
--- a/core/fpdfdoc/cpdf_variabletext.h
+++ b/core/fpdfdoc/cpdf_variabletext.h
@@ -23,7 +23,6 @@
 class CPVT_Word;
 class CSection;
 class IPVT_FontMap;
-struct CPVT_SecProps;
 struct CPVT_Section;
 struct CPVT_SectionInfo;
 
diff --git a/core/fpdfdoc/cpvt_secprops.h b/core/fpdfdoc/cpvt_secprops.h
deleted file mode 100644
index 93829f9..0000000
--- a/core/fpdfdoc/cpvt_secprops.h
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2016 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#ifndef CORE_FPDFDOC_CPVT_SECPROPS_H_
-#define CORE_FPDFDOC_CPVT_SECPROPS_H_
-
-#include "core/fxcrt/fx_system.h"
-
-struct CPVT_SecProps {
-  CPVT_SecProps() : fLineLeading(0.0f), fLineIndent(0.0f), nAlignment(0) {}
-
-  CPVT_SecProps(float lineLeading, float lineIndent, int32_t alignment)
-      : fLineLeading(lineLeading),
-        fLineIndent(lineIndent),
-        nAlignment(alignment) {}
-
-  CPVT_SecProps(const CPVT_SecProps& other)
-      : fLineLeading(other.fLineLeading),
-        fLineIndent(other.fLineIndent),
-        nAlignment(other.nAlignment) {}
-
-  float fLineLeading;
-  float fLineIndent;
-  int32_t nAlignment;
-};
-
-#endif  // CORE_FPDFDOC_CPVT_SECPROPS_H_
diff --git a/core/fpdfdoc/cpvt_section.h b/core/fpdfdoc/cpvt_section.h
index 42b16fd..ce8928c 100644
--- a/core/fpdfdoc/cpvt_section.h
+++ b/core/fpdfdoc/cpvt_section.h
@@ -7,7 +7,6 @@
 #ifndef CORE_FPDFDOC_CPVT_SECTION_H_
 #define CORE_FPDFDOC_CPVT_SECTION_H_
 
-#include "core/fpdfdoc/cpvt_secprops.h"
 #include "core/fpdfdoc/cpvt_wordplace.h"
 #include "core/fpdfdoc/cpvt_wordprops.h"
 #include "core/fxcrt/fx_coordinates.h"
@@ -15,7 +14,6 @@
 struct CPVT_Section {
   CPVT_WordPlace secplace;
   CFX_FloatRect rcSection;
-  CPVT_SecProps SecProps;
   CPVT_WordProps WordProps;
 };
 
diff --git a/core/fpdfdoc/cpvt_sectioninfo.cpp b/core/fpdfdoc/cpvt_sectioninfo.cpp
index ec0262c..96ce37d 100644
--- a/core/fpdfdoc/cpvt_sectioninfo.cpp
+++ b/core/fpdfdoc/cpvt_sectioninfo.cpp
@@ -21,11 +21,6 @@
 
   rcSection = other.rcSection;
   nTotalLine = other.nTotalLine;
-  if (other.pSecProps)
-    pSecProps = pdfium::MakeUnique<CPVT_SecProps>(*other.pSecProps);
-  else
-    pSecProps.reset();
-
   if (other.pWordProps)
     pWordProps = pdfium::MakeUnique<CPVT_WordProps>(*other.pWordProps);
   else
diff --git a/core/fpdfdoc/cpvt_sectioninfo.h b/core/fpdfdoc/cpvt_sectioninfo.h
index 6422efe..7ebe06c 100644
--- a/core/fpdfdoc/cpvt_sectioninfo.h
+++ b/core/fpdfdoc/cpvt_sectioninfo.h
@@ -10,7 +10,6 @@
 #include <memory>
 
 #include "core/fpdfdoc/cpvt_floatrect.h"
-#include "core/fpdfdoc/cpvt_secprops.h"
 #include "core/fpdfdoc/cpvt_wordprops.h"
 
 struct CPVT_SectionInfo {
@@ -22,7 +21,6 @@
 
   CPVT_FloatRect rcSection;
   int32_t nTotalLine;
-  std::unique_ptr<CPVT_SecProps> pSecProps;
   std::unique_ptr<CPVT_WordProps> pWordProps;
 };
 
diff --git a/fpdfsdk/pwl/cpwl_list_box.h b/fpdfsdk/pwl/cpwl_list_box.h
index 7cfdd18..885969c 100644
--- a/fpdfsdk/pwl/cpwl_list_box.h
+++ b/fpdfsdk/pwl/cpwl_list_box.h
@@ -16,7 +16,6 @@
 class CPWL_List_Notify;
 class CPWL_ListBox;
 class IPWL_Filler_Notify;
-struct CPVT_SecProps;
 struct CPVT_WordPlace;
 struct CPVT_WordProps;
 
