Shift is the logo, Guru is the icon, SchCotie is the mascot, and the difference
between them is not stylistic. An icon works once, at one size, in one state. A
mascot has to be able to *do* things -- confused, pleased, asleep, seen from
behind -- which is why it costs more and is drawn last. Written down because
this is exactly the kind of decision that gets re-derived badly.
Assets/ becomes docs/branding/, which also fixes two things:
* Filenames had spaces in them, so every reference needed quoting. They are
lowercase and hyphenated now.
* Assets/ held hand-written SVG and generated PNG in one directory, which is
the one rule docs/guides/layout.md states.
The guide records what was previously only in people's heads:
* The constraint everything answers to -- include/logo.h is a 128x128
single-channel coverage mask, so a mark has to survive as a solid shape in
one colour and be recognisable at 24 px. Colour is the last decision, never
the first.
* Guru's purple is load-bearing. PSOGM_BG #4B1D9A is deliberately not the
accent #7C5CFF, and theme.h's rule is that the full-bleed purple belongs
entirely to failure. If Guru appears in accent violet on a sticker, the deep
purple stops meaning "the machine stopped" -- and it is the only colour in
the system that means anything.
* Why shift-mask.svg is a separate file from shift.svg. mklogo.py reads ink as
(255 - luminance) * alpha, so tones survive as coverage and the relationship
inverts: darkest here is brightest on screen. Copying the violet fills would
light the object from below.
* Why a raster is committed beside its SVG. inkscape is not a build
prerequisite, so requiring a vector rasteriser would break the build on most
hosts for a file that changes about once a year.
* That the BSD daemon is copyrighted and SchCotie must be drawn from the
concept rather than from Beastie. A daemon is a Greek daimon and a Unix
background process; neither is ownable. The pitchfork, the sneakers and that
face are.
Format rule: SVG, or PNG at high resolution with no lossy compression, nothing
else. SVG is the source of truth for every mark and a raster is generated from
it, never edited.
include/logo.h regenerates byte-identical from the new path -- only the source
comment differs. The two old wordmark SVGs were deleted outside this session and
are left deleted; their PNGs are kept as superseded-*.png for reference.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VQ7Qx8E1q1M1bbCq8QLHS2
29 lines
1.5 KiB
XML
29 lines
1.5 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="200" height="200">
|
|
<title>SchOS — Shift, as an ink mask</title>
|
|
<desc>SAME GEOMETRY AS "shift.svg". Only the fills differ, and they are
|
|
greys because they are not colours: tools/python/mklogo.py reads ink as
|
|
(255 - luminance) * alpha, so what is stored is coverage. The kernel then
|
|
composites that coverage in whatever include/theme.h says the accent is.
|
|
|
|
The greys run DARK AT THE TOP because the relationship inverts: darkest here
|
|
is most ink, which the kernel draws brightest. Copying the violet fills from
|
|
the colour mark would light the object from below.
|
|
|
|
Two files with one geometry is a thing that can drift. If either is edited,
|
|
edit both -- or replace this pair with one file and regenerate the other.</desc>
|
|
|
|
<!-- bottom slab: least ink, so the kernel draws it dimmest -->
|
|
<path fill="#6E6E6E" d="M54 126 L158 126 L128 156 L24 156 Z"/>
|
|
<path fill="#888888" d="M24 156 L128 156 L128 167 L24 167 Z"/>
|
|
<path fill="#949494" d="M158 126 L158 137 L128 167 L128 156 Z"/>
|
|
|
|
<!-- middle -->
|
|
<path fill="#3A3A3A" d="M72 84 L176 84 L146 114 L42 114 Z"/>
|
|
<path fill="#5C5C5C" d="M42 114 L146 114 L146 125 L42 125 Z"/>
|
|
<path fill="#6A6A6A" d="M176 84 L176 95 L146 125 L146 114 Z"/>
|
|
|
|
<!-- top slab: most ink, so the kernel draws it brightest -->
|
|
<path fill="#0B0B0B" d="M90 42 L194 42 L164 72 L60 72 Z"/>
|
|
<path fill="#2A2A2A" d="M60 72 L164 72 L164 83 L60 83 Z"/>
|
|
<path fill="#3A3A3A" d="M194 42 L194 53 L164 83 L164 72 Z"/>
|
|
</svg>
|