Closed HinTak closed 6 months ago
@kyamagu I have a m122 that compiles, and I think I can emulate the deleted SkFontMgr::RefDefault()
, but it is copying maybe about a 100 lines from chromium more or less, and it won't be pretty. Mostly this is a fore-warning.
Hmm, so you mean there won't be logic equivalent to chromium:skia/ext/font_utils.cc
in the skia codebase? I agree copying from chromium is not future-proof. Even if doing so, there should be a mechanism to pull the latest code from the chromium repository via sparse checkout or equivalent.
It doesn't look like it. They have simply moved the centralized functionality of "give me a font matching a description in the current OS platform" from skia to chromium; on skia you are left with a few per-platform optionally compiled in font managers, Linux build of skia has fontconfig, Windows build of skia has directwrite, mac build of skia has coretext. It is basically skia's src/core/SkFontMgr_default.cc
or something modified to chromium's skia/ext/font_utils.cc
(chromium has skia submodule under third_party/skia
, so the bottom skia
location is for skia-interacting code within chromium).
Chromium is much larger than skia even without submodules... besides, the file expects the rest of skia to be under third_party/skia
, so it cannot be used as it is.
Sure, it is okay if the copying won't cause a big maintenance effort in the future.
This is the only change between 121 and 122, plus the removal/emulation of Typeface.MakeFrom*
, which is for the same reason - those assume a "default" font manager to get typeface matching descriptions. The added code for emulating FontMgr.Refdefault
is about 50 lines - slightly simplified from the the skia 121 or chrome 122, since we don't care about android etc. It segfaults at the moment... I 'll post it as a pull at some point, but since it has no advantage over 121, I would say we do the same as 118, not merge until we need to add something interesting, or fix some broken things since 87.
Skia m122 has a rather troubling change:
This functionality is being moved into Chromium itself:
https://github.com/chromium/chromium/commit/a6166e825abc9b0b0359115fc9d95de4bbcd5b9c
I see no good alternative except essentially copying most of chromium:skia/ext/font_utils.cc and stick it near the top of our src/skia/Font.cpp, emulating the removed
SkFontMgr::RefDefault()
. Without a workingSkFontMgr::RefDefault()
or equivalent (SkFontMgr::RefEmpty()
is interface-identical and available, but it does nothing ; if you want something, you need to callSkFontMgr_New_FCI
[linux fontconfig] etc directly, for each platform ), we are getting an extra of 44 failed and 62 errors compared to two days ago.This is essentially all the difference between upstream skia m121 and m122, as far as skia-python is concerned, moving the "central font mgr api" into chromium. @kyamagu