// 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_CNS1_CMAPS_CNS1_H_
#define CORE_FPDFAPI_CMAPS_CNS1_CMAPS_CNS1_H_

#include <stddef.h>

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

extern const uint16_t kFXCMAP_B5pc_H_0[];
extern const uint16_t kFXCMAP_B5pc_V_0[];
extern const uint16_t kFXCMAP_HKscs_B5_H_5[];
extern const uint16_t kFXCMAP_HKscs_B5_V_5[];
extern const uint16_t kFXCMAP_ETen_B5_H_0[];
extern const uint16_t kFXCMAP_ETen_B5_V_0[];
extern const uint16_t kFXCMAP_ETenms_B5_H_0[];
extern const uint16_t kFXCMAP_ETenms_B5_V_0[];
extern const uint16_t kFXCMAP_CNS_EUC_H_0[];
extern const FXCMAP_DWordCIDMap kFXCMAP_CNS_EUC_H_0_DWord[];
extern const uint16_t kFXCMAP_CNS_EUC_V_0[];
extern const FXCMAP_DWordCIDMap kFXCMAP_CNS_EUC_V_0_DWord[];
extern const uint16_t kFXCMAP_UniCNS_UCS2_H_3[];
extern const uint16_t kFXCMAP_UniCNS_UCS2_V_3[];
extern const uint16_t kFXCMAP_UniCNS_UTF16_H_0[];
extern const uint16_t kFXCMAP_CNS1CID2Unicode_5[19088];
extern const FXCMAP_CMap kFXCMAP_CNS1_cmaps[];
extern const size_t kFXCMAP_CNS1_cmaps_size;

#endif  // CORE_FPDFAPI_CMAPS_CNS1_CMAPS_CNS1_H_
