# Copyright 2018 The 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.

import("../../../pdfium.gni")
import("../../../testing/test.gni")

source_set("font") {
  sources = [
    "cfx_cttgsubtable.cpp",
    "cfx_cttgsubtable.h",
    "cfx_stockfontarray.cpp",
    "cfx_stockfontarray.h",
    "cpdf_cid2unicodemap.cpp",
    "cpdf_cid2unicodemap.h",
    "cpdf_cidfont.cpp",
    "cpdf_cidfont.h",
    "cpdf_cmap.cpp",
    "cpdf_cmap.h",
    "cpdf_cmapmanager.cpp",
    "cpdf_cmapmanager.h",
    "cpdf_cmapparser.cpp",
    "cpdf_cmapparser.h",
    "cpdf_font.cpp",
    "cpdf_font.h",
    "cpdf_fontencoding.cpp",
    "cpdf_fontencoding.h",
    "cpdf_fontglobals.cpp",
    "cpdf_fontglobals.h",
    "cpdf_simplefont.cpp",
    "cpdf_simplefont.h",
    "cpdf_tounicodemap.cpp",
    "cpdf_tounicodemap.h",
    "cpdf_truetypefont.cpp",
    "cpdf_truetypefont.h",
    "cpdf_type1font.cpp",
    "cpdf_type1font.h",
    "cpdf_type3char.cpp",
    "cpdf_type3char.h",
    "cpdf_type3font.cpp",
    "cpdf_type3font.h",
  ]
  configs += [ "../../../:pdfium_strict_config" ]
  deps = [
    "../../fxcrt",
    "../../fxge",
    "../cmaps",
    "../parser",
  ]
  if (is_mac) {
    frameworks = [ "CoreFoundation.framework" ]
  }
  visibility = [ "../../../*" ]
}

pdfium_unittest_source_set("unittests") {
  sources = [
    "cpdf_cidfont_unittest.cpp",
    "cpdf_cmapparser_unittest.cpp",
    "cpdf_tounicodemap_unittest.cpp",
  ]
  deps = [
    ":font",
    "../page",
    "../parser",
    "../render",
  ]
  pdfium_root_dir = "../../../"
}
