Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to a much later version of skia (m80) #986

Merged
merged 114 commits into from
Apr 28, 2020
Merged

Conversation

mattleibow
Copy link
Contributor

@mattleibow mattleibow commented Oct 22, 2019

Description of Change

Update to the latest (m80 at this time) version of skia.

This has been published that to the internal feed as 2.80.0-pr.986.37

Tasks

  • Merge native skia
  • Get native skia building
    • Hacking out the problems so it compiles
    • Fixing the problems properly
    • Bind any new members that are essential
  • Update the managed bindings
    • Hacking out the problems so it compiles
    • Fixing/adding unit tests
    • Fixing the problems properly
    • Bind any new members that are essential
  • Update all source libraries (this shouldn't be too much work as these APIs are the same)
    • SkiaSharp.Views (there are a LOT of platforms)
    • SkiaSharp.Views.Forms
  • Update all samples (there are even more samples)
    • Update basic samples
    • Update feature samples

Bugs Fixed

API & Behavioral Changes

Changes so far (excluding the changes listed in mono/skia#64):

  • New minimum versions
    • Android API 16 (Jelly Bean)
    • Ubuntu 16.04 with later Clang versions (only for the default builds, but you can always build some ancient Linux if you build your own Clang)
    • UWP 10.0.16299 (Fall Creators Update)
  • Using Docker images on CI to build Linux
    • You can still build on Linux without Docker (you just need to manually install the tools)
  • HarfBuzz updated to v2.6.2
  • Targeting the newer tools
    • mono 6.4.0
    • Xcode 11
    • .NET Core 3.0
    • VS 2019
  • TODO

@mattleibow mattleibow changed the title Update to the latest version of skia (m79) [WIP] Update to the latest version of skia (m79) Oct 25, 2019
* UWP: Fix the ARM build and add ARM64
* GDI is optional - and we don't want it
* Fix windows projects
* Update harfbuzz to v2.6.2
* Use Docker
* Use a later version of the linux bits
* Use VS 2019
* Create install-vs.ps1
* Use Xcode 11
* Update the tooling
* Update skia
@mattleibow mattleibow force-pushed the dev/update-skia branch 2 times, most recently from 2fc43be to 4e7fe1c Compare October 31, 2019 01:47
@trovialdo trovialdo mentioned this pull request Oct 31, 2019
@mattleibow mattleibow added this to In progress in v2.80.0 via automation Nov 21, 2019
@mattleibow mattleibow closed this Apr 18, 2020
v2.80.0 automation moved this from In progress to Done Apr 18, 2020
@mattleibow mattleibow reopened this Apr 18, 2020
v2.80.0 automation moved this from Done to In progress Apr 18, 2020
@Gillibald
Copy link
Contributor

In my opinion SKFont should only measure and break spans of glyphs. Supplying a string to these methods leads to errors. This only works for text that doesn't need extra shaping when you supply a string.

@mattleibow
Copy link
Contributor Author

@Gillibald I agree. I just have to add it back for backwards compat 😢

However... I can just keep SKFont to be glyph-only...

Doesn't the MeasureText fall into the same category as GetGlyphWidths and CountGlyphs? They also take strings.

Finally, even though you and I know that we need to get glyphs, many people just want to use simple .NET strings as text...

@Gillibald
Copy link
Contributor

Gillibald commented Apr 24, 2020

Y all these methods should follow this logic. I consider SKFont a low level component. SKPaint can expose overloads that take a string. SKFont doesn't need that and should do better. Maybe we should document it somehow that this only works for basic scenarios and link to the SkShaper component.

Edit: This also doesn't handle surrogate pairs if I am not mistaken but that might be wrong.

@mattleibow
Copy link
Contributor Author

mattleibow commented Apr 24, 2020

@Gillibald

This also doesn't handle surrogate pairs

I think it does, which is actually quite nice (or maybe I am mistaken): https://github.com/google/skia/blob/chrome/m80/src/utils/SkUTF.cpp#L70-L94

And I think I agree with that logic of keeping SKFont low-level and SKPaint as the "more general" usage.

@mattleibow mattleibow changed the base branch from master to develop April 24, 2020 20:44
@mattleibow mattleibow mentioned this pull request Apr 24, 2020
@mattleibow mattleibow changed the title [WIP] Update to the latest version of skia Update to a much later version of skia (m80) Apr 28, 2020
@mattleibow mattleibow merged commit 9ad68b6 into develop Apr 28, 2020
v2.80.0 automation moved this from In progress to Done Apr 28, 2020
@mattleibow mattleibow deleted the dev/update-skia branch June 5, 2020 14:44
@mattleibow mattleibow added this to the v2.80.0 milestone Jul 9, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects
v2.80.0
  
Done
Development

Successfully merging this pull request may close these issues.

None yet

3 participants