// 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_SRC_FPDFAPI_FPDF_CMAPS_CNS1_CMAPS_CNS1_H_
#define CORE_SRC_FPDFAPI_FPDF_CMAPS_CNS1_CMAPS_CNS1_H_

#include "core/include/fxcrt/fx_system.h"  // For FX_WORD.

extern const FX_WORD g_FXCMAP_B5pc_H_0[];
extern const FX_WORD g_FXCMAP_B5pc_V_0[];
extern const FX_WORD g_FXCMAP_HKscs_B5_H_5[];
extern const FX_WORD g_FXCMAP_HKscs_B5_V_5[];
extern const FX_WORD g_FXCMAP_ETen_B5_H_0[];
extern const FX_WORD g_FXCMAP_ETen_B5_V_0[];
extern const FX_WORD g_FXCMAP_ETenms_B5_H_0[];
extern const FX_WORD g_FXCMAP_ETenms_B5_V_0[];
extern const FX_WORD g_FXCMAP_CNS_EUC_H_0[];
extern const FX_WORD g_FXCMAP_CNS_EUC_H_0_DWord[];
extern const FX_WORD g_FXCMAP_CNS_EUC_V_0[];
extern const FX_WORD g_FXCMAP_CNS_EUC_V_0_DWord[];
extern const FX_WORD g_FXCMAP_UniCNS_UCS2_H_3[];
extern const FX_WORD g_FXCMAP_UniCNS_UCS2_V_3[];
extern const FX_WORD g_FXCMAP_UniCNS_UTF16_H_0[];
extern const FX_WORD g_FXCMAP_CNS1CID2Unicode_5[];

#endif  // CORE_SRC_FPDFAPI_FPDF_CMAPS_CNS1_CMAPS_CNS1_H_
