diff --git a/constants/appearance.cpp b/constants/appearance.cpp
index 7a73cd4..6283e42 100644
--- a/constants/appearance.cpp
+++ b/constants/appearance.cpp
@@ -7,7 +7,7 @@
 namespace pdfium {
 namespace appearance {
 
-// ISO 32000 spec, table 189.
+// ISO 32000-1:2008 spec, table 189.
 // Entries in an appearance characteristics dictionary.
 const char kR[] = "R";
 const char kBC[] = "BC";
diff --git a/core/fpdfapi/page/cpdf_basedcs.h b/core/fpdfapi/page/cpdf_basedcs.h
index 0dcfcd8..eeed972 100644
--- a/core/fpdfapi/page/cpdf_basedcs.h
+++ b/core/fpdfapi/page/cpdf_basedcs.h
@@ -11,8 +11,8 @@
 #include "core/fxcrt/retain_ptr.h"
 
 // Represents a color space that is based on another color space. This includes
-// all the special color spaces in ISO 32000, table 62, as well as the ICCBased
-// color space.
+// all the special color spaces in ISO 32000-1:2008, table 62, as well as the
+// ICCBased color space.
 class CPDF_BasedCS : public CPDF_ColorSpace {
  public:
   CONSTRUCT_VIA_MAKE_RETAIN;
diff --git a/core/fpdfapi/page/cpdf_function.h b/core/fpdfapi/page/cpdf_function.h
index 4cd636d..a0f3382 100644
--- a/core/fpdfapi/page/cpdf_function.h
+++ b/core/fpdfapi/page/cpdf_function.h
@@ -21,7 +21,7 @@
 
 class CPDF_Function {
  public:
-  // Valid values are from PDF 32000-1:2008 spec, table 38. DO NOT CHANGE.
+  // Valid values are from ISO 32000-1:2008 spec, table 38. DO NOT CHANGE.
   enum class Type {
     kTypeInvalid = -1,
     kType0Sampled = 0,
diff --git a/core/fpdfapi/parser/cpdf_dictionary.h b/core/fpdfapi/parser/cpdf_dictionary.h
index 83c099e..fa81e1e 100644
--- a/core/fpdfapi/parser/cpdf_dictionary.h
+++ b/core/fpdfapi/parser/cpdf_dictionary.h
@@ -40,7 +40,8 @@
   bool WriteTo(IFX_ArchiveStream* archive,
                const CPDF_Encryptor* encryptor) const override;
 
-  // `key` must be non-empty and ASCII, per PDF 32000 standard, section 7.2.1.
+  // `key` must be non-empty and ASCII, per ISO 32000-1:2008 spec, section
+  // 7.2.1.
   static bool IsValidKey(const ByteString& key);
 
   bool IsLocked() const { return !!m_LockCount; }
diff --git a/core/fpdfapi/parser/cpdf_hint_tables.cpp b/core/fpdfapi/parser/cpdf_hint_tables.cpp
index 4d8fea2..3445e90 100644
--- a/core/fpdfapi/parser/cpdf_hint_tables.cpp
+++ b/core/fpdfapi/parser/cpdf_hint_tables.cpp
@@ -481,7 +481,7 @@
   // itself were not present. That is, a position greater than the hint stream
   // offset shall have the hint stream length added to it to determine the
   // actual offset relative to the beginning of the file.
-  // See specification PDF 32000-1:2008 Annex F.4 (Hint tables).
+  // See ISO 32000-1:2008 spec, annex F.4 (Hint tables).
   // Note: The PDF spec does not mention this, but positions equal to the hint
   // stream offset also need to have the hint stream length added to it. e.g.
   // There exists linearized PDFs generated by Adobe software that have this
diff --git a/core/fpdfapi/parser/cpdf_object_stream.h b/core/fpdfapi/parser/cpdf_object_stream.h
index 2fa1634..ebc4bf5 100644
--- a/core/fpdfapi/parser/cpdf_object_stream.h
+++ b/core/fpdfapi/parser/cpdf_object_stream.h
@@ -16,7 +16,7 @@
 class IFX_SeekableReadStream;
 
 // Implementation of logic of PDF "Object Streams".
-// See "PDF 32000-1:2008" Spec. section 7.5.7.
+// See ISO 32000-1:2008 spec, section 7.5.7.
 class CPDF_ObjectStream {
  public:
   static bool IsObjectsStreamObject(const CPDF_Object* object);
diff --git a/fpdfsdk/cpdfsdk_baannot.cpp b/fpdfsdk/cpdfsdk_baannot.cpp
index 84b6200..75fd5cc 100644
--- a/fpdfsdk/cpdfsdk_baannot.cpp
+++ b/fpdfsdk/cpdfsdk_baannot.cpp
@@ -225,7 +225,7 @@
     return CPDF_Dest(nullptr);
 
   // Link annotations can have "Dest" entry defined as an explicit array.
-  // https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf#page=373
+  // See ISO 32000-1:2008 spec, section 12.3.2.1.
   return CPDF_Dest::Create(m_pPageView->GetPDFDocument(),
                            GetAnnotDict()->GetDirectObjectFor("Dest"));
 }
diff --git a/fpdfsdk/fpdf_edittext.cpp b/fpdfsdk/fpdf_edittext.cpp
index 31b58f6..3578e76 100644
--- a/fpdfsdk/fpdf_edittext.cpp
+++ b/fpdfsdk/fpdf_edittext.cpp
@@ -655,7 +655,7 @@
   if (!pFont)
     return -1;
 
-  // return only flags from ISO 32000-1 Table 123
+  // Return only flags from ISO 32000-1:2008, table 123.
   return pFont->GetFontFlags() & 0x7ffff;
 }
 
diff --git a/public/fpdf_annot.h b/public/fpdf_annot.h
index 149fbf1..dfddaeb 100644
--- a/public/fpdf_annot.h
+++ b/public/fpdf_annot.h
@@ -209,8 +209,8 @@
 // Experimental API.
 // Add a new InkStroke, represented by an array of points, to the InkList of
 // |annot|. The API creates an InkList if one doesn't already exist in |annot|.
-// This API works only for ink annotations. Please refer section 12.5.6.13 in
-// PDF 32000-1:2008 Specification.
+// This API works only for ink annotations. Please refer to ISO 32000-1:2008
+// spec, section 12.5.6.13.
 //
 //   annot       - handle to an annotation.
 //   points      - pointer to a FS_POINTF array representing input points.
diff --git a/public/fpdf_doc.h b/public/fpdf_doc.h
index 3572cb1..350b964 100644
--- a/public/fpdf_doc.h
+++ b/public/fpdf_doc.h
@@ -39,7 +39,7 @@
 #define PDFDEST_VIEW_FITBV 8
 
 // The file identifier entry type. See section 14.4 "File Identifiers" of the
-// ISO 32000-1 standard.
+// ISO 32000-1:2008 spec.
 typedef enum {
   FILEIDTYPE_PERMANENT = 0,
   FILEIDTYPE_CHANGING = 1
diff --git a/public/fpdf_edit.h b/public/fpdf_edit.h
index f800bc7..f41a211 100644
--- a/public/fpdf_edit.h
+++ b/public/fpdf_edit.h
@@ -1248,7 +1248,7 @@
 // font - the handle to the font object.
 //
 // Returns the bit flags specifying various characteristics of the font as
-// defined in ISO 32000-1 Table 123, -1 on failure.
+// defined in ISO 32000-1:2008, table 123, -1 on failure.
 FPDF_EXPORT int FPDF_CALLCONV FPDFFont_GetFlags(FPDF_FONT font);
 
 // Experimental API.
