Skip to content

feat: select semantic text typefaces - #335

Open
Happypig375 wants to merge 5 commits into
issue-306-semantic-text-stylefrom
issue-307-semantic-glyphs
Open

feat: select semantic text typefaces#335
Happypig375 wants to merge 5 commits into
issue-306-semantic-text-stylefrom
issue-307-semantic-glyphs

Conversation

@Happypig375

Copy link
Copy Markdown
Collaborator

Summary

  • add immutable, validated semantic typeface descriptors for family, weight, upright/italic/slanted posture, advertised OpenType features, and configured small-cap glyph maps
  • preserve exact local face identity and one coherent per-render snapshot, exhausting deterministic local fallbacks before globals
  • keep slanted distinct from italic; unavailable slanted faces fall back to upright rather than italic/math-italic
  • select a configured true small-cap glyph without rewriting source Unicode, preserving scalar enumeration and the materialized glyph run used for both measurement and drawing
  • retain legacy IEnumerable<Typeface> behavior from Honor styles in local text typefaces #284 and descriptor state through absolute/relative size changes
  • document native feature metadata versus configured glyph-map behavior; Typography's current GSUB path is not modified

Testing

  • SemanticTypefaceDescriptorTests: 10 passed, including Source Serif Pro a → genuine A.sc glyph 1108 and its distinct advance
  • TestStyledLocalTypefaces: 6 passed
  • TextLaTeXParserTests: 241 passed; TextStyleTests: 17 passed
  • XAML Maui/Avalonia live typeface tests: 1/1 each
  • Skia FontStyles: 19/19 for both finite/infinite centered layouts
  • Skia VectorProjection: 92/92 display and 92/92 inline
  • Avalonia FontStyles: 19/19 across all six alignment/width variants
  • all four affected Release builds passed; scoped format and diff checks passed
  • no golden images changed; independent architecture review approved

Stack

This PR is based on issue-306-semantic-text-style / #331 and merges the styled-local-typeface prerequisite from #284. GitHub issue dependencies record both #306 and #142 as blockers.

Closes #307

@Happypig375 Happypig375 added Type/Enhancement A concrete change to CSharpMath behavior or capability. Area/Rendering Typesetting, measurement, fonts, text layout, and drawing. labels Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area/Rendering Typesetting, measurement, fonts, text layout, and drawing. Type/Enhancement A concrete change to CSharpMath behavior or capability.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant