TTF / OTF fonts
Status
| Field | Value |
|---|---|
| Extension(s) | .ttf, .otf |
| Common ecosystem | Static font assets |
| Format family | Artwork/font asset |
| Satin Studio status | Available now |
| Open / import | Yes |
| Export | No |
| Confidence | High; implemented as project font assets. |
What it is
TTF and OTF files are font binaries used for deterministic text outlines. They are not embroidery machine files.
Satin Studio direction
Satin Studio stores uploaded fonts with the project so text objects can compile from exact font outlines.
Versions and variants
This entry is tracked as a format lead, but Satin Studio does not yet have a public version or dialect matrix for it. Real sample files with machine/software provenance are needed before support can be planned safely.
File identification notes
Static TrueType/OpenType font binaries.
Observed structure notes
- TTF and OTF are SFNT containers with a big-endian offset table and per-table records.
- Common table tags relevant to embroidery text include
cmapfor character mapping,glyf/locaorCFFfor outlines,head/hhea/hmtxfor metrics,namefor names,GSUBfor substitutions, andGPOSfor positioning. - Font parsing gives outlines and shaping facts. It does not choose stitch type, density, underlay, or pull compensation.
- All multi-byte integers in SFNT directory tables are big-endian. Table checksums and offsets are validated before reading table payloads.
- TrueType outlines use
glyfplusloca; CFF-flavored OpenType usesCFForCFF2data instead. Both require shaping before Satin Studio can place glyph outlines correctly.
Structure sketch
TTF and OTF are SFNT-family font containers. Satin Studio uses them as project assets, not as embroidery files.
struct SfntFont<'a> {
offset_table: SfntOffsetTable,
table_records: &'a [SfntTableRecord],
table_data: &'a [u8],
}
struct SfntOffsetTable {
sfnt_version: [u8; 4], // 0x00010000 for TTF, "OTTO" for CFF OTF
num_tables: u16, // big-endian on disk
search_range: u16,
entry_selector: u16,
range_shift: u16,
}
struct SfntTableRecord {
tag: [u8; 4],
checksum: u32,
offset: u32,
length: u32,
}
What we still need
More font-family UX and expanded text stitch planning.