// Copyright (C) 2011 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package {
    default_applicable_licenses: ["frameworks_base_data_fonts_license"],
}

// Added automatically by a large-scale-change
// See: http://go/android-license-faq
license {
    name: "frameworks_base_data_fonts_license",
    visibility: [":__subpackages__"],
    license_kinds: [
        "SPDX-license-identifier-Apache-2.0",
    ],
    license_text: [
        "NOTICE",
    ],
}

prebuilt_font {
    name: "DroidSansMono.ttf",
    src: "DroidSansMono.ttf",
    required: [
        // Roboto-Regular.ttf provides DroidSans.ttf as a symlink to itself
        // Roboto-Regular.ttf provides DroidSans-Bold.ttf as a symlink to itself
        "Roboto-Regular.ttf",
    ],
}

prebuilt_font {
    name: "AndroidClock.ttf",
    src: "AndroidClock.ttf",
}

/////////////////////////////////
// Copies the font configuration file into system/etc for the product as fonts.xml.
// Additional fonts should be installed to /product/fonts/ alongside a corresponding
// fonts_customiztion.xml in /product/etc/

soong_config_bool_variable {
    name: "use_var_font",
}

soong_config_module_type {
    name: "prebuilt_fonts_xml",
    module_type: "prebuilt_etc",
    config_namespace: "noto_sans_cjk_config",
    bool_variables: ["use_var_font"],
    properties: ["src"],
}

prebuilt_fonts_xml {
    name: "fonts.xml",
    src: "fonts.xml",
    soong_config_variables: {
        use_var_font: {
            src: "fonts_cjkvf.xml",
        },
    },
}

prebuilt_fonts_xml {
    name: "font_fallback.xml",
    src: "font_fallback.xml",
    soong_config_variables: {
        use_var_font: {
            src: "font_fallback_cjkvf.xml",
        },
    },
}

/////////////////////////////////
// Move `fontchain_lint` to `core/tasks/fontchain_lint.mk`.
// Because `system.img` is a dependency of `fontchain_lint`, it cannot be
// converted to Android.bp for now.
// After system.img can be generated by Soong, then it can be converted to Android.bp.
