# Copyright 2020 The Fuchsia 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("//src/fonts/build/fonts.gni")

local_font_bundle("alegreya-local") {
  asset_names = [
    "AlegreyaSansSC-Bold.ttf",
    "AlegreyaSansSC-BoldItalic.ttf",
    "AlegreyaSansSC-Italic.ttf",
    "AlegreyaSansSC-Regular.ttf",
  ]
}

local_font_bundle("cutive-mono-local") {
  asset_names = [ "CutiveMono-Regular.ttf" ]
}

local_font_bundle("droid-sans-local") {
  asset_names = [
    "DroidSans-Bold.ttf",
    "DroidSans-Regular.ttf",
    "DroidSansMono-Regular.ttf",
  ]
}

local_font_bundle("droid-serif-local") {
  asset_names = [
    "DroidSerif-Bold.ttf",
    "DroidSerif-BoldItalic.ttf",
    "DroidSerif-Italic.ttf",
    "DroidSerif-Regular.ttf",
  ]
}

local_font_bundle("material-icons-local") {
  asset_names = [ "MaterialIcons-Regular.ttf" ]
}

local_font_bundle("noto-color-emoji-local") {
  asset_names = [ "NotoColorEmoji.ttf" ]
}

local_font_bundle("noto-sans-local") {
  asset_names = [
    "NotoNaskhArabicUI-Regular.ttf",
    "NotoSansArmenian-Regular.ttf",
    "NotoSansBengaliUI-Regular.ttf",
    "NotoSansDevanagariUI-Regular.ttf",
    "NotoSansEthiopic-Regular.ttf",
    "NotoSansGeorgian-Regular.ttf",
    "NotoSansGujaratiUI-Regular.ttf",
    "NotoSansHebrew-Regular.ttf",
    "NotoSansKannada-Regular.ttf",
    "NotoSansMalayalamUI-Regular.ttf",
    "NotoSansSymbols-Regular.ttf",
    "NotoSansSymbols2-Regular.ttf",
    "NotoSansTamilUI-Regular.ttf",
    "NotoSansTelugu-Regular.ttf",
    "NotoSansThaiUI-Regular.ttf",
  ]
}

local_font_bundle("noto-sans-cjk-local") {
  asset_names = [
    "NotoSansCJK-Black.ttc",
    "NotoSansCJK-Bold.ttc",
    "NotoSansCJK-DemiLight.ttc",
    "NotoSansCJK-Light.ttc",
    "NotoSansCJK-Medium.ttc",
    "NotoSansCJK-Regular.ttc",
    "NotoSansCJK-Thin.ttc",
  ]
}

local_font_bundle("noto-serif-cjk-local") {
  asset_names = [
    "NotoSansCJK-Thin.ttc",
    "NotoSerifCJK-Black.ttc",
    "NotoSerifCJK-Bold.ttc",
    "NotoSerifCJK-ExtraLight.ttc",
    "NotoSerifCJK-Light.ttc",
    "NotoSerifCJK-Medium.ttc",
    "NotoSerifCJK-Regular.ttc",
    "NotoSerifCJK-SemiBold.ttc",
  ]
}

local_font_bundle("quintessential-local") {
  asset_names = [ "Quintessential-Regular.ttf" ]
}

local_font_bundle("roboto-local") {
  asset_names = [
    "Roboto-Black.ttf",
    "Roboto-BlackItalic.ttf",
    "Roboto-Bold.ttf",
    "Roboto-BoldItalic.ttf",
    "Roboto-Italic.ttf",
    "Roboto-Light.ttf",
    "Roboto-LightItalic.ttf",
    "Roboto-Medium.ttf",
    "Roboto-MediumItalic.ttf",
    "Roboto-Regular.ttf",
    "Roboto-Thin.ttf",
    "Roboto-ThinItalic.ttf",
    "RobotoCondensed-Bold.ttf",
    "RobotoCondensed-BoldItalic.ttf",
    "RobotoCondensed-Italic.ttf",
    "RobotoCondensed-Light.ttf",
    "RobotoCondensed-LightItalic.ttf",
    "RobotoCondensed-Regular.ttf",
  ]
}

local_font_bundle("roboto-mono-local") {
  asset_names = [
    "RobotoMono-Bold.ttf",
    "RobotoMono-BoldItalic.ttf",
    "RobotoMono-Italic.ttf",
    "RobotoMono-Light.ttf",
    "RobotoMono-LightItalic.ttf",
    "RobotoMono-Medium.ttf",
    "RobotoMono-MediumItalic.ttf",
    "RobotoMono-Regular.ttf",
    "RobotoMono-Thin.ttf",
    "RobotoMono-ThinItalic.ttf",
  ]
}

local_font_bundle("roboto-slab-local") {
  asset_names = [
    "RobotoSlab-Bold.ttf",
    "RobotoSlab-Light.ttf",
    "RobotoSlab-Regular.ttf",
    "RobotoSlab-Thin.ttf",
  ]
}

local_font_bundle("short-stack-local") {
  asset_names = [ "ShortStack-Regular.ttf" ]
}

# Expansive font collection for open-source products. This should be added to
# `base_package_labels` or `cache_package_labels`.
font_collection("open-fonts-collection") {
  product_config_path = "open-fonts-collection.fontcfg.json5"

  # Font manifest will refer to files at /fonts/data/assets/... instead of the
  # default /pkg/data/assets/...
  assets_root_dir = "/fonts"
  local_font_bundles = [
    ":alegreya-local",
    ":cutive-mono-local",
    ":droid-sans-local",
    ":droid-serif-local",
    ":material-icons-local",
    ":noto-color-emoji-local",
    ":noto-sans-local",
    ":noto-sans-cjk-local",
    ":noto-serif-cjk-local",
    ":quintessential-local",
    ":roboto-local",
    ":roboto-mono-local",
    ":roboto-slab-local",
    ":short-stack-local",
  ]
}

local_font_bundle("small-open-fonts-local") {
  asset_names = [
    "MaterialIcons-Regular.ttf",
    "Roboto-Regular.ttf",
    "Roboto-Light.ttf",
    "Roboto-Medium.ttf",
    "RobotoMono-Regular.ttf",
    "RobotoSlab-Regular.ttf",
  ]
}

# Font collection for open-source products. This should be added to
# `base_package_labels` or `cache_package_labels`.
font_collection("small-open-fonts-collection") {
  product_config_path = "small-open-fonts-collection.fontcfg.json5"
  local_font_bundles = [ ":small-open-fonts-local" ]
  assets_root_dir = "/fonts"
}

local_font_bundle("test-fonts-small-local") {
  testonly = true
  asset_names = [
    "MaterialIcons-Regular.ttf",
    "Roboto-Regular.ttf",
    "Roboto-Light.ttf",
    "Roboto-Medium.ttf",
    "RobotoMono-Regular.ttf",
    "RobotoSlab-Regular.ttf",
  ]
}

local_font_bundle("noto-cjk-test-fonts-local") {
  testonly = true
  asset_names = [
    "NotoSerifCJK-Regular.ttc",
    "NotoSansCJK-Regular.ttc",
  ]
}

local_font_bundle("test-fonts-downstream-local") {
  testonly = true
  asset_names = [
    "Roboto-Regular.ttf",
    "Roboto-Light.ttf",
    "Roboto-Medium.ttf",
    "RobotoMono-Regular.ttf",
    "RobotoSlab-Regular.ttf",
  ]
}

# Font collection for semi-hermetic downstream tests (e.g. Chromium) that need
# to use a fixed set of fonts.
font_collection("downstream-test-fonts-collection") {
  testonly = true
  product_config_path = "downstream-test-fonts-collection.fontcfg.json5"
  manifest_prefix = "downstream_test_fonts"
  local_font_bundles = [ ":test-fonts-downstream-local" ]
}

# Minimal font collection for some tests.
# See out/default/obj/src/fonts/test_fonts_small.font_manifest.json
font_collection("test-fonts-small-collection") {
  testonly = true
  product_config_path = "test-fonts-small-collection.fontcfg.json5"
  manifest_prefix = "test_fonts_small"
  local_font_bundles = [ ":test-fonts-small-local" ]
}

# Minimal font collection plus Noto CJK fonts, for tests.
# See out/default/obj/src/fonts/test_fonts.font_manifest.json
font_collection("test-fonts-medium-collection") {
  testonly = true
  product_config_path = "test-fonts-medium-collection.fontcfg.json5"
  manifest_prefix = "test_fonts_medium"
  local_font_bundles = [
    ":test-fonts-small-local",
    ":noto-cjk-test-fonts-local",
  ]
}

# Large font collection consisting of most of the open-source fonts we have.
# See out/default/obj/src/fonts/test_fonts_large.font_manifest.json
font_collection("test-fonts-large-collection") {
  testonly = true
  product_config_path = "test-fonts-large-collection.fontcfg.json5"
  manifest_prefix = "test_fonts_large"
  local_font_bundles = [
    ":material-icons-local",
    ":noto-sans-local",
    ":noto-sans-cjk-local",
    ":noto-serif-cjk-local",
    ":roboto-local",
    ":roboto-mono-local",
    ":roboto-slab-local",
  ]
}

# Empty font collection for products that spawn a font server but don't want any
# actual fonts. This should be added to `base_package_labels` or
# `cache_package_labels`.
font_collection("empty-font-collection") {
  empty = true
}
