skia2/include/core
Ben Wagner fcfd0af9fd Notify when SkFontMetrics bounds are bogus.
OpenType and many other font formats have the concept of pre-computed
metrics for the union of all glyph bounding boxes. This allows for fast
though course quick rejecting of bounds, since the glyphs themselves may
potentially be quite a bit larger than the EM. With the introduction of
variable fonts OpenType does not vary these bounds, so the bounds are
only valid for the default non-varied font.

As a result the fTop, fBottom, fXMax, and fXMin reported in
SkFontMetrics may be bogus. Since simply always setting them to empty
zeros may be disruptive, provide a way forward for new users to check if
the bounds are valid.

This exposed an issue where SkTextBlobBuilder::TightRunBounds does not
handle SkTextBlob::kRSXform_Positioning, so add a test for that.

Change-Id: I872729e0f16e2a196229f9902addf4b07b461590
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301455
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
2020-07-09 19:26:40 +00:00
..
SkAnnotation.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkBBHFactory.h add metadata to calculated bounds 2020-02-27 19:12:35 +00:00
SkBitmap.h Reland "Make SkBitmap/SkPixmap::erase* do so in sRGB" 2020-04-23 20:07:09 +00:00
SkBlendMode.h remove enum docs 2020-02-11 21:43:07 +00:00
SkBlurTypes.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkCanvas.h Expose GrRecordingContext accessor on SkCanvas and SkSurface 2020-06-26 19:35:30 +00:00
SkCanvasVirtualEnforcer.h remove legacy virtual from enforcer 2020-03-13 14:57:03 +00:00
SkClipOp.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkColor.h Add getter for channels to GrBackendFormat 2020-04-08 19:54:27 +00:00
SkColorFilter.h Move impl into SkColorFilterBase 2020-06-25 00:26:11 +00:00
SkColorPriv.h Remove SkScalarClampMax and SkScalarPin 2020-02-06 18:29:51 +00:00
SkColorSpace.h remove old kDCIP3 alias 2020-05-29 14:59:43 +00:00
SkContourMeasure.h Hide SkContourMeasure's usage of RawIter behind an "Impl" class 2020-05-05 19:24:41 +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
SkData.h test data.equals with empty 2020-02-17 17:53:49 +00:00
SkDataTable.h trim out unneeded references to SkString 2019-11-15 21:01:01 +00:00
SkDeferredDisplayList.h Move GrRecordingContext.h and GrDirectContext.h into include/gpu 2020-07-01 17:32:14 +00:00
SkDeferredDisplayListRecorder.h Finish the DDL sk_sp migration 2020-06-29 16:49:54 +00:00
SkDocument.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkDrawable.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkDrawLooper.h SkDrawLooper has not been supported by Skia for a while. Update dox and remove examples 2020-05-27 01:22:06 +00:00
SkEncodedImageFormat.h GOOGLE3 -> SK_BUILD_FOR_GOOGLE3 2017-12-19 14:42:16 +00:00
SkExecutor.h Allow SkThreadPool to be non-borrowing 2020-04-23 16:11:28 +00:00
SkFilterQuality.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkFlattenable.h Make SK_DISABLE_EFFECT_SERIALIZATION trim out more code 2020-06-09 15:45:07 +00:00
SkFont.h Skip degenerate contours in glyphs. 2020-02-13 16:22:42 +00:00
SkFontArguments.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkFontLCDConfig.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkFontMetrics.h Notify when SkFontMetrics bounds are bogus. 2020-07-09 19:26:40 +00:00
SkFontMgr.h Remove SkFontMgr::matchFaceStyle. 2020-06-28 01:43:04 +00:00
SkFontParameters.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkFontStyle.h Wsign-conversion for public headers 2020-06-02 12:34:54 +00:00
SkFontTypes.h Remove SkTextEncoding and SkFontHinting macros. 2019-05-22 20:44:28 +00:00
SkGraphics.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkICC.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkImage.h Reland "Add async rescale and read APIs to SkImage." 2020-06-26 18:17:21 +00:00
SkImageEncoder.h Revert "add runtime registration for encoders" 2019-05-15 22:02:39 +00:00
SkImageFilter.h Move SkImageFilter functionality into private SkImageFilter_Base 2019-08-02 18:56:39 +00:00
SkImageGenerator.h Add SkBudgeted parameter to SkImage::makeTextureImage(). 2020-03-18 17:27:41 +00:00
SkImageInfo.h Fix comments for SkYUVColorSpace 2020-06-03 17:37:28 +00:00
SkM44.h [skottie] Add line-spacing animator support 2020-07-06 15:41:12 +00:00
SkMallocPixelRef.h SkMallocPixelRef: remove MakeDirect and MakeWithProc from API. 2019-08-15 19:01:13 +00:00
SkMaskFilter.h remove unused maskfilter helpers: Combine, Compose 2020-05-05 19:10:00 +00:00
SkMath.h Remove SkClampMax 2020-02-06 19:49:53 +00:00
SkMatrix44.h Revert "transition matrix44 to opt-in only" 2020-04-16 10:01:29 +00:00
SkMatrix.h Remove SkReader32, and some API from SkWriter32 2020-06-10 16:45:56 +00:00
SkMilestone.h Update Skia milestone to 86 2020-06-29 21:18:16 +00:00
SkOverdrawCanvas.h can we remove these entirely? 2020-04-01 12:13:54 +00:00
SkPaint.h SkDrawLooper has not been supported by Skia for a while. Update dox and remove examples 2020-05-27 01:22:06 +00:00
SkPath.h document Make for paths, and move from pathbuilder into path 2020-07-02 13:48:09 +00:00
SkPathBuilder.h document Make for paths, and move from pathbuilder into path 2020-07-02 13:48:09 +00:00
SkPathEffect.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkPathMeasure.h More classes no longer inherit from SkNoncopyable 2019-06-10 18:15:18 +00:00
SkPathTypes.h Remove SkPathVerb::kDone 2020-05-01 21:27:18 +00:00
SkPicture.h Docs: Add links to header files. 2019-10-18 19:24:13 +00:00
SkPictureRecorder.h let picture record take a bbh directly 2020-01-21 18:59:11 +00:00
SkPixelRef.h Prevent unbounded listener growth on SkPixelRefs. 2020-03-02 22:32:09 +00:00
SkPixmap.h Wsign-conversion for public headers 2020-06-02 12:34:54 +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 rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkRasterHandleAllocator.h use std::make_unique 2019-12-12 22:32:45 +00:00
SkRect.h Remove SkMin32/SkMax32 2020-02-06 17:31:51 +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 Fix false positive in SkRRectPriv::ConservativeIntersect 2020-05-06 19:49:39 +00:00
SkRSXform.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkRWBuffer.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkScalar.h Remove SkScalarClampMax and SkScalarPin 2020-02-06 18:29:51 +00:00
SkSerialProcs.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkShader.h remove localmatrix parameter from Blend and Lerp compose shaders 2020-03-25 17:56:26 +00:00
SkSize.h Remove GrSurfaceDesc 2020-02-07 19:48:13 +00:00
SkStream.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkString.h Move SkSLSampleMatrix to include/private 2020-06-25 15:53:33 +00:00
SkStrokeRec.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkSurface.h Make SkGpuDevice hold a GrRecordingContext (take 2) 2020-07-09 12:28:22 +00:00
SkSurfaceCharacterization.h Add createBackendFormat and createFBO0 helper methods to SkSurfaceCharacterization 2020-02-13 18:55:22 +00:00
SkSurfaceProps.h Add back deprecated warnings. 2020-03-27 14:18:49 +00:00
SkSwizzle.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkTextBlob.h Docs: Add links to header files. 2019-10-18 19:24:13 +00:00
SkTileMode.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkTime.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkTraceMemoryDump.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkTypeface.h Move scaler context fallback to GDI 2020-02-11 19:50:27 +00:00
SkTypes.h Allow printf-style formatting to be used in SK_ABORT. 2020-06-12 20:26:34 +00:00
SkUnPreMultiply.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
SkVertices.h For custom vector/normal/position attrs, let marker ID 0 mean CTM 2020-06-02 18:09:14 +00:00
SkYUVAIndex.h Remove SkTMin and SkTMax 2020-02-07 18:40:09 +00:00
SkYUVASizeInfo.h Use safe computation for adding up YUVASizeInfo total bytes 2019-09-23 20:55:28 +00:00