open-standards/aac/aac-rs/tools/symbols/people.toml
Transaction Science 4f54a8cae0
All checks were successful
standards workspaces build + test / jouleclaw-rs (push) Successful in 2m58s
standards workspaces build + test / aac-rs (push) Successful in 1m3s
standards workspaces build + test / joule-code-rs (push) Successful in 1m9s
standards workspaces build + test / joulecontract-rs (push) Successful in 31s
standards workspaces build + test / map-rs (push) Successful in 33s
standards workspaces build + test / mesh-rs (push) Successful in 32s
standards workspaces build + test / openpay (push) Successful in 1m56s
no-vanity-metrics / Scan committed Markdown for vanity metrics (push) Successful in 3s
standards workspaces build + test / eoc-rs (push) Successful in 1m49s
standards workspaces build + test / jcp-rs (push) Successful in 1m18s
standards workspaces build + test / proof-rs (push) Successful in 1m13s
standards workspaces build + test / sandbox-rs (push) Successful in 2m8s
standards workspaces build + test / smart-byte-rs (push) Successful in 2m35s
standards workspaces build + test / arl-rs (push) Successful in 2m25s
standards workspaces build + test / joule-ui-rs (push) Successful in 2m45s
standards workspaces build + test / jouledesk-rs (push) Successful in 2m16s
standards workspaces build + test / joulehook-rs (push) Successful in 2m53s
standards workspaces build + test / sense-rs (push) Successful in 3m9s
standards workspaces build + test / macOS energy backend (jcp-energy) (push) Successful in 2m46s
feat(symbols): people drawn in no one's skin, gender or age by default
Pictograms must be international in how they show gender, ethnicity and
age. Following Unicode's emoji model (UTS #51):

- Skin. Every person in Mulberry and OpenMoji is drawn in a generic,
  non-realistic colour -- UTS #51's own example, #FFCC22 (OpenMoji's
  lemon would melt into Mulberry's lemon hair, clothes and objects) --
  or in the skin tone the person chooses: one of the five modifiers
  U+1F3FB-U+1F3FF, in OpenMoji's colours (aac_core:🔣:SkinTone).
  The build writes skin as the CSS custom property --aac-skin (OpenMoji's
  skin shadow as --aac-skin-shade) over a neutral fill, so a renderer
  without the style still draws a person neutral, never black.
  - Mulberry: its authors' aac-skin-fill markers where present; for the
    rest, a reviewed decision per symbol in people.toml (a cake's icing
    and a computer case share the skin colour). The build stops on a
    missing or stale decision.
  - OpenMoji: its skin layers, checked element by element against its
    own toned variants.
  A visual audit of all 397 mapped symbols with the skin colour shown as
  magenta, and an adversarial second look, confirmed every call;
  people-review.md lists every symbol that draws a person and how.
- Gender and age. Where Mulberry drew a man's face or a child for a word
  that names neither (the feelings, Speak, eat, drink, doctor, teacher,
  police, hi...), OpenMoji's emoji face (no gender, age or skin) or
  Unicode's gender-neutral person is used instead; police wears a cap
  worn worldwide, not a British helmet.
- Hair keeps its colour whatever the tone.
- App: Settings > Symbols > People in pictures, and the same choice in
  setup; kept with the symbol set and applied on the app root.
- SPEC 4.3 (proposed): people in symbols.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-30 08:35:11 -04:00

70 lines
2.9 KiB
TOML

# People in Mulberry symbols: which are drawn in the skin tone the person chooses.
#
# Mulberry draws skin in one colour, #ffeec8. Its authors mark the skin with
# class="aac-skin-fill" in some symbols; build.py tones those exactly and they
# need no entry here. Every other mapped symbol that uses #ffeec8 needs a
# decision, checked on a contact sheet with that colour shown as magenta
# (the build stops on a symbol without one):
#
# tone = true every #ffeec8 area is skin: drawn in the chosen tone
# tone = false some #ffeec8 area is not skin: kept as drawn (reason says what)
#
# Keys are Mulberry symbol names (file names without .svg).
# OpenMoji needs no list: its own skin-tone variants say which colours change.
[mulberry]
"birthday_cake" = { tone = false, reason = "the cake's icing is drawn in the skin colour" }
"bring_,_to" = { tone = true }
"build_,_to" = { tone = true }
"carry_,_to" = { tone = true }
"catch_,_to" = { tone = true }
"climb_up_,_to" = { tone = true }
"close_,_to" = { tone = true }
"come_,_to" = { tone = true }
"computer_1" = { tone = false, reason = "the computer's case is drawn in the skin colour" }
"cut_,_to" = { tone = true }
"dance_,_to" = { tone = true }
"draw_,_to" = { tone = true }
"drive_,_to" = { tone = true }
"find_,_to" = { tone = true }
"get_,_to" = { tone = true }
"give_,_to" = { tone = true }
"go_,_to" = { tone = true }
"hang_,_to" = { tone = true }
"hat_-_mans" = { tone = false, reason = "the hat band is drawn in the skin colour" }
"help_,_to" = { tone = true }
"hold_,_to" = { tone = true }
"hug_,_to" = { tone = true }
"keep_,_to" = { tone = true }
"look_,_to" = { tone = true }
"make_,_to" = { tone = true }
"move_,_to" = { tone = true }
"open_,_to" = { tone = true }
"paper" = { tone = false, reason = "the sheets of paper are drawn in the skin colour" }
"pencil" = { tone = false, reason = "the pencil's wood is drawn in the skin colour" }
"play_,_to" = { tone = true }
"pull_,_to" = { tone = true }
"push_,_to" = { tone = true }
"put_,_to" = { tone = true }
"read_,_to" = { tone = true }
"rest_,_to" = { tone = true }
"ride_car_,_to" = { tone = true }
"school" = { tone = false, reason = "the school's walls are drawn in the skin colour" }
"shoe_-_mans" = { tone = false, reason = "the shoe's lining is drawn in the skin colour" }
"show_me_,_to" = { tone = true }
"sit_,_to" = { tone = true }
"sleep_male_,_to" = { tone = true }
"stand_,_to" = { tone = true }
"take_,_to" = { tone = true }
"telephone_2_,_to" = { tone = true }
"touch_,_to" = { tone = true }
"toys" = { tone = true, reason = "every area in the skin colour is a doll's skin (two of its peg dolls are already brown and stay so)" }
"turn_,_to" = { tone = true }
"verbs_collective" = { tone = true }
"visit_,_to" = { tone = true }
"wait_,_to" = { tone = true }
"wake_up_,_to" = { tone = true }
"walk_,_to" = { tone = true }
"want_,_to" = { tone = true }
"watch_,_to" = { tone = true }
"write_,_to" = { tone = true }