diff --git a/fxbarcode/oned/BC_OneDimWriter.cpp b/fxbarcode/oned/BC_OneDimWriter.cpp
index b203e59..9f54443 100644
--- a/fxbarcode/oned/BC_OneDimWriter.cpp
+++ b/fxbarcode/oned/BC_OneDimWriter.cpp
@@ -85,20 +85,20 @@
   m_fontColor = color;
 }
 
-int32_t CBC_OneDimWriter::AppendPattern(uint8_t* target,
-                                        int32_t pos,
-                                        const int8_t* pattern,
-                                        int32_t patternLength,
-                                        bool startColor) {
+size_t CBC_OneDimWriter::AppendPattern(uint8_t* target,
+                                       size_t pos,
+                                       const uint8_t* pattern,
+                                       int32_t patternLength,
+                                       bool startColor) {
   bool color = startColor;
-  int32_t numAdded = 0;
+  size_t added = 0;
   for (int32_t i = 0; i < patternLength; i++) {
     for (int32_t j = 0; j < pattern[i]; j++)
       target[pos++] = color ? 1 : 0;
-    numAdded += pattern[i];
+    added += pattern[i];
     color = !color;
   }
-  return numAdded;
+  return added;
 }
 
 void CBC_OneDimWriter::CalcTextInfo(const ByteString& text,
diff --git a/fxbarcode/oned/BC_OneDimWriter.h b/fxbarcode/oned/BC_OneDimWriter.h
index a990dd9..e36501f 100644
--- a/fxbarcode/oned/BC_OneDimWriter.h
+++ b/fxbarcode/oned/BC_OneDimWriter.h
@@ -73,11 +73,11 @@
                     float geWidth,
                     int32_t fontSize,
                     float& charsLen);
-  int32_t AppendPattern(uint8_t* target,
-                        int32_t pos,
-                        const int8_t* pattern,
-                        int32_t patternLength,
-                        bool startColor);
+  size_t AppendPattern(uint8_t* target,
+                       size_t pos,
+                       const uint8_t* pattern,
+                       int32_t patternLength,
+                       bool startColor);
 
   bool m_bPrintChecksum = true;
   bool m_bCalcChecksum = false;
diff --git a/fxbarcode/oned/BC_OnedCode128Writer.cpp b/fxbarcode/oned/BC_OnedCode128Writer.cpp
index 8d9d96e..2515780 100644
--- a/fxbarcode/oned/BC_OnedCode128Writer.cpp
+++ b/fxbarcode/oned/BC_OnedCode128Writer.cpp
@@ -35,7 +35,7 @@
 
 constexpr size_t kPatternSize = 7;
 
-const int8_t CODE_PATTERNS[107][kPatternSize] = {
+const uint8_t kCodePatterns[107][kPatternSize] = {
     {2, 1, 2, 2, 2, 2, 0}, {2, 2, 2, 1, 2, 2, 0}, {2, 2, 2, 2, 2, 1, 0},
     {1, 2, 1, 2, 2, 3, 0}, {1, 2, 1, 3, 2, 2, 0}, {1, 3, 1, 2, 2, 2, 0},
     {1, 2, 2, 2, 1, 3, 0}, {1, 2, 2, 3, 1, 2, 0}, {1, 3, 2, 2, 1, 2, 0},
@@ -135,14 +135,14 @@
   m_iContentLen = contents.GetLength() + 3;
   int32_t codeWidth = 0;
   for (const auto& patternIndex : patterns) {
-    const int8_t* pattern = CODE_PATTERNS[patternIndex];
+    const uint8_t* pattern = kCodePatterns[patternIndex];
     for (size_t i = 0; i < kPatternSize; ++i)
       codeWidth += pattern[i];
   }
   DataVector<uint8_t> result(codeWidth);
-  int32_t pos = 0;
+  size_t pos = 0;
   for (size_t i = 0; i < patterns.size(); ++i) {
-    const int8_t* pattern = CODE_PATTERNS[patterns[i]];
+    const uint8_t* pattern = kCodePatterns[patterns[i]];
     pos += AppendPattern(result.data(), pos, pattern, kPatternSize, true);
   }
   return result;
diff --git a/fxbarcode/oned/BC_OnedCode39Writer.cpp b/fxbarcode/oned/BC_OnedCode39Writer.cpp
index a58e141..f046717 100644
--- a/fxbarcode/oned/BC_OnedCode39Writer.cpp
+++ b/fxbarcode/oned/BC_OnedCode39Writer.cpp
@@ -140,7 +140,7 @@
 }
 
 void CBC_OnedCode39Writer::ToIntArray(int16_t value,
-                                      int8_t array[kArraySize]) const {
+                                      uint8_t array[kArraySize]) const {
   for (size_t i = 0; i < kArraySize; i++) {
     array[i] = (value & (1 << i)) == 0 ? 1 : m_iWideNarrRatio;
   }
@@ -151,7 +151,7 @@
   if (checksum == '*')
     return DataVector<uint8_t>();
 
-  int8_t widths[kArraySize] = {0};
+  uint8_t widths[kArraySize] = {0};
   constexpr int32_t kWideStrideNum = 3;
   constexpr int32_t kNarrowStrideNum = kArraySize - kWideStrideNum;
   ByteString encodedContents = contents;
@@ -173,10 +173,10 @@
   }
   DataVector<uint8_t> result(code_width);
   ToIntArray(kOnedCode39CharacterEncoding[39], widths);
-  int32_t pos = AppendPattern(result.data(), 0, widths, kArraySize, true);
+  size_t pos = AppendPattern(result.data(), 0, widths, kArraySize, true);
 
-  int8_t narrowWhite[] = {1};
-  pos += AppendPattern(result.data(), pos, narrowWhite, 1, false);
+  static constexpr uint8_t kNarrowWhite[] = {1};
+  pos += AppendPattern(result.data(), pos, kNarrowWhite, 1, false);
 
   for (int32_t l = m_iContentLen - 1; l >= 0; l--) {
     for (size_t i = 0; i < kOnedCode39AlphabetLen; i++) {
@@ -186,7 +186,7 @@
       ToIntArray(kOnedCode39CharacterEncoding[i], widths);
       pos += AppendPattern(result.data(), pos, widths, kArraySize, true);
     }
-    pos += AppendPattern(result.data(), pos, narrowWhite, 1, false);
+    pos += AppendPattern(result.data(), pos, kNarrowWhite, 1, false);
   }
   ToIntArray(kOnedCode39CharacterEncoding[39], widths);
   pos += AppendPattern(result.data(), pos, widths, kArraySize, true);
diff --git a/fxbarcode/oned/BC_OnedCode39Writer.h b/fxbarcode/oned/BC_OnedCode39Writer.h
index 3628e9a..932d703 100644
--- a/fxbarcode/oned/BC_OnedCode39Writer.h
+++ b/fxbarcode/oned/BC_OnedCode39Writer.h
@@ -32,7 +32,7 @@
  private:
   static constexpr size_t kArraySize = 9;
 
-  void ToIntArray(int16_t value, int8_t array[kArraySize]) const;
+  void ToIntArray(int16_t value, uint8_t array[kArraySize]) const;
 
   int8_t m_iWideNarrRatio = 3;
 };
diff --git a/fxbarcode/oned/BC_OnedEAN13Writer.cpp b/fxbarcode/oned/BC_OnedEAN13Writer.cpp
index 0b3aa28..c902463 100644
--- a/fxbarcode/oned/BC_OnedEAN13Writer.cpp
+++ b/fxbarcode/oned/BC_OnedEAN13Writer.cpp
@@ -40,12 +40,12 @@
 
 const int8_t kFirstDigitEncodings[10] = {0x00, 0x0B, 0x0D, 0xE,  0x13,
                                          0x19, 0x1C, 0x15, 0x16, 0x1A};
-const int8_t kOnedEAN13StartPattern[3] = {1, 1, 1};
-const int8_t kOnedEAN13MiddlePattern[5] = {1, 1, 1, 1, 1};
-const int8_t kOnedEAN13LPattern[10][4] = {
+const uint8_t kOnedEAN13StartPattern[3] = {1, 1, 1};
+const uint8_t kOnedEAN13MiddlePattern[5] = {1, 1, 1, 1, 1};
+const uint8_t kOnedEAN13LPattern[10][4] = {
     {3, 2, 1, 1}, {2, 2, 2, 1}, {2, 1, 2, 2}, {1, 4, 1, 1}, {1, 1, 3, 2},
     {1, 2, 3, 1}, {1, 1, 1, 4}, {1, 3, 1, 2}, {1, 2, 1, 3}, {3, 1, 1, 2}};
-const int8_t L_AND_G_PATTERNS[20][4] = {
+const uint8_t kOnedEAN13LGPattern[20][4] = {
     {3, 2, 1, 1}, {2, 2, 2, 1}, {2, 1, 2, 2}, {1, 4, 1, 1}, {1, 1, 3, 2},
     {1, 2, 3, 1}, {1, 1, 1, 4}, {1, 3, 1, 2}, {1, 2, 1, 3}, {3, 1, 1, 2},
     {1, 1, 2, 3}, {1, 2, 2, 2}, {2, 2, 1, 2}, {1, 1, 4, 1}, {2, 3, 1, 1},
@@ -93,7 +93,7 @@
   int32_t firstDigit = FXSYS_DecimalCharToInt(contents.Front());
   int32_t parities = kFirstDigitEncodings[firstDigit];
   DataVector<uint8_t> result(m_codeWidth);
-  int32_t pos = 0;
+  size_t pos = 0;
   pos += AppendPattern(result.data(), pos, kOnedEAN13StartPattern, 3, true);
 
   int32_t i = 0;
@@ -102,7 +102,8 @@
     if ((parities >> (6 - i) & 1) == 1) {
       digit += 10;
     }
-    pos += AppendPattern(result.data(), pos, L_AND_G_PATTERNS[digit], 4, false);
+    pos +=
+        AppendPattern(result.data(), pos, kOnedEAN13LGPattern[digit], 4, false);
   }
   pos += AppendPattern(result.data(), pos, kOnedEAN13MiddlePattern, 5, false);
 
diff --git a/fxbarcode/oned/BC_OnedEAN8Writer.cpp b/fxbarcode/oned/BC_OnedEAN8Writer.cpp
index 101e5e8..6b23dfd 100644
--- a/fxbarcode/oned/BC_OnedEAN8Writer.cpp
+++ b/fxbarcode/oned/BC_OnedEAN8Writer.cpp
@@ -39,9 +39,9 @@
 
 namespace {
 
-const int8_t kOnedEAN8StartPattern[3] = {1, 1, 1};
-const int8_t kOnedEAN8MiddlePattern[5] = {1, 1, 1, 1, 1};
-const int8_t kOnedEAN8LPattern[10][4] = {
+const uint8_t kOnedEAN8StartPattern[3] = {1, 1, 1};
+const uint8_t kOnedEAN8MiddlePattern[5] = {1, 1, 1, 1, 1};
+const uint8_t kOnedEAN8LPattern[10][4] = {
     {3, 2, 1, 1}, {2, 2, 2, 1}, {2, 1, 2, 2}, {1, 4, 1, 1}, {1, 1, 3, 2},
     {1, 2, 3, 1}, {1, 1, 1, 4}, {1, 3, 1, 2}, {1, 2, 1, 3}, {3, 1, 1, 2}};
 
@@ -93,7 +93,7 @@
     return {};
 
   DataVector<uint8_t> result(m_codeWidth);
-  int32_t pos = 0;
+  size_t pos = 0;
   pos += AppendPattern(result.data(), pos, kOnedEAN8StartPattern, 3, true);
 
   int32_t i = 0;
