Fonts

View Source

IMPORTANT: Font size CSS Custom Properties are defined as a unitless multipliers, so Components can customize scaling based on context.

Kahi UI in its default theme uses Modular Scale to produce generative font size and line height tiers used throughout the Framework.

Families

Kahi UI provides a few standard font stacks used in different places across the Framework.

<script>
    import {Stack, Text} from "@kahi-ui/framework";
</script>

<Stack.Container
    orientation="horizontal"
    spacing="medium"
    variation="wrap"
>
    <div style="max-width:25ch;">
        <Text is="strong">BLOCK</Text>

        <p
            style="font-family:var(--fonts-families-block);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit. Proin et consectetur orci.
            Curabitur a egestas turpis, vitae convallis
            sapien. Sed pellentesque rutrum tellus, in
            iaculis dolor tincidunt non. Orci varius
            natoque penatibus et magnis dis parturient
            montes, nascetur ridiculus mus.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">INLINE</Text>

        <p
            style="font-family:var(--fonts-families-inline);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit. Proin et consectetur orci.
            Curabitur a egestas turpis, vitae convallis
            sapien. Sed pellentesque rutrum tellus, in
            iaculis dolor tincidunt non. Orci varius
            natoque penatibus et magnis dis parturient
            montes, nascetur ridiculus mus.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">MONOSPACE</Text>

        <p
            style="font-family:var(--fonts-families-monospace);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit. Proin et consectetur orci.
            Curabitur a egestas turpis, vitae convallis
            sapien. Sed pellentesque rutrum tellus, in
            iaculis dolor tincidunt non. Orci varius
            natoque penatibus et magnis dis parturient
            montes, nascetur ridiculus mus.
        </p>
    </div>
</Stack.Container>

Line Heights

Kahi UI typically uses line heights, that is, spacing between lines of text, to make things easier to read or to provide extra padding.

<script>
    import {Stack, Text} from "@kahi-ui/framework";
</script>

<Stack.Container
    orientation="horizontal"
    spacing="medium"
    variation="wrap"
>
    <div style="max-width:25ch;">
        <Text is="strong">NANO</Text>

        <p
            style="line-height:calc(var(--fonts-line-heights-nano) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit. Proin et consectetur orci.
            Curabitur a egestas turpis, vitae convallis
            sapien. Sed pellentesque rutrum tellus, in
            iaculis dolor tincidunt non. Orci varius
            natoque penatibus et magnis dis parturient
            montes, nascetur ridiculus mus.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">TINY</Text>

        <p
            style="line-height:calc(var(--fonts-line-heights-tiny) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit. Proin et consectetur orci.
            Curabitur a egestas turpis, vitae convallis
            sapien. Sed pellentesque rutrum tellus, in
            iaculis dolor tincidunt non. Orci varius
            natoque penatibus et magnis dis parturient
            montes, nascetur ridiculus mus.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">SMALL</Text>

        <p
            style="line-height:calc(var(--fonts-line-heights-small) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit. Proin et consectetur orci.
            Curabitur a egestas turpis, vitae convallis
            sapien. Sed pellentesque rutrum tellus, in
            iaculis dolor tincidunt non. Orci varius
            natoque penatibus et magnis dis parturient
            montes, nascetur ridiculus mus.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">MEDIUM</Text>

        <p
            style="line-height:calc(var(--fonts-line-heights-medium) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit. Proin et consectetur orci.
            Curabitur a egestas turpis, vitae convallis
            sapien. Sed pellentesque rutrum tellus, in
            iaculis dolor tincidunt non. Orci varius
            natoque penatibus et magnis dis parturient
            montes, nascetur ridiculus mus.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">LARGE</Text>

        <p
            style="line-height:calc(var(--fonts-line-heights-large) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit. Proin et consectetur orci.
            Curabitur a egestas turpis, vitae convallis
            sapien. Sed pellentesque rutrum tellus, in
            iaculis dolor tincidunt non. Orci varius
            natoque penatibus et magnis dis parturient
            montes, nascetur ridiculus mus.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">HUGE</Text>

        <p
            style="line-height:calc(var(--fonts-line-heights-huge) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit. Proin et consectetur orci.
            Curabitur a egestas turpis, vitae convallis
            sapien. Sed pellentesque rutrum tellus, in
            iaculis dolor tincidunt non. Orci varius
            natoque penatibus et magnis dis parturient
            montes, nascetur ridiculus mus.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">MASSIVE</Text>

        <p
            style="line-height:calc(var(--fonts-line-heights-massive) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit. Proin et consectetur orci.
            Curabitur a egestas turpis, vitae convallis
            sapien. Sed pellentesque rutrum tellus, in
            iaculis dolor tincidunt non. Orci varius
            natoque penatibus et magnis dis parturient
            montes, nascetur ridiculus mus.
        </p>
    </div>
</Stack.Container>

Inline Sizes

Kahi UI typically uses inline font sizes for text that is meant to be composed inside other content. Or blocks of text that the user is meant to read.

<script>
    import {Stack, Text} from "@kahi-ui/framework";
</script>

<Stack.Container
    orientation="horizontal"
    spacing="medium"
    variation="wrap"
>
    <div style="max-width:25ch;">
        <Text is="strong">NANO</Text>

        <p
            style="font-size:calc(var(--fonts-sizes-inline-nano) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit. Proin et consectetur orci.
            Curabitur a egestas turpis, vitae convallis
            sapien. Sed pellentesque rutrum tellus, in
            iaculis dolor tincidunt non. Orci varius
            natoque penatibus et magnis dis parturient
            montes, nascetur ridiculus mus.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">TINY</Text>

        <p
            style="font-size:calc(var(--fonts-sizes-inline-tiny) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit. Proin et consectetur orci.
            Curabitur a egestas turpis, vitae convallis
            sapien. Sed pellentesque rutrum tellus, in
            iaculis dolor tincidunt non. Orci varius
            natoque penatibus et magnis dis parturient
            montes, nascetur ridiculus mus.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">SMALL</Text>

        <p
            style="font-size:calc(var(--fonts-sizes-inline-small) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit. Proin et consectetur orci.
            Curabitur a egestas turpis, vitae convallis
            sapien. Sed pellentesque rutrum tellus, in
            iaculis dolor tincidunt non. Orci varius
            natoque penatibus et magnis dis parturient
            montes, nascetur ridiculus mus.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">MEDIUM</Text>

        <p
            style="font-size:calc(var(--fonts-sizes-inline-medium) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit. Proin et consectetur orci.
            Curabitur a egestas turpis, vitae convallis
            sapien. Sed pellentesque rutrum tellus, in
            iaculis dolor tincidunt non. Orci varius
            natoque penatibus et magnis dis parturient
            montes, nascetur ridiculus mus.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">LARGE</Text>

        <p
            style="font-size:calc(var(--fonts-sizes-inline-large) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit. Proin et consectetur orci.
            Curabitur a egestas turpis, vitae convallis
            sapien. Sed pellentesque rutrum tellus, in
            iaculis dolor tincidunt non. Orci varius
            natoque penatibus et magnis dis parturient
            montes, nascetur ridiculus mus.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">HUGE</Text>

        <p
            style="font-size:calc(var(--fonts-sizes-inline-huge) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit. Proin et consectetur orci.
            Curabitur a egestas turpis, vitae convallis
            sapien. Sed pellentesque rutrum tellus, in
            iaculis dolor tincidunt non. Orci varius
            natoque penatibus et magnis dis parturient
            montes, nascetur ridiculus mus.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">MASSIVE</Text>

        <p
            style="font-size:calc(var(--fonts-sizes-inline-massive) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit. Proin et consectetur orci.
            Curabitur a egestas turpis, vitae convallis
            sapien. Sed pellentesque rutrum tellus, in
            iaculis dolor tincidunt non. Orci varius
            natoque penatibus et magnis dis parturient
            montes, nascetur ridiculus mus.
        </p>
    </div>
</Stack.Container>

Block Sizes

Kahi UI typically uses block font sizes for giant headlining text that is small in length that needs to capture the user's attention.

<script>
    import {Stack, Text} from "@kahi-ui/framework";
</script>

<Stack.Container
    orientation="horizontal"
    spacing="medium"
    variation="wrap"
>
    <div style="max-width:25ch;">
        <Text is="strong">NANO</Text>

        <p
            style="font-size:calc(var(--fonts-sizes-block-nano) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">TINY</Text>

        <p
            style="font-size:calc(var(--fonts-sizes-block-tiny) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">SMALL</Text>

        <p
            style="font-size:calc(var(--fonts-sizes-block-small) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">MEDIUM</Text>

        <p
            style="font-size:calc(var(--fonts-sizes-block-medium) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">LARGE</Text>

        <p
            style="font-size:calc(var(--fonts-sizes-block-large) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">HUGE</Text>

        <p
            style="font-size:calc(var(--fonts-sizes-block-huge) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit.
        </p>
    </div>

    <div style="max-width:25ch;">
        <Text is="strong">MASSIVE</Text>

        <p
            style="font-size:calc(var(--fonts-sizes-block-massive) * 1rem);"
        >
            Lorem ipsum dolor sit amet, consectetur
            adipiscing elit.
        </p>
    </div>
</Stack.Container>