Open-source project
npwitk/Macintosh-Skeletal-Filled avatar
npwitk/Macintosh-Skeletal-Filled

Macintosh Skeletal Filled turns Apple's hello screen into type you can use

helllllllllloooo font! Turns out it's called Macintosh Skeleton

618 stars69 forksUnknownNOASSERTION

At a glance

What is it?
macOS 27 ships a font called Macintosh Skeletal that contains only the centre line of each stroke and lets Apple's renderer thicken them live, so the font alone is unusable. This project rebuilds what that renderer draws as ordinary filled fonts, in a static and a variable cut, with the joining rules Apple's renderer applies.
Who is it for?
Adopt Macintosh Skeletal Filled if you want the macOS 27 hello screen handwriting in a document, a slide deck or a design file rather than only on the setup screen. Do not adopt it if you need the font to behave exactly like Apple's on-screen version, since the static build approximates the renderer's joins rather than reproducing them, and the variable build trades that accuracy for a weight axis.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
GitHub does not report a main language for this repository.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A system font that only holds skeleton lines

The premise of this project is a peculiarity of Apple's own typography. macOS 27 and iOS 27 ship a font called Macintosh Skeletal, used for the personalised hello you see when setting up a new Mac or iPhone. As the README explains, on its own it only contains the centre line of each stroke. Apple's renderer thickens those strokes into tubes and joins the letters live.

A font that ships as a skeleton is useless outside the renderer that draws it, and the renderer is not something a third party can call. So the project rebuilds what that renderer draws as ordinary filled fonts, with joins that follow Apple's renderer.

The scope is small and clean. The repository contains a LICENSE, a README, a fonts/ directory with the two OpenType files, and an images/ directory holding the illustrations used in the README, including the hero image, the weight axis animation, the option comparison images and a construction diagram. There are no GitHub releases, the default branch is main, the primary language is not recorded, the licence is one GitHub could not classify, and the last push was on 2026-10-14.

The audience is narrow but real: designers and anyone who has ever wanted that hello screen handwriting in a poster rather than on a setup screen.

Two files: one static, one variable

The fonts table lists what is actually shipped.

The first file is fonts/MacintoshSkeletalVariable.otf, the family Macintosh Skeletal Variable, with a variable wght axis from 100 to 900. The second is fonts/MacintoshSkeletalFilled.otf, the family Macintosh Skeletal Filled, static, at Apple's on-screen weight.

The difference between them is not a formatting decision, it is a fidelity decision, and the README is clear about the mechanism.

In the static build, strokes are merged into one clean outline per glyph, and where two strokes meet the corner is softly blended, the way Apple's renderer does it. That is the closest look to the hello screen, and it is what you want if the point is to reproduce Apple's appearance.

In the variable build, each stroke is its own round tube, overlapping the others, so junctions are a plain crease rather than a soft blend. You give up the blend and get a weight axis in return.

Both files have two options, off by default, and with both off you get Apple's design. The options are switchable on their own and for any part of your text, which is a detail that matters in practice because you may want the alternate o in one word and not the next.

One more piece of required setup: keep Contextual Alternates on, because it is on by default and every join in these fonts depends on it. An application that does not apply it draws each letter on its own, which is exactly the failure the project is trying to avoid.

The weight axis, and why Regular is 1.55 times

The weight story has a specific anchor, and it is the kind of detail that separates a faithful rebuild from an approximation.

Weight is the pen thickness. Apple's renderer draws the font's strokes at 1.55 times their stored radius, and that value is the default, labelled Regular.

The named styles run from Thin at wght 100 with 0.6 times pen thickness, through Light at 270 with 1.0 times, which is the raw font data, to the Regular at 500 with 1.55 times, described as Apple's hello screen, then Bold at 690 with 2.0 times and Black at 900 with 2.5 times. Any value in between works, and the README notes that thickness is linear in wght, so every application shows the same result.

That last point is the one that makes the variable file usable across tools. A font axis that is not linear renders differently in different rasterisers, because one application might apply gamma correction and another might not. A linear thickness means a given wght value produces the same stroke width everywhere it is supported.

So the choice is between fidelity and range. The static file is one weight, rendered the way Apple renders it. The variable file spans Thin to Black, and pays for that by drawing each stroke as a separate overlapping tube.

Crossing o and Join every letter

The two options are described separately, and both exist because Apple's own behaviour has a gap.

Crossing o restores the o from Apple's 2020 hello greetings. The bowl starts at the top, and its end curls back inside and leaves through the bowl, rising straight into the next letter. It is used before l, b, h, k and f, where the 2020 greetings use it, as in hola, olá and dobar, and every other o stays Apple's.

Join every letter is about the joins. In Apple's design some letters do not join the letter after them, and the option joins them all. It also replaces the separate Macintosh Skeletal Variable Joined font, so if you installed that earlier you can remove it in Font Book.

The mechanism behind the second option is worth understanding, because it explains the letter list. In Apple's design each join is a short separate stroke that starts beside the letter, and with the option on it sweeps out of the letter itself into the next one. Some letters do not join because the pen lifts at the end of the letter and the next one starts on its own just beside it. At Apple's weight the two only just touch, and at lighter weights you see a gap.

The letters affected are listed explicitly: Latin p, Cyrillic р, ф, б, э and ѕ, Greek ρ, β and δ, German ß, and a few others such as ɔ and ɓ. Capitals and everything else stay the same.

Switching the options on in Pages, Figma and CSS

The README gives per application instructions, and the CSS route is the one that generalises.

css
.hello {
  font-family: "Macintosh Skeletal Variable";
  font-feature-settings: "ss01" 1;   /* Crossing o */
  /* font-feature-settings: "ss02" 1;   Join every letter */
  /* font-feature-settings: "ss01" 1, "ss02" 1;   both */
}

The features are exposed as OpenType stylistic sets, ss01 for Crossing o and ss02 for Join every letter, and the commented lines show the three useful combinations.

In Pages, Keynote and TextEdit you select the text, press Command-T to open the Fonts panel, click the button at the top left of that window and choose Typography, and under Alternative Stylistic Sets you tick Crossing o and/or Join every letter. The weight, from Thin to Black, is in the font style menu of the Format sidebar.

In Figma you select the text layer, open the Type settings panel, go to Details, and switch on the same two features under Stylistic sets, with the weight slider in the same panel.

The reason an application needs a specific path rather than just a font file is that stylistic sets have to be exposed in the interface. An application that does not offer the option will render the default, which is Apple's design, and there is no way to reach the alternate forms from the file alone.

The o, the greetings, and the joins Apple never draws

The most involved part of the project is the letter o, and the README explains it in a way that shows how the work was done.

Apple's font finishes an o in two ways. Usually the pen leaves over the top into the next letter. Before e or t, and before the Cyrillic е, л, м, я, ґ and љ, it curls back past the middle in a small loop and runs into the letter at mid-height. Apple's own joining rules choose the form, and these fonts follow the same rules, so it happens automatically. The third kind, the crossing o, is the option described above.

There is a further wrinkle. The hello screen greetings are not written with Apple's font at all. Each language has its own pre-drawn path in macOS, made with Apple's internal versions of the handwriting, Macintosh Skeletal 2.0 from 2025 and Macintosh 3D 1.1 from 2020, and their o is not one Apple's font has. In the 2025 hola the join out of the o dips to mid-height and the l starts its loop there, while in the 2020 version the o is a stroke of its own whose end curls inside the bowl and leaves through it. The crossing o option brings that 2020 form back, drawn from Apple's greeting and joined with the fonts' own joins.

The joins are the other half. The README's construction notes describe the strokes: each letter's centre lines and pen radii come from the private strk table in Apple's MacintoshSkeletal.otf, drawn as uniform cubic B-splines with in-letter snapping and injection, meaning a stroke flowing into another as in the lead-in of a, d, g or q, following Apple's rules. At every join, Apple keeps each letter's own curve up to a fixed point and replaces the six control points around the boundary with three new ones, and those points were recorded from Apple's own renderer.

Which leaves one honest caveat, stated in the README: for the letters Apple never joins, the new connecting stroke is modelled on Apple's other joins rather than recorded from it, because Apple's renderer never draws those joins. For p and its Cyrillic relatives the project instead uses one-stroke forms that Apple drew and included in its font but never selects.

Editorial conclusion

Adopt Macintosh Skeletal Filled if you want the macOS 27 hello screen handwriting in a document, a slide deck or a design file rather than only on the setup screen. Do not adopt it if you need the font to behave exactly like Apple's on-screen version, since the static build approximates the renderer's joins rather than reproducing them, and the variable build trades that accuracy for a weight axis. Before you install, read the differences between the two files, and expect to keep Contextual Alternates switched on, because the joins depend on it.

Frequently asked questions

What is Macintosh Skeletal Filled?

It is a rebuild of the handwriting from Apple's macOS 27 and iOS 27 hello screen as ordinary filled fonts. The system font itself only holds the centre line of each stroke and relies on Apple's renderer to thicken and join them, so the project reproduces what that renderer draws as static and variable OpenType files.

What is the difference between the static and the variable version?

In the static Macintosh Skeletal Filled file, strokes are merged into one clean outline per glyph and meeting corners are softly blended the way Apple's renderer blends them. In the variable Macintosh Skeletal Variable file, each stroke is its own round tube overlapping the others, so junctions are a plain crease, and you get a wght axis from 100 to 900.

How do I turn on the Crossing o and Join every letter options?

In CSS, set font-feature-settings to "ss01" 1 for Crossing o and "ss02" 1 for Join every letter. In Pages, Keynote and TextEdit you enable them under Alternative Stylistic Sets in the Typography panel, and in Figma under Stylistic sets in the Type settings Details panel.

How do I install the font?

Download the .otf file you want and double-click it, then click Install in Font Book, removing any earlier build first. Design applications such as Figma may need a restart to pick up the new font, and you should keep Contextual Alternates on because the joins depend on it.

Official sources

  1. Issues
  2. npwitk/Macintosh-Skeletal-Filled on GitHub
  3. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/npwitk-macintosh-skeletal-filled.svg)](https://hysenlabs.com/projects/npwitk-macintosh-skeletal-filled)

Was this useful?