Name Description Size
SkDebug_android.cpp 894
SkDebug_stdio.cpp 734
SkDebug_win.cpp 795
SkDiscardableMemory_none.cpp 413
SkFontConfigInterface.cpp 1289
SkFontConfigInterface_direct.cpp migrated from chrome/src/skia/ext/SkFontHost_fontconfig_direct.cpp 23713
SkFontConfigInterface_direct.h migrated from chrome/src/skia/ext/SkFontHost_fontconfig_direct.cpp 1410
SkFontConfigInterface_direct_factory.cpp 486
SkFontConfigTypeface.h 2885
SkFontHost_cairo.cpp 22485
SkFontHost_FreeType.cpp 92549
SkFontHost_FreeType_common.cpp Copies a FT_Bitmap into an SkMask with the same dimensions. FT_PIXEL_MODE_MONO FT_PIXEL_MODE_GRAY FT_PIXEL_MODE_LCD FT_PIXEL_MODE_LCD_V 89719
SkFontHost_FreeType_common.h Computes a bounding box for a COLRv1 glyph. This method may change the configured size and transforms on FT_Face. Make sure to configure size, matrix and load glyphs as needed after using this function to restore the state of FT_Face. 2502
SkFontHost_win.cpp 86229
SkFontMgr_android.cpp 20023
SkFontMgr_android_ndk.cpp Technically, the AFont API was introduced in Android 10 (Q, API 29). However... The AFontMatcher API implementation is broken from its introduction until at least API 33. What is desired is to find a font for the given locale which contains the given character. However, the implementation actually attempts to shape the string passed to it with the default font and then returns the font chosen for the first run. However, this produces undesireable results, as it will always prefer the default font over the locale, so any code points covered by the default font will always come from the default font regardless of the requested locale. In addition, this will claim coverage for code points "made up" by the shaper through normalization, denormalization, whitespace synthesis, no-draw synthesis, etc, for the default font, when there may be better choices later in fallback. On Android 10 (Q, API 29) AFont_getLocale always returns nullptr (if there is a locale set) or whatever std::unique_ptr<std::string>()->c_str() returns, which happens to be 0x1. As a result, AFont_getLocale cannot be used until Android 11 (R, API 30). This is b/139201432 and fixed with "Make AFont_getLocale work" [0]. This change is in Android 11 (API 30) but does not appear to have been cherry-picked into Android 10 (Q, API 29). [0] https://cs.android.com/android/_/android/platform/frameworks/base/+/01709c7469b59e451f064c266bbe442e9bef0ab4 As a result, there is no correct way to use locale information from the Android 10 NDK. So this font manager only works with Android 11 (R, API 30) and above. 30696
SkFontMgr_android_parser.cpp This file contains TWO 'familyset' handlers: One for JB and earlier which works with /system/etc/system_fonts.xml /system/etc/fallback_fonts.xml /vendor/etc/fallback_fonts.xml /system/etc/fallback_fonts-XX.xml /vendor/etc/fallback_fonts-XX.xml and the other for LMP and later which works with /system/etc/fonts.xml If the 'familyset' 'version' attribute is 21 or higher the LMP parser is used, otherwise the JB. API 15 4.0.4_r2.1 system_fonts.xml, vendor_fonts.xml, fallback_fonts.xml (system+vendor) no lang. API 16 4.1.1_r1 fallback_fonts-xx-XX.xml are added. Use the xx list in order. API 17 4.2.2_r1.1 fallback_fonts-xx.xml are removed and 'lang' is added. API 21 5.0.0_r1.0.1 fonts.xml replaces the other files. API 29 10.0.0_r1 /product/etc/fonts_customization.xml with base /product/fonts is added. The NDK interface is added and reading the files directly is discouraged. 35399
SkFontMgr_android_parser.h \class SkLanguage The SkLanguage class represents a human written language, and is used by text draw operations to determine which glyph to draw when drawing characters with variants (ie Han-derived characters). 6943
SkFontMgr_custom.cpp 7631
SkFontMgr_custom.h The base SkTypeface implementation for the custom font manager. 5027
SkFontMgr_custom_directory.cpp 4846
SkFontMgr_custom_embedded.cpp 5207
SkFontMgr_custom_empty.cpp 855
SkFontMgr_fontations_empty.cpp SkFontMgr_Fontations_Empty A SkFontMgr with an empty list of fonts, meant as a basic tool for font instantiation from data in testing, see TestFontMgr in FontToolUtils. 3179
SkFontMgr_fontconfig.cpp Since FontConfig is poorly documented, this gives a high level overview: FcConfig is a handle to a FontConfig configuration instance. Each 'configuration' is independent from any others which may exist. There exists a default global configuration which is created and destroyed by FcInit and FcFini, but this default should not normally be used. Instead, one should use FcConfigCreate and FcInit* to have a named local state. FcPatterns are {objectName -> [element]} (maps from object names to a list of elements). Each element is some internal data plus an FcValue which is a variant (a union with a type tag). Lists of elements are not typed, except by convention. Any collection of FcValues must be assumed to be heterogeneous by the code, but the code need not do anything particularly interesting if the values go against convention. Somewhat like DirectWrite, FontConfig supports synthetics through FC_EMBOLDEN and FC_MATRIX. Like all synthetic information, such information must be passed with the font data. 40168
SkFontMgr_FontConfigInterface.cpp Pointer to just after the last field of this class. 10424
SkFontMgr_fuchsia.cpp 21601
SkFontMgr_mac_ct.cpp Creates a typeface from a descriptor, searching the cache. 18830
SkFontMgr_win_dw.cpp localeNameLength and defaultFamilyNameLength must include the null terminator. 35902
SkFontScanner_fontations.cpp 8469
SkFontScanner_fontations_priv.h 1387
SkFontScanner_FreeType_priv.h 1773
SkGlobalInitialization_default.cpp Register most effects for deserialization. None of these are strictly required for Skia to operate, so if you're not using deserialization yourself, you can define SK_DISABLE_EFFECT_SERIALIZATION, or modify/replace this file as needed. 2162
SkImageEncoder_NDK.cpp 5403
SkImageGenerator_none.cpp 231
SkImageGenerator_skia.cpp 231
SkImageGeneratorCG.cpp 5392
SkImageGeneratorNDK.cpp 8823
SkImageGeneratorWIC.cpp Takes ownership of the imagingFactory Takes ownership of the imageSource 9002
SkMemory_malloc.cpp TODO: After b/169449588 is fixed, we will want to change this to restore original behavior instead of always disabling the flag. TODO: After b/158870657 is fixed and scudo is used globally, we can assert when an an error is returned. 4214
SkMemory_mozalloc.cpp 1288
SkNDKConversions.cpp 3974
SkNDKConversions.h 811
SkOSFile_ios.h allocator= 2003
SkOSFile_posix.cpp 5491
SkOSFile_stdio.cpp 4068
SkOSFile_win.cpp 7785
SkScalerContext_mac_ct.cpp 31096
SkScalerContext_mac_ct.h Unrotated variant of fCTFont. In 10.10.1 CTFontGetAdvancesForGlyphs applies the font transform to the width of the advances, but always sets the height to 0. This font is used to get the advances of the unrotated glyph, and then the rotation is applied separately. CT vertical metrics are pre-rotated (in em space, before transform) 90deg clock-wise. This makes kCTFontOrientationDefault dangerous, because the metrics from kCTFontOrientationHorizontal are in a different space from kCTFontOrientationVertical. With kCTFontOrientationVertical the advances must be unrotated. Sometimes, creating a copy of a CTFont with the same size but different trasform will select different underlying font data. As a result, avoid ever creating more than one CTFont per SkScalerContext to ensure that only one CTFont is used. As a result of the above (and other constraints) this font contains the size, but not the transform. The transform must always be applied separately. 3497
SkScalerContext_win_dw.cpp Note: In versions 8 and 8.1 of Windows, some calls in DWrite are not thread safe. The mutex returned from maybe_dw_mutex protects the calls that are problematic. 102205
SkScalerContext_win_dw.h The total matrix without the text height scale. 4407
SkTypeface_fontations.cpp 73424
SkTypeface_fontations_priv.h Implementation of AxisWrapper FFI C++ interface, allowing Rust to call back into C++ for populating variable axis availability information, see skpath_bridge.h. 12933
SkTypeface_FreeType.h Fetch units/EM from "head" table if needed (ie for bitmap fonts) 4800
SkTypeface_mac_ct.cpp Assumes src and dst are not nullptr. 57108
SkTypeface_mac_ct.h CTFontCopyVariationAxes provides the localized name of all axes, making it very slow. This is unfortunate, its result is needed just to see if there are any axes at all. To avoid calling internal APIs cache the result of CTFontCopyVariationAxes. https://github.com/WebKit/WebKit/commit/1842365d413ed87868e7d33d4fad1691fa3a8129 https://bugs.webkit.org/show_bug.cgi?id=232690 5488
SkTypeface_proxy.cpp 5195
SkTypeface_proxy.h 3707
SkTypeface_win_dw.cpp 46985
SkTypeface_win_dw.h dwrite_3.h incorrectly uses NTDDI_VERSION to hide immutable interfaces (it should only be used to gate changes to public ABI). The implementation files can (and must) get away with including SkDWriteNTDDI_VERSION.h which simply unsets NTDDI_VERSION, but this doesn't work well for this header which can be included in SkTypeface.cpp. Instead, ensure that any declarations hidden behind the NTDDI_VERSION are forward (backward?) declared here in case dwrite_3.h did not declare them. 8221