// 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_KOREA1_CMAPS_KOREA1_H_
#define CORE_FPDFAPI_CMAPS_KOREA1_CMAPS_KOREA1_H_

#include <stddef.h>

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

extern const uint16_t kFXCMAP_KSC_EUC_H_0[];
extern const uint16_t kFXCMAP_KSC_EUC_V_0[];
extern const uint16_t kFXCMAP_KSCms_UHC_H_1[];
extern const uint16_t kFXCMAP_KSCms_UHC_V_1[];
extern const uint16_t kFXCMAP_KSCms_UHC_HW_H_1[];
extern const uint16_t kFXCMAP_KSCms_UHC_HW_V_1[];
extern const uint16_t kFXCMAP_KSCpc_EUC_H_0[];
extern const uint16_t kFXCMAP_UniKS_UCS2_H_1[];
extern const uint16_t kFXCMAP_UniKS_UCS2_V_1[];
extern const uint16_t kFXCMAP_UniKS_UTF16_H_0[];
extern const uint16_t kFXCMAP_Korea1CID2Unicode_2[18352];
extern const FXCMAP_CMap kFXCMAP_Korea1_cmaps[];
extern const size_t kFXCMAP_Korea1_cmaps_size;

#endif  // CORE_FPDFAPI_CMAPS_KOREA1_CMAPS_KOREA1_H_
