Skip to content

feat(android): an app can pass its own typeface to DdsTheme (0.9.2) - #155

Merged
jlc488 merged 1 commit into
mainfrom
feat/android-theme-font
Nov 13, 2026
Merged

jlc488 merged 1 commit into
mainfrom
feat/android-theme-font

Conversation

@jlc488

@jlc488 jlc488 commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

What

The owner approved this ("그래 진행해 글꼴관련된거"). Qooroo owns its typeface (it will bundle Pretendard Std Variable), and DDS keeps Pretendard as the default.

  • DdsTheme(fontFamily: FontFamily = DdsSans). The family goes into the DDS type scale, which is the only place DDS sets a family, so DDS components (they read DdsTheme.typography) and Material's type (built from the same scale) are all set in it.
  • Only the family changes. Sizes, line heights and weights stay the DDS type scale. The default is the same DdsSans object as before, so an app that passes nothing changes not one glyph.
  • No per-locale mapper. An app that wants another family for another language passes a different family when that language is on. That keeps the API to one parameter.
  • The app is responsible for its family covering the scale's weights (400/500/600/700) and the scripts it shows. The KDoc and guide §4 say so.

Docs: guide §4 (docs/mobile-native.md + .ko.md), both changelogs (0.9.2), VERSION_NAME 0.9.2, both READMEs.

Tests

  • TypographyFamilyTest (JVM): by default every style, normal and large text, is DdsSans; a passed family reaches all sixteen styles and Material's type; nothing else differs between the two (sizes, line heights, weights, line-height style).
  • ThemeFontOnDeviceTest: a DdsButton and a DdsSegmentedControl lay their labels out in the passed family, and in DdsSans without one.

Verified locally

  • The full Android CI command: BUILD SUCCESSFUL; TypographyFamilyTest 4/4 and every other unit suite 0 failures / 0 errors; check-android-sources and check-docs-sync clean.
  • Device run on SM-F971N (Android 17): ThemeFontOnDeviceTest, SegmentedOnDeviceTest and ButtonOnDeviceTest together, 36/36 (failures="0" errors="0" skipped="0"). The phone was restored afterwards.

The release tag needs the owner's OK.

Owner-approved: Qooroo owns its font (Pretendard Std Variable), DDS keeps
Pretendard as the default.

DdsTheme(fontFamily = DdsSans) passes the family into the type scale, the
only place DDS sets one, so DDS components and Material text are all set in
it. Sizes, line heights and weights stay the tokens'. The default is the
same DdsSans object, so an app that passes nothing changes not one glyph.

No per-locale mapper: an app swaps the family it passes when the language
changes, which keeps the API to one parameter.

Tests: JVM — every style is DdsSans by default, a passed family reaches all
sixteen styles and Material's type, and nothing but the family changes.
Device — a DdsButton and a DdsSegmentedControl lay their labels out in the
passed family, and in DdsSans without one.
@jlc488
jlc488 merged commit c0a30e8 into main Nov 13, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant