Add pdf_enable_fontations GN flag Set up a pdf_enable_fontations GN flag for future use. - Define PDF_ENABLE_FONTATIONS for use in C++ code when enabled. - Add the override hook, so PDFium embedders that use GN can choose the default via the override mechanism. - Add GN assertion to make sure Rust and Skia are enabled. Bug: pdfium:2107 Change-Id: I9ed504ebd5cbeaf922fe1da280cd20a08c260803 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/114834 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/BUILD.gn b/BUILD.gn index 0695615..2b1f97f 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -42,6 +42,10 @@ if (pdf_use_skia) { defines += [ "PDF_USE_SKIA" ] + + if (pdf_enable_fontations) { + defines += [ "PDF_ENABLE_FONTATIONS" ] + } } if (pdf_use_partition_alloc) {
diff --git a/README.md b/README.md index 10cef8b..9434470 100644 --- a/README.md +++ b/README.md
@@ -84,6 +84,9 @@ # Set true to enable experimental Skia backend. pdf_use_skia = false +# Set true to enable experimental Fontations backend. +pdf_enable_fontations = false + pdf_enable_xfa = true # Set false to remove XFA support (implies JS support). pdf_enable_v8 = true # Set false to remove Javascript support. pdf_is_standalone = true # Set for a non-embedded build.
diff --git a/build_overrides/pdfium.gni b/build_overrides/pdfium.gni index b7dc9e0..aae45b1 100644 --- a/build_overrides/pdfium.gni +++ b/build_overrides/pdfium.gni
@@ -25,5 +25,11 @@ # Build PDFium to use Skia (experimental) for all PDFium graphics. # If enabled, coexists in build with AGG graphics and the default # renderer is selectable at runtime. -# The default is to use AGG only when `pdf_use_skia_override` is false. +# The default is to use AGG when `pdf_use_skia_override` is false. pdf_use_skia_override = false + +# Build PDFium with experimental Fontations library support. +# If enabled, coexists in build with FreeType library and the default font +# library is selectable at runtime. +# The default is to use FreeType when `pdf_enable_fontations_override` is false. +pdf_enable_fontations_override = false
diff --git a/pdfium.gni b/pdfium.gni index ae5c5a5..693fae7 100644 --- a/pdfium.gni +++ b/pdfium.gni
@@ -2,6 +2,7 @@ # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. +import("//build/config/rust.gni") import("//build_overrides/pdfium.gni") # This file contains PDFium-related build flags. @@ -48,6 +49,12 @@ # renderer is selectable at runtime. pdf_use_skia = pdf_use_skia_override + # Build PDFium with experimental Fontations library support. + # If enabled, coexists in build with FreeType library and the default font + # library is selectable at runtime. + # Note that Fontations requires Skia and Rust support. + pdf_enable_fontations = pdf_enable_fontations_override + # Build PDFium standalone. Now only controls whether the test binaries # are built. Most logic is conditioned by build_with_chromium. pdf_is_standalone = false @@ -79,3 +86,7 @@ assert(!pdf_is_complete_lib || !is_component_build, "pdf_is_complete_lib=true requires is_component_build=false") + +assert( + !pdf_enable_fontations || (enable_rust && pdf_use_skia), + "pdf_enable_fontations=true requires enable_rust=true and pdf_use_skia=true")