// Copyright 2015 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_FPDFAPI_CMAPS_GB1_CMAPS_GB1_H_
#define CORE_FPDFAPI_CMAPS_GB1_CMAPS_GB1_H_

#include "core/fpdfapi/cmaps/cmap_int.h"

extern const uint16_t g_FXCMAP_GB_EUC_H_0[];
extern const uint16_t g_FXCMAP_GB_EUC_V_0[];
extern const uint16_t g_FXCMAP_GBpc_EUC_H_0[];
extern const uint16_t g_FXCMAP_GBpc_EUC_V_0[];
extern const uint16_t g_FXCMAP_GBK_EUC_H_2[];
extern const uint16_t g_FXCMAP_GBK_EUC_V_2[];
extern const uint16_t g_FXCMAP_GBKp_EUC_H_2[];
extern const uint16_t g_FXCMAP_GBKp_EUC_V_2[];
extern const uint16_t g_FXCMAP_GBK2K_H_5[];
extern const FXCMAP_DWordCIDMap g_FXCMAP_GBK2K_H_5_DWord[];
extern const uint16_t g_FXCMAP_GBK2K_V_5[];
extern const uint16_t g_FXCMAP_UniGB_UCS2_H_4[];
extern const uint16_t g_FXCMAP_UniGB_UCS2_V_4[];
extern const uint16_t g_FXCMAP_GB1CID2Unicode_5[30284];
extern const FXCMAP_CMap g_FXCMAP_GB1_cmaps[];
extern const size_t g_FXCMAP_GB1_cmaps_size;

#endif  // CORE_FPDFAPI_CMAPS_GB1_CMAPS_GB1_H_
