diff --git a/core/fpdfapi/font/cpdf_font.cpp b/core/fpdfapi/font/cpdf_font.cpp
index 03ade0e..7867a79 100644
--- a/core/fpdfapi/font/cpdf_font.cpp
+++ b/core/fpdfapi/font/cpdf_font.cpp
@@ -349,8 +349,8 @@
 const char* CPDF_Font::GetAdobeCharName(
     int iBaseEncoding,
     const std::vector<ByteString>& charnames,
-    int charcode) {
-  if (charcode < 0 || charcode >= 256)
+    uint32_t charcode) {
+  if (charcode >= 256)
     return nullptr;
 
   if (!charnames.empty() && !charnames[charcode].IsEmpty())
diff --git a/core/fpdfapi/font/cpdf_font.h b/core/fpdfapi/font/cpdf_font.h
index 3fd9489..5ffbceb 100644
--- a/core/fpdfapi/font/cpdf_font.h
+++ b/core/fpdfapi/font/cpdf_font.h
@@ -95,7 +95,7 @@
   static bool FT_UseTTCharmap(FXFT_Face face, int platform_id, int encoding_id);
   static const char* GetAdobeCharName(int iBaseEncoding,
                                       const std::vector<ByteString>& charnames,
-                                      int charcode);
+                                      uint32_t charcode);
 
   virtual bool Load() = 0;
 
diff --git a/core/fpdfapi/font/cpdf_truetypefont.cpp b/core/fpdfapi/font/cpdf_truetypefont.cpp
index 16978f1..d84e857 100644
--- a/core/fpdfapi/font/cpdf_truetypefont.cpp
+++ b/core/fpdfapi/font/cpdf_truetypefont.cpp
@@ -96,7 +96,7 @@
       }
     }
     bool bToUnicode = m_pFontDict->KeyExist("ToUnicode");
-    for (int charcode = 0; charcode < 256; charcode++) {
+    for (uint32_t charcode = 0; charcode < 256; charcode++) {
       const char* name = GetAdobeCharName(baseEncoding, m_CharNames, charcode);
       if (!name) {
         m_GlyphIndex[charcode] =
@@ -163,7 +163,7 @@
     }
     if (bFound) {
       if (baseEncoding != PDFFONT_ENCODING_BUILTIN) {
-        for (int charcode = 0; charcode < 256; charcode++) {
+        for (uint32_t charcode = 0; charcode < 256; charcode++) {
           const char* name =
               GetAdobeCharName(baseEncoding, m_CharNames, charcode);
           if (name)
@@ -194,7 +194,7 @@
   if (FXFT_Select_Charmap(m_Font.GetFace(), FXFT_ENCODING_UNICODE) == 0) {
     bool bFound = false;
     const uint16_t* pUnicodes = PDF_UnicodesForPredefinedCharSet(baseEncoding);
-    for (int charcode = 0; charcode < 256; charcode++) {
+    for (uint32_t charcode = 0; charcode < 256; charcode++) {
       if (m_pFontFile) {
         m_Encoding.m_Unicodes[charcode] = charcode;
       } else {
diff --git a/core/fpdfapi/font/cpdf_type1font.cpp b/core/fpdfapi/font/cpdf_type1font.cpp
index 7fb7ce6..410dbde 100644
--- a/core/fpdfapi/font/cpdf_type1font.cpp
+++ b/core/fpdfapi/font/cpdf_type1font.cpp
@@ -138,7 +138,7 @@
   if (!IsEmbedded() && (m_Base14Font < 12) && m_Font.IsTTFont()) {
     if (FT_UseTTCharmap(m_Font.GetFace(), 3, 0)) {
       bool bGotOne = false;
-      for (int charcode = 0; charcode < 256; charcode++) {
+      for (uint32_t charcode = 0; charcode < 256; charcode++) {
         const uint8_t prefix[4] = {0x00, 0xf0, 0xf1, 0xf2};
         for (int j = 0; j < 4; j++) {
           uint16_t unicode = prefix[j] * 256 + charcode;
@@ -165,7 +165,7 @@
     if (m_BaseEncoding == 0)
       m_BaseEncoding = PDFFONT_ENCODING_STANDARD;
 
-    for (int charcode = 0; charcode < 256; charcode++) {
+    for (uint32_t charcode = 0; charcode < 256; charcode++) {
       const char* name =
           GetAdobeCharName(m_BaseEncoding, m_CharNames, charcode);
       if (!name)
@@ -195,7 +195,7 @@
 #if _FX_PLATFORM_ == _FX_PLATFORM_APPLE_
   if (bCoreText) {
     if (FontStyleIsSymbolic(m_Flags)) {
-      for (int charcode = 0; charcode < 256; charcode++) {
+      for (uint32_t charcode = 0; charcode < 256; charcode++) {
         const char* name =
             GetAdobeCharName(m_BaseEncoding, m_CharNames, charcode);
         if (name) {
@@ -227,7 +227,7 @@
 
     bool bUnicode =
         FXFT_Select_Charmap(m_Font.GetFace(), FXFT_ENCODING_UNICODE) == 0;
-    for (int charcode = 0; charcode < 256; charcode++) {
+    for (uint32_t charcode = 0; charcode < 256; charcode++) {
       const char* name =
           GetAdobeCharName(m_BaseEncoding, m_CharNames, charcode);
       if (!name)
@@ -320,7 +320,7 @@
 }
 
 #if _FX_PLATFORM_ == _FX_PLATFORM_APPLE_
-void CPDF_Type1Font::SetExtGID(const char* name, int charcode) {
+void CPDF_Type1Font::SetExtGID(const char* name, uint32_t charcode) {
   CFStringRef name_ct = CFStringCreateWithCStringNoCopy(
       kCFAllocatorDefault, name, kCFStringEncodingASCII, kCFAllocatorNull);
   m_ExtGID[charcode] =
@@ -329,7 +329,7 @@
     CFRelease(name_ct);
 }
 
-void CPDF_Type1Font::CalcExtGID(int charcode) {
+void CPDF_Type1Font::CalcExtGID(uint32_t charcode) {
   char name_glyph[256];
   FXFT_Get_Glyph_Name(m_Font.GetFace(), m_GlyphIndex[charcode], name_glyph,
                       256);
diff --git a/core/fpdfapi/font/cpdf_type1font.h b/core/fpdfapi/font/cpdf_type1font.h
index 0fdfa80..86a9812 100644
--- a/core/fpdfapi/font/cpdf_type1font.h
+++ b/core/fpdfapi/font/cpdf_type1font.h
@@ -33,8 +33,8 @@
   void LoadGlyphMap() override;
 
 #if _FX_PLATFORM_ == _FX_PLATFORM_APPLE_
-  void SetExtGID(const char* name, int charcode);
-  void CalcExtGID(int charcode);
+  void SetExtGID(const char* name, uint32_t charcode);
+  void CalcExtGID(uint32_t charcode);
 
   uint16_t m_ExtGID[256];
 #endif
