Skip to content

Make two DrawText methods obsolete because of #3122#3165

Open
pauldendulk wants to merge 3 commits into
mono:mainfrom
pauldendulk:fix/make-drawtext-methods-obsolete
Open

Make two DrawText methods obsolete because of #3122#3165
pauldendulk wants to merge 3 commits into
mono:mainfrom
pauldendulk:fix/make-drawtext-methods-obsolete

Conversation

@pauldendulk

Copy link
Copy Markdown

Description of Change

Made two DrawText methods obsolete that use the obsolete SKPaint.TextAlign, which caused a text to disappeared after drawing the same text multiple times. Two other DrawText methods were already obsolete, seemingly also because of the obsolete SKPaint.TextAlign.

Bugs Fixed

API Changes

Users will get a warning (or error if WarningAsError is true) when calling these methods.

Made obsolete:

  • public void DrawText (string text, SKPoint p, SKFont font, SKPaint paint)
  • public void DrawText (string text, SKPoint p, SKTextAlign textAlign, SKFont font, SKPaint paint)

Behavioral Changes

None.

Required skia PR

None.

PR Checklist

  • Has tests (if omitted, state reason in description)
  • Rebased on top of main at time of PR
  • Merged related skia PRs
  • Changes adhere to coding standard
  • Updated documentation

Perhaps documentation needs to be updated, not sure what or how.

mattleibow added a commit that referenced this pull request Jun 9, 2026
Promote SKPaint text/font obsolete members to error (#4068)

Fixes: #3732

Phase 1 of the SKPaint text-API removal plan. Promotes ~115
warning-level [Obsolete] attributes on SKPaint text/font members to
[Obsolete(..., error: true)], so the existing RemoveObsoleteSymbols
build task strips them from the reference assembly. Also promotes:

  * 5 paint-only DrawText/DrawTextOnPath overloads on SKCanvas
  * 2 DrawText(text, x/point, font, paint) overloads from PR #3165
  * 11 SKFilterQuality-consuming overloads across SKBitmap, SKImage,
    SKShader, and SKPixmap

Internal callers that still need access to legacy paint state
(DrawImage, DrawAtlas, DrawText, HarfBuzz shaper) use four new
non-obsolete bypass helpers: GetLegacyFont(), GetLegacyTextAlign(),
GetLegacyTextEncoding(), and GetLegacyFilterQualitySampling(). These
are internal-only, exposed via InternalsVisibleTo. No runtime behavior
change for downstream consumers.

Obsolete SKPaint text-API tests removed from SKPaintTest.cs—they cannot
compile against the ref assembly (CS1061, not CS0619). Equivalent
coverage exists in SKFontTest.cs for MeasureText, BreakText,
CountGlyphs, GetGlyphs, ContainsGlyphs, GetGlyphWidths, and
GetTextPath.

Gallery samples and SkiaFiddle migrated to pass SKTextAlign.Left
explicitly instead of relying on paint.TextAlign default state.

Co-authored-by: Ramez Gerges <ramezragaa@proton.me>
Co-authored-by: Ramez Ragaa <66218781+ramezgerges@users.noreply.github.com>
Co-authored-by: Matthew Leibowitz <mattleibow@live.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

[BUG] x86 fonts are corrupted

1 participant