skia2/include/core
Dominik Röttsches 01be94d7f1 Support font palette overrides through SkFontArguments
Co-authored with Ben Wagner, bungeman@google.com.

Similar to how we allow configuration of variable font configurations,
provide additional SkFontArguments to select a base palette and a set
of potentially sparse color overrides.

This is required for implementing CSS font-palette.

Modify the more_samples-glyf_colr_1.ttf to have two additional palettes,
and two additional test glyphs, one that draws with COLRv0 logic, one
that draws with COLRv1 logic and has a foreground palette index dot
in the middle. See [1] & [2] for the additions to the test font.

Add a GM which tests this on the SkFontMgr_custom using makeClone() and
makeFromStreamArgs(). The test displays the two glyphs in default
palette on the left, then with palette overrides (as in the title of the
test) on the right. The first row uses a typeface created with
makeFromStreamArgs(), the second uses one created with makeClone().

[1] https://github.com/googlefonts/color-fonts/pull/91
[2] https://github.com/googlefonts/color-fonts/pull/92

Bug: skia:12730, chromium:1170794
Cq-Include-Trybots: luci.skia.skia.primary:Test-Android-Clang-GalaxyS20-GPU-MaliG77-arm64-Release-All-Android_NativeFonts,Test-Debian10-Clang-GCE-CPU-AVX2-x86_64-Debug-All-NativeFonts
Change-Id: Ia1334f069240edc78fd4791969914e8a6f4fbaf9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/479616
Reviewed-by: Ben Wagner <bungeman@google.com>
Reviewed-by: Derek Sollenberger <djsollen@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2022-02-17 13:19:53 +00:00
..
BUILD.bazel [canvaskit] Add skottie to Bazel build 2022-02-04 19:18:27 +00:00
SkAnnotation.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkBBHFactory.h Reenable Wdeprecated-copy-dtor 2021-02-16 17:53:28 +00:00
SkBitmap.h Remove supported for (removed) inheriting paint filter-quality 2021-03-09 00:58:09 +00:00
SkBlender.h Move Mode() factory into SkBlender 2021-07-06 13:39:05 +00:00
SkBlendMode.h [androidkit] bind SkImageFilters to java shared library 2021-07-16 16:18:55 +00:00
SkBlurTypes.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkCanvas.h Revert "Remove skstd::optional entirely." 2022-02-08 02:13:27 +00:00
SkCanvasVirtualEnforcer.h Pass sampling to drawImageSet 2021-01-05 19:40:31 +00:00
SkClipOp.h Remove SK_SUPPORT_DEPRECATED_CLIPOPS and expanding clip op defs 2021-08-06 19:15:13 +00:00
SkColor.h Support luminance-alpha GL format for YUVA planes 2020-12-17 14:54:25 +00:00
SkColorFilter.h Move WithWorkingFormat to SkColorFilterPriv 2021-11-03 20:30:50 +00:00
SkColorPriv.h move SkTPin to include/private 2020-10-16 19:45:11 +00:00
SkColorSpace.h Enable ClangTidy check llvm-namespace-comment. 2020-08-06 19:07:52 +00:00
SkContourMeasure.h [canvaskit] Flesh out remaining docs for core CanvasKit. 2020-10-05 11:47:40 +00:00
SkCoverageMode.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkCubicMap.h [skottie] De-dupe sequential cubic mappers 2019-07-17 17:14:46 +00:00
SkCustomMesh.h Add SKSL guard to SkCustomMesh APIs 2022-01-06 18:10:57 +00:00
SkData.h Zero-initialize uniform data in SkRuntimeEffectBuilder 2021-11-18 17:15:07 +00:00
SkDataTable.h Replace 'typedef xxxxx INHERITED' with 'using INHERITED = xxxx;'. 2020-09-03 03:41:26 +00:00
SkDeferredDisplayList.h Reland "Purge ccpr" 2021-06-19 18:42:38 +00:00
SkDeferredDisplayListRecorder.h Move more GPU-specific code behind SK_SUPPORT_GPU flag 2021-11-03 14:12:52 +00:00
SkDocument.h Replace 'typedef xxxxx INHERITED' with 'using INHERITED = xxxx;'. 2020-09-03 03:41:26 +00:00
SkDrawable.h Plumbing for glyph drawable 2022-02-08 18:14:27 +00:00
SkDrawLooper.h Hide (unused) SkDrawLooper 2021-02-07 12:49:53 +00:00
SkEncodedImageFormat.h Add MVP implementation of JPEGXL decoder. 2022-02-02 15:17:14 +00:00
SkExecutor.h Reenable Wdeprecated-copy-dtor 2021-02-16 17:53:28 +00:00
SkFlattenable.h Fixup enum name in SkFlattenable. 2021-07-30 18:19:11 +00:00
SkFont.h Improve remote glyph caching. 2022-02-03 16:49:43 +00:00
SkFontArguments.h Support font palette overrides through SkFontArguments 2022-02-17 13:19:53 +00:00
SkFontMetrics.h SkCustomTypefaceBuilder to set SkFontStyle 2020-08-19 00:09:55 +00:00
SkFontMgr.h Purge 2020 picture versions 2021-07-19 19:35:49 +00:00
SkFontParameters.h Fix DWrite axis design parameters. 2020-12-01 15:00:33 +00:00
SkFontStyle.h move SkTPin to include/private 2020-10-16 19:45:11 +00:00
SkFontTypes.h Remove SkTextEncoding and SkFontHinting macros. 2019-05-22 20:44:28 +00:00
SkGraphics.h Remove SkGraphics::Term 2022-01-13 17:40:35 +00:00
SkICC.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkImage.h Revert "Remove skstd::optional entirely." 2022-02-08 02:13:27 +00:00
SkImageEncoder.h Bitmap.asImage() 2020-12-23 15:54:57 +00:00
SkImageFilter.h Move more virtuals into ...Base to hide them from public api 2021-06-18 20:20:06 +00:00
SkImageGenerator.h Revert "Remove skstd::optional entirely." 2022-02-08 02:13:27 +00:00
SkImageInfo.h Reland "Add kR8_unorm_SkColorType" 2022-02-10 18:00:19 +00:00
SkM44.h [androidkit] optimize JNI calls in AndroidKit.Matrix transformations 2021-05-07 16:17:09 +00:00
SkMallocPixelRef.h Enable ClangTidy check llvm-namespace-comment. 2020-08-06 19:07:52 +00:00
SkMaskFilter.h Move more virtuals into ...Base to hide them from public api 2021-06-18 20:20:06 +00:00
SkMath.h impl SkMulDiv255Round with SkMul16ShiftRound 2020-09-09 17:01:17 +00:00
SkMatrix.h Document SkMatrix default constructs to identity 2021-07-24 16:04:39 +00:00
SkMilestone.h Update Skia milestone to 100 2022-01-21 18:08:55 +00:00
SkOverdrawCanvas.h introduce SkCanvas::onDrawGlyphRunList 2021-04-15 19:44:24 +00:00
SkPaint.h Revert "Remove skstd::optional entirely." 2022-02-08 02:13:27 +00:00
SkPath.h Add query to test our cached convexity 2021-01-19 14:54:44 +00:00
SkPathBuilder.h Set SkPath.fLastMoveToIndex field from SkPathBuilder 2021-08-06 14:12:11 +00:00
SkPathEffect.h Pass CTM to path effects (experimental) 2021-07-13 18:42:55 +00:00
SkPathMeasure.h [canvaskit] Flesh out remaining docs for core CanvasKit. 2020-10-05 11:47:40 +00:00
SkPathTypes.h Move convexity enum out of public 2020-08-30 13:04:22 +00:00
SkPicture.h Remove legacy support for inheriting sampling from the paint. 2021-03-19 16:17:42 +00:00
SkPictureRecorder.h Almost remove GrContext 2020-10-20 15:52:01 +00:00
SkPixelRef.h Remove dead references to filter-quality 2021-03-21 00:26:07 +00:00
SkPixmap.h Remove dead references to filter-quality 2021-03-21 00:26:07 +00:00
SkPngChunkReader.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkPoint3.h Add clipping for perspective triangles 2019-12-17 23:24:18 +00:00
SkPoint.h Test texture domain effect with local matrix. 2019-11-22 22:37:33 +00:00
SkPromiseImageTexture.h Remove all unused uniqueKey support from SkPromiseImageTexture. 2021-12-21 21:32:43 +00:00
SkRasterHandleAllocator.h Reenable Wdeprecated-copy-dtor 2021-02-16 17:53:28 +00:00
SkRect.h Make simple coord/size getters on Sk[I]Rect constexpr 2021-12-09 22:17:30 +00:00
SkRefCnt.h Make GrSurfaceProxy ref counts thread safe. 2019-10-24 19:55:23 +00:00
SkRegion.h remove enum docs 2020-02-11 21:43:07 +00:00
SkRRect.h Add halfWidth/halfHeight functions to SkRectPriv 2020-12-22 20:42:43 +00:00
SkRSXform.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkSamplingOptions.h SkFilterQuality is gone. 2021-07-22 12:41:49 +00:00
SkScalar.h Format and comment SkScalarInterpFunc 2020-08-26 20:50:34 +00:00
SkSerialProcs.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkShader.h Generalize composing imagefilters and shaders to blenders 2021-07-26 21:07:51 +00:00
SkSize.h Remove GrSurfaceDesc 2020-02-07 19:48:13 +00:00
SkSpan.h reject sizes that will overflow in SkSpan 2021-05-13 19:42:43 +00:00
SkStream.h Add SkFILEStream constructor which takes a size. 2020-09-11 19:50:24 +00:00
SkString.h Add SK_PRINTF_LIKE to existing variadic print functions. 2022-02-07 14:55:39 +00:00
SkStrokeRec.h Relax SkStrokeRec::hasEqualEffect 2020-09-15 20:05:40 +00:00
SkSurface.h Reland "Add SkSurface resolve function." 2022-02-03 20:13:16 +00:00
SkSurfaceCharacterization.h Move more GPU-specific code behind SK_SUPPORT_GPU flag 2021-11-03 14:12:52 +00:00
SkSurfaceProps.h Move the DMSAA surface flag into the public API 2021-07-13 19:21:00 +00:00
SkSwizzle.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkTextBlob.h Expose experimental iterator on SkParagraph 2021-04-16 16:50:33 +00:00
SkTileMode.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkTime.h Reland "Add format-specifier warnings to SkDebugf." 2021-06-25 17:57:43 +00:00
SkTraceMemoryDump.h Add ability to trace wrapped objects and be able to differentiate 2021-04-08 18:38:14 +00:00
SkTypeface.h rename fontID to typefaceID 2022-02-07 20:12:39 +00:00
SkTypes.h Convert 0 and NULL to nullptr. 2022-02-09 14:20:57 +00:00
SkUnPreMultiply.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkVertices.h Remove custom SkVertices data and runtime effect varying support 2021-04-19 17:49:25 +00:00
SkYUVAInfo.h Reland "Push SkYUVAInfo into GrYUVToRGBEffect." 2021-01-13 22:08:44 +00:00
SkYUVAPixmaps.h Remove SkYUVASizeInfo, make SkYUVAIndex a private part of SkYUVAInfo 2021-01-12 15:06:26 +00:00