Skip to content

Typography

Synchronicity uses system fonts for optimal performance and native feel. The type scale is designed for clarity and hierarchy.

const fontFamily = {
sans: 'System', // SF Pro on iOS, Roboto on Android
serif: 'Georgia', // For contemplative, literary content
mono: 'Menlo', // For code and technical content
};

The scale follows a harmonious progression based on a 1.25 ratio.

display 48px / 700 Synchronicity

h1 32px / 700 The Creative

h2 24px / 600 Heaven Above

h3 20px / 600 Six Dragons

body-lg 17px / 500 The movement of heaven is powerful.

body 15px / 400 The superior person makes themselves strong and untiring.

body-sm 13px / 400 Nine in the second place means success.

caption 12px / 500 HEXAGRAM 1 OF 64

footnote 11px / 400 Reference: Wilhelm/Baynes translation

WeightValueUsage
regular400Body text, descriptions
medium500Emphasized body, labels
semibold600Subheadings, important UI
bold700Headlines, primary actions

Line heights are proportional to create comfortable reading:

SizeLine HeightRatio
display56px1.17
h140px1.25
h232px1.33
h328px1.40
body-lg26px1.53
body22px1.47
body-sm18px1.38
caption16px1.33
footnote14px1.27

Subtle letter spacing adjustments improve readability:

const letterSpacing = {
tight: -0.5, // Headlines
normal: 0, // Body text
wide: 0.5, // Captions, labels
wider: 1.0, // All-caps text
};

Use semantic tokens for consistent hierarchy:

TokenUsage
titlePage titles, hero text
headingSection headers
subheadingSubsection headers
bodyMain content
labelForm labels, UI text
captionSupporting info
import { useTheme } from '@synchronicity/react-native';
function HexagramTitle({ name, number }) {
const { typography } = useTheme();
return (
<View>
<Text style={{
fontSize: typography.h1.fontSize,
fontWeight: typography.h1.fontWeight,
lineHeight: typography.h1.lineHeight,
}}>
{name}
</Text>
<Text style={{
fontSize: typography.caption.fontSize,
fontWeight: typography.caption.fontWeight,
letterSpacing: typography.letterSpacing.wide,
}}>
HEXAGRAM {number}
</Text>
</View>
);
}
  1. Limit hierarchy levels - Use 2-3 heading levels per screen maximum
  2. Maintain contrast - Pair font sizes with appropriate weights
  3. Respect line length - Keep body text to 45-75 characters per line
  4. Use semantic tokens - Avoid hardcoding font sizes