summaryrefslogtreecommitdiff
path: root/library
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2023-01-27 12:04:23 +0100
committerLaurenz <laurmaedje@gmail.com>2023-01-27 12:04:36 +0100
commit1de53730bce0bd3f9de89db1da7c19b7889b9a75 (patch)
treee2746f4853a5a8e99f32e8c52d6e4b4f411c1933 /library
parent13efa128c855637a7fe3351a4579383359d1be1b (diff)
Symbol values and modules
Diffstat (limited to 'library')
-rw-r--r--library/Cargo.toml1
-rw-r--r--library/src/lib.rs11
-rw-r--r--library/src/math/mod.rs15
-rw-r--r--library/src/math/symbols.rs425
-rw-r--r--library/src/text/emoji.rs1355
-rw-r--r--library/src/text/mod.rs6
-rw-r--r--library/src/text/symbol.rs111
-rw-r--r--library/src/text/symbols.rs460
8 files changed, 2255 insertions, 129 deletions
diff --git a/library/Cargo.toml b/library/Cargo.toml
index b7930432..d0debe61 100644
--- a/library/Cargo.toml
+++ b/library/Cargo.toml
@@ -20,7 +20,6 @@ once_cell = "1"
roxmltree = "0.14"
rustybuzz = "0.5"
serde_json = "1"
-symmie = { git = "https://github.com/typst/symmie" }
syntect = { version = "5", default-features = false, features = ["default-syntaxes", "regex-fancy"] }
ttf-parser = "0.18.1"
typed-arena = "2"
diff --git a/library/src/lib.rs b/library/src/lib.rs
index bdb2cc90..76245b9e 100644
--- a/library/src/lib.rs
+++ b/library/src/lib.rs
@@ -17,13 +17,14 @@ use self::layout::LayoutRoot;
/// Construct the standard library.
pub fn build() -> Library {
- let math = math::module();
- let global = global(math.clone());
+ let sym = text::sym();
+ let math = math::module(&sym);
+ let global = global(sym, math.clone());
Library { global, math, styles: styles(), items: items() }
}
/// Construct the module with global definitions.
-fn global(math: Module) -> Module {
+fn global(sym: Module, math: Module) -> Module {
let mut global = Scope::deduplicating();
// Basics.
@@ -36,7 +37,6 @@ fn global(math: Module) -> Module {
// Text.
global.def_func::<text::TextNode>("text");
global.def_func::<text::LinebreakNode>("linebreak");
- global.def_func::<text::SymbolNode>("symbol");
global.def_func::<text::SmartQuoteNode>("smartquote");
global.def_func::<text::StrongNode>("strong");
global.def_func::<text::EmphNode>("emph");
@@ -49,6 +49,8 @@ fn global(math: Module) -> Module {
global.def_func::<text::StrikeNode>("strike");
global.def_func::<text::OverlineNode>("overline");
global.def_func::<text::RawNode>("raw");
+ global.define("sym", sym);
+ global.define("emoji", text::emoji());
// Math.
global.define("math", math);
@@ -169,7 +171,6 @@ fn items() -> LangItems {
text: |text| text::TextNode(text).pack(),
text_id: NodeId::of::<text::TextNode>(),
text_str: |content| Some(&content.to::<text::TextNode>()?.0),
- symbol: |notation| text::SymbolNode(notation).pack(),
smart_quote: |double| text::SmartQuoteNode { double }.pack(),
parbreak: || layout::ParbreakNode.pack(),
strong: |body| text::StrongNode(body).pack(),
diff --git a/library/src/math/mod.rs b/library/src/math/mod.rs
index cbe636b1..1e7a6580 100644
--- a/library/src/math/mod.rs
+++ b/library/src/math/mod.rs
@@ -17,6 +17,7 @@ mod script;
mod spacing;
mod stretch;
mod style;
+mod symbols;
pub use self::accent::*;
pub use self::align::*;
@@ -46,10 +47,10 @@ use crate::prelude::*;
use crate::text::LinebreakNode;
use crate::text::TextNode;
use crate::text::TextSize;
-use crate::text::{families, variant, FallbackList, FontFamily, SpaceNode, SymbolNode};
+use crate::text::{families, variant, FallbackList, FontFamily, SpaceNode};
/// Create a module with all math definitions.
-pub fn module() -> Module {
+pub fn module(sym: &Module) -> Module {
let mut math = Scope::deduplicating();
math.def_func::<FormulaNode>("formula");
math.def_func::<LrNode>("lr");
@@ -77,7 +78,9 @@ pub fn module() -> Module {
math.def_func::<MonoNode>("mono");
math.def_func::<BbNode>("bb");
spacing::define(&mut math);
+ symbols::define(&mut math);
op::define(&mut math);
+ math.copy_from(sym.scope());
Module::new("math").with_scope(math)
}
@@ -227,14 +230,6 @@ impl LayoutMath for Content {
return Ok(());
}
- if let Some(node) = self.to::<SymbolNode>() {
- if let Some(c) = symmie::get(&node.0) {
- return AtomNode(c.into()).layout_math(ctx);
- } else if let Some(span) = self.span() {
- bail!(span, "unknown symbol");
- }
- }
-
if let Some(node) = self.to::<SequenceNode>() {
for child in &node.0 {
child.layout_math(ctx)?;
diff --git a/library/src/math/symbols.rs b/library/src/math/symbols.rs
new file mode 100644
index 00000000..34330d47
--- /dev/null
+++ b/library/src/math/symbols.rs
@@ -0,0 +1,425 @@
+use typst::model::symbols;
+
+symbols! {
+ define,
+
+ // Lowercase Greek.
+ alpha: 'α',
+ beta: ['β', "alt": 'ϐ'],
+ chi: 'χ',
+ delta: 'δ',
+ epsilon: ['ε', "alt": 'ϵ'],
+ eta: 'η',
+ gamma: 'γ',
+ iota: 'ι',
+ kai: 'ϗ',
+ kappa: ['κ', "alt": 'ϰ'],
+ lambda: 'λ',
+ mu: 'μ',
+ nu: 'ν',
+ ohm: ['Ω', "inv": '℧'],
+ omega: 'ω',
+ omicron: 'ο',
+ phi: ['φ', "alt": 'ϕ'],
+ pi: ['π', "alt": 'ϖ'],
+ psi: 'ψ',
+ rho: ['ρ', "alt": 'ϱ'],
+ sigma: 'σ',
+ tau: 'τ',
+ theta: ['θ', "alt": 'ϑ'],
+ upsilon: 'υ',
+ xi: 'ξ',
+ zeta: 'ζ',
+
+ // Uppercase Greek.
+ Alpha: 'Α',
+ Beta: 'Β',
+ Chi: 'Χ',
+ Delta: 'Δ',
+ Epsilon: 'Ε',
+ Eta: 'Η',
+ Gamma: 'Γ',
+ Iota: 'Ι',
+ Kai: 'Ϗ',
+ Kappa: 'Κ',
+ Lambda: 'Λ',
+ Mu: 'Μ',
+ Nu: 'Ν',
+ Omega: 'Ω',
+ Omicron: 'Ο',
+ Phi: 'Φ',
+ Pi: 'Π',
+ Psi: 'Ψ',
+ Rho: 'Ρ',
+ Sigma: 'Σ',
+ Tau: 'Τ',
+ Theta: 'Θ',
+ Upsilon: 'Υ',
+ Xi: 'Ξ',
+ Zeta: 'Ζ',
+
+ // Hebrew.
+ alef: 'א',
+ bet: 'ב',
+ gimel: 'ג',
+ shin: 'ש',
+
+ // Double-struck.
+ AA: '𝔸',
+ BB: '𝔹',
+ CC: 'ℂ',
+ DD: '𝔻',
+ EE: '𝔼',
+ FF: '𝔽',
+ GG: '𝔾',
+ HH: 'ℍ',
+ II: '𝕀',
+ JJ: '𝕁',
+ KK: '𝕂',
+ LL: '𝕃',
+ MM: '𝕄',
+ NN: 'ℕ',
+ OO: '𝕆',
+ PP: 'ℙ',
+ QQ: 'ℚ',
+ RR: 'ℝ',
+ SS: '𝕊',
+ TT: '𝕋',
+ UU: '𝕌',
+ VV: '𝕍',
+ WW: '𝕎',
+ XX: '𝕏',
+ YY: '𝕐',
+ ZZ: 'ℤ',
+
+ // Override.
+ angled: [
+ "l": '⟨',
+ "l.double": '⟪',
+ "r": '⟩',
+ "r.double": '⟫',
+ ],
+
+ // Operators.
+ plus: [
+ '+',
+ "circle": '⊕',
+ "circle.arrow": '⟴',
+ "circle.big": '⨁',
+ "dot": '∔',
+ "minus": '±',
+ "small": '﹢',
+ "square": '⊞',
+ "triangle": '⨹',
+ ],
+ minus: [
+ '−',
+ "circle": '⊖',
+ "dot": '∸',
+ "plus": '∓',
+ "square": '⊟',
+ "tilde": '≂',
+ "triangle": '⨺',
+ ],
+ dot: [
+ '⋅',
+ "circle": '⊙',
+ "circle.big": '⨀',
+ "square": '⊡',
+ ],
+ div: [
+ '∕',
+ "circle": '⊘',
+ "sign": '÷',
+ "sign.circle": '⨸',
+ ],
+ times: [
+ '×',
+ "big": '⨉',
+ "circle": '⊗',
+ "circle.big": '⨂',
+ "div": '⋇',
+ "l": '⋋',
+ "r": '⋌',
+ "square": '⊠',
+ "triangle": '⨻',
+ ],
+ ast: [
+ '∗',
+ "circle": '⊛',
+ "small": '﹡',
+ "sq": '⧆',
+ ],
+ star: '⋆',
+ smash: '⨳',
+ wreath: '≀',
+
+ // Relations.
+ eq: [
+ '=',
+ "ast": '≛',
+ "circle": '⊜',
+ "colon": '≕',
+ "def": '≝',
+ "delta": '≜',
+ "equi": '≚',
+ "est": '≙',
+ "gt": '⋝',
+ "lt": '⋜',
+ "m": '≞',
+ "not": '≠',
+ "prec": '⋞',
+ "quest": '≟',
+ "small": '﹦',
+ "succ": '⋟',
+ ],
+ gt: [
+ '>',
+ "circle": '⧁',
+ "dot": '⋗',
+ "double": '≫',
+ "eq": '≥',
+ "eq.lt": '⋛',
+ "eq.not": '≱',
+ "eqq": '≧',
+ "lt": '≷',
+ "lt.not": '≹',
+ "neqq": '≩',
+ "not": '≯',
+ "ntilde": '⋧',
+ "small": '﹥',
+ "tilde": '≳',
+ "tilde.not": '≵',
+ "triple": '⋙',
+ "triple.nested": '⫸',
+ ],
+ lt: [
+ '<',
+ "circle": '⧀',
+ "dot": '⋖',
+ "double": '≪',
+ "eq": '≤',
+ "eq.gt": '⋚',
+ "eq.not": '≰',
+ "eqq": '≦',
+ "gt": '≶',
+ "gt.not": '≸',
+ "neqq": '≨',
+ "not": '≮',
+ "ntilde": '⋦',
+ "small": '﹤',
+ "tilde": '≲',
+ "tilde.not": '≴',
+ "triple": '⋘',
+ "triple.nested": '⫷',
+ ],
+ prec: [
+ '≺',
+ "approx": '⪷',
+ "double": '⪻',
+ "eq": '≼',
+ "eq.not": '⋠',
+ "eqq": '⪳',
+ "napprox": '⪹',
+ "neqq": '⪵',
+ "not": '⊀',
+ "ntilde": '⋨',
+ "tilde": '≾',
+ ],
+ succ: [
+ '≻',
+ "approx": '⪸',
+ "double": '⪼',
+ "eq": '≽',
+ "eq.not": '⋡',
+ "eqq": '⪴',
+ "napprox": '⪺',
+ "neqq": '⪶',
+ "not": '⊁',
+ "ntilde": '⋩',
+ "tilde": '≿',
+ ],
+ ident: ['≡', "not": '≢', "strict": '≣'],
+ approx: ['≈', "eq": '≊', "not": '≉'],
+ tilde: [
+ '∼',
+ "eq": '≃',
+ "eq.not": '≄',
+ "eq.rev": '⋍',
+ "eqq": '≅',
+ "eqq.not": '≇',
+ "neqq": '≆',
+ "not": '≁',
+ "rev": '∽',
+ "rev.eqq": '≌',
+ "triple": '≋',
+ ],
+
+ // Set theory.
+ nothing: ['∅', "rev": '⦰'],
+ in: [
+ '∈',
+ "not": '∉',
+ "rev": '∋',
+ "rev.not": '∌',
+ "rev.small": '∍',
+ "small": '∊',
+ ],
+ subset: [
+ '⊂',
+ "dot": '⪽',
+ "double": '⋐',
+ "eq": '⊆',
+ "eq.not": '⊈',
+ "eq.sq": '⊑',
+ "eq.sq.not": '⋢',
+ "neq": '⊊',
+ "not": '⊄',
+ "sq": '⊏',
+ "sq.neq": '⋤',
+ ],
+ supset: [
+ '⊃',
+ "dot": '⪾',
+ "double": '⋑',
+ "eq": '⊇',
+ "eq.not": '⊉',
+ "eq.sq": '⊒',
+ "eq.sq.not": '⋣',
+ "neq": '⊋',
+ "not": '⊅',
+ "sq": '⊐',
+ "sq.neq": '⋥',
+ ],
+ union: [
+ '∪',
+ "arrow": '⊌',
+ "big": '⋃',
+ "dot": '⊍',
+ "dot.big": '⨃',
+ "double": '⋓',
+ "minus": '⩁',
+ "or": '⩅',
+ "plus": '⊎',
+ "plus.big": '⨄',
+ "sq": '⊔',
+ "sq.big": '⨆',
+ "sq.double": '⩏',
+ ],
+ sect: [
+ '∩',
+ "and": '⩄',
+ "big": '⋂',
+ "dot": '⩀',
+ "double": '⋒',
+ "sq": '⊓',
+ "sq.big": '⨅',
+ "sq.double": '⩎',
+ ],
+ without: '∖',
+ complement: '∁',
+
+ // Relational algebra.
+ join: [
+ '⨝',
+ "r": '⟖',
+ "l": '⟕',
+ "l.r": '⟗',
+ ],
+
+ // Logic.
+ forall: '∀',
+ exists: ['∃', "not": '∄'],
+ top: '⟙',
+ bot: '⊥',
+ not: '¬',
+ and: [
+ '∧',
+ "big": '⋀',
+ "curly": '⋏',
+ "dot": '⟑',
+ "double": '⩓',
+ ],
+ or: [
+ '∨',
+ "big": '⋁',
+ "curly": '⋎',
+ "dot": '⟇',
+ "double": '⩔',
+ ],
+ models: '⊧',
+ therefore: '∴',
+ because: '∵',
+ qed: '∎',
+ tack: [
+ "r": '⊢',
+ "r.long": '⟝',
+ "l": '⊣',
+ "l.long": '⟞',
+ "l.short": '⫞',
+ "t": '⊥',
+ "t.big": '⟘',
+ "t.double": '⫫',
+ "t.short": '⫠',
+ "b": '⊤',
+ "b.big": '⟙',
+ "b.double": '⫪',
+ "b.short": '⫟',
+ "l.r": '⟛',
+ ],
+
+ // Geometry.
+ perp: ['⟂', "circle": '⦹'],
+ parallel: ['∥', "circle": '⦷', "not": '∦'],
+ angle: [
+ '∠',
+ "acute": '⦟',
+ "arc": '∡',
+ "arc.rev": '⦛',
+ "rev": '⦣',
+ "right": '∟',
+ "right.rev": '⯾',
+ "right.arc": '⊾',
+ "right.dot": '⦝',
+ "right.sq": '⦜',
+ "spatial": '⟀',
+ "spheric": '∢',
+ "spheric.rev": '⦠',
+ "spheric.top": '⦡',
+ ],
+
+ // Analysis.
+ infty: '∞',
+ sum: ['∑', "integral": '⨋'],
+ prod: ['∏', "co": '∐'],
+ integral: [
+ '∫',
+ "arrow.hook": '⨗',
+ "ccw": '⨑',
+ "cont": '∮',
+ "cont.ccw": '∳',
+ "cont.cw": '∲',
+ "cw": '∱',
+ "double": '∬',
+ "quad": '⨌',
+ "sect": '⨙',
+ "sq": '⨖',
+ "surf": '∯',
+ "times": '⨘',
+ "triple": '∭',
+ "union": '⨚',
+ "vol": '∰',
+ ],
+ prop: '∝',
+ divides: ['∣', "not": '∤'],
+
+ // Miscellaneous.
+ diff: '∂',
+ nabla: '∇',
+ kelvin: 'K',
+ micro: 'µ',
+ degree: ['°', "c": '℃', "f": '℉'],
+ planck: ['ℎ', "reduce": 'ℏ'],
+ angstrom: 'Å',
+ diameter: '⌀',
+}
diff --git a/library/src/text/emoji.rs b/library/src/text/emoji.rs
new file mode 100644
index 00000000..f38f2738
--- /dev/null
+++ b/library/src/text/emoji.rs
@@ -0,0 +1,1355 @@
+use typst::model::{symbols, Module, Scope};
+
+/// A module with all emoji.
+pub fn emoji() -> Module {
+ let mut scope = Scope::new();
+ define(&mut scope);
+ Module::new("emoji").with_scope(scope)
+}
+
+symbols! {
+ define,
+
+ abacus: '🧮',
+ abc: '🔤',
+ abcd: '🔡',
+ ABCD: '🔠',
+ accordion: '🪗',
+ aesculapius: '⚕',
+ airplane: [
+ '✈',
+ "landing": '🛬',
+ "small": '🛩',
+ "takeoff": '🛫',
+ ],
+ alembic: '⚗',
+ alien: ['👽', "monster": '👾'],
+ ambulance: '🚑',
+ amphora: '🏺',
+ anchor: '⚓',
+ anger: '💢',
+ ant: '🐜',
+ apple: ["green": '🍏', "red": '🍎'],
+ arm: ["mech": '🦾', "muscle": '💪', "selfie": '🤳'],
+ arrow: [
+ "r.filled": '➡',
+ "r.hook": '↪',
+ "r.soon": '🔜',
+ "l.filled": '⬅',
+ "l.hook": '↩',
+ "l.back": '🔙',
+ "l.end": '🔚',
+ "t.filled": '⬆',
+ "t.curve": '⤴',
+ "t.top": '🔝',
+ "b.filled": '⬇',
+ "b.curve": '⤵',
+ "l.r": '↔',
+ "l.r.on": '🔛',
+ "t.b": '↕',
+ "bl": '↙',
+ "br": '↘',
+ "tl": '↖',
+ "tr": '↗',
+ ],
+ arrows: ["cycle": '🔄'],
+ ast: ['*', "box": '✳'],
+ atm: '🏧',
+ atom: '⚛',
+ aubergine: '🍆',
+ avocado: '🥑',
+ axe: '🪓',
+ baby: ['👶', "angel": '👼', "box": '🚼'],
+ babybottle: '🍼',
+ backpack: '🎒',
+ bacon: '🥓',
+ badger: '🦡',
+ badminton: '🏸',
+ bagel: '🥯',
+ baggageclaim: '🛄',
+ baguette: '🥖',
+ balloon: '🎈',
+ ballot: ["check": '☑'],
+ ballotbox: '🗳',
+ banana: '🍌',
+ banjo: '🪕',
+ bank: '🏦',
+ barberpole: '💈',
+ baseball: '⚾',
+ basecap: '🧢',
+ basket: '🧺',
+ basketball: ['⛹', "ball": '🏀'],
+ bat: '🦇',
+ bathtub: ['🛀', "foam": '🛁'],
+ battery: ['🔋', "low": '🪫'],
+ beach: ["palm": '🏝', "umbrella": '🏖'],
+ beads: '📿',
+ beans: '🫘',
+ bear: '🐻',
+ beaver: '🦫',
+ bed: ['🛏', "person": '🛌'],
+ bee: '🐝',
+ beer: ['🍺', "clink": '🍻'],
+ beetle: ['🪲', "lady": '🐞'],
+ bell: ['🔔', "ding": '🛎', "not": '🔕'],
+ bento: '🍱',
+ bicyclist: ['🚴', "mountain": '🚵'],
+ bike: ['🚲', "not": '🚳'],
+ bikini: '👙',
+ billiards: '🎱',
+ bin: '🗑',
+ biohazard: '☣',
+ bird: '🐦',
+ bison: '🦬',
+ blood: '🩸',
+ blouse: '👚',
+ blowfish: '🐡',
+ blueberries: '🫐',
+ boar: '🐗',
+ boat: [
+ "sail": '⛵',
+ "row": '🚣',
+ "motor": '🛥',
+ "speed": '🚤',
+ "canoe": '🛶',
+ ],
+ bolt: '🔩',
+ bomb: '💣',
+ bone: '🦴',
+ book: [
+ "red": '📕',
+ "blue": '📘',
+ "green": '📗',
+ "orange": '📙',
+ "spiral": '📒',
+ "open": '📖',
+ ],
+ bookmark: '🔖',
+ books: '📚',
+ boomerang: '🪃',
+ bordercontrol: '🛂',
+ bouquet: '💐',
+ bow: '🏹',
+ bowl: ["spoon": '🥣', "steam": '🍜'],
+ bowling: '🎳',
+ boxing: '🥊',
+ boy: '👦',
+ brain: '🧠',
+ bread: '🍞',
+ brick: '🧱',
+ bride: '👰',
+ bridge: ["fog": '🌁', "night": '🌉'],
+ briefcase: '💼',
+ briefs: '🩲',
+ brightness: ["high": '🔆', "low": '🔅'],
+ broccoli: '🥦',
+ broom: '🧹',
+ brush: '🖌',
+ bubble: [
+ "speech.r": '💬',
+ "speech.l": '🗨',
+ "thought": '💭',
+ "anger.r": '🗯',
+ ],
+ bubbles: '🫧',
+ bubbletea: '🧋',
+ bucket: '🪣',
+ buffalo: ["water": '🐃'],
+ bug: '🐛',
+ builder: '👷',
+ burger: '🍔',
+ burrito: '🌯',
+ bus: [
+ '🚌',
+ "front": '🚍',
+ "small": '🚐',
+ "stop": '🚏',
+ "trolley": '🚎',
+ ],
+ butter: '🧈',
+ butterfly: '🦋',
+ button: ['🔲', "alt": '🔳', "radio": '🔘'],
+ cabinet: ["file": '🗄'],
+ cablecar: ['🚠', "small": '🚡'],
+ cactus: '🌵',
+ cake: [
+ '🎂',
+ "fish": '🍥',
+ "moon": '🥮',
+ "slice": '🍰',
+ ],
+ calendar: ['📅', "spiral": '🗓', "tearoff": '📆'],
+ camel: ['🐫', "dromedar": '🐪'],
+ camera: [
+ '📷',
+ "flash": '📸',
+ "movie": '🎥',
+ "movie.box": '🎦',
+ "video": '📹',
+ ],
+ camping: '🏕',
+ can: '🥫',
+ candle: '🕯',
+ candy: '🍬',
+ cane: '🦯',
+ car: [
+ '🚗',
+ "front": '🚘',
+ "pickup": '🛻',
+ "police": '🚓',
+ "police.front": '🚔',
+ "racing": '🏎',
+ "rickshaw": '🛺',
+ "suv": '🚙',
+ ],
+ card: ["credit": '💳', "id": '🪪'],
+ cardindex: '📇',
+ carrot: '🥕',
+ cart: '🛒',
+ cassette: '📼',
+ castle: ["eu": '🏰', "jp": '🏯'],
+ cat: [
+ '🐈',
+ "face": '🐱',
+ "face.angry": '😾',
+ "face.cry": '😿',
+ "face.heart": '😻',
+ "face.joy": '😹',
+ "face.kiss": '😽',
+ "face.laugh": '😸',
+ "face.shock": '🙀',
+ "face.smile": '😺',
+ "face.smirk": '😼',
+ ],
+ chain: '🔗',
+ chains: '⛓',
+ chair: '🪑',
+ champagne: '🍾',
+ chart: [
+ "bar": '📊',
+ "up": '📈',
+ "down": '📉',
+ "yen.up": '💹',
+ ],
+ checkmark: ["heavy": '✔', "box": '✅'],
+ cheese: '🧀',
+ cherries: '🍒',
+ chess: '♟',
+ chestnut: '🌰',
+ chicken: [
+ '🐔',
+ "baby": '🐥',
+ "baby.egg": '🐣',
+ "baby.head": '🐤',
+ "leg": '🍗',
+ "male": '🐓',
+ ],
+ child: '🧒',
+ chipmunk: '🐿',
+ chocolate: '🍫',
+ chopsticks: '🥢',
+ church: ['⛪', "love": '💒'],
+ cigarette: ['🚬', "not": '🚭'],
+ circle: [
+ "black": '⚫',
+ "blue": '🔵',
+ "brown": '🟤',
+ "green": '🟢',
+ "orange": '🟠',
+ "purple": '🟣',
+ "white": '⚪',
+ "red": '🔴',
+ "yellow": '🟡',
+ "stroked": '⭕',
+ ],
+ circus: '🎪',
+ city: [
+ '🏙',
+ "dusk": '🌆',
+ "night": '🌃',
+ "sunset": '🌇',
+ ],
+ clamp: '🗜',
+ clapperboard: '🎬',
+ climbing: '🧗',
+ clip: '📎',
+ clipboard: '📋',
+ clips: '🖇',
+ clock: [
+ "one": '🕐',
+ "one.thirty": '🕜',
+ "two": '🕑',
+ "two.thirty": '🕝',
+ "three": '🕒',
+ "three.thirty": '🕞',
+ "four": '🕓',
+ "four.thirty": '🕟',
+ "five": '🕔',
+ "five.thirty": '🕠',
+ "six": '🕕',
+ "six.thirty": '🕡',
+ "seven": '🕖',
+ "seven.thirty": '🕢',
+ "eight": '🕗',
+ "eight.thirty": '🕣',
+ "nine": '🕘',
+ "nine.thirty": '🕤',
+ "ten": '🕙',
+ "ten.thirty": '🕥',
+ "eleven": '🕚',
+ "eleven.thirty": '🕦',
+ "twelve": '🕛',
+ "twelve.thirty": '🕧',
+ "alarm": '⏰',
+ "old": '🕰',
+ "timer": '⏲',
+ ],
+ cloud: [
+ '☁',
+ "dust": '💨',
+ "rain": '🌧',
+ "snow": '🌨',
+ "storm": '⛈',
+ "sun": '⛅',
+ "sun.hidden": '🌥',
+ "sun.rain": '🌦',
+ "thunder": '🌩',
+ ],
+ coat: ['🧥', "lab": '🥼'],
+ cockroach: '🪳',
+ cocktail: ["martini": '🍸', "tropical": '🍹'],
+ coconut: '🥥',
+ coffee: '☕',
+ coffin: '⚰',
+ coin: '🪙',
+ comet: '☄',
+ compass: '🧭',
+ computer: '🖥',
+ computermouse: '🖱',
+ confetti: '🎊',
+ construction: '🚧',
+ controller: '🎮',
+ cookie: ['🍪', "fortune": '🥠'],
+ cooking: '🍳',
+ cool: '🆒',
+ copyright: '©',
+ coral: '🪸',
+ corn: '🌽',
+ couch: '🛋',
+ couple: '💑',
+ cow: ['🐄', "face": '🐮'],
+ crab: '🦀',
+ crane: '🏗',
+ crayon: '🖍',
+ cricket: '🦗',
+ cricketbat: '🏏',
+ crocodile: '🐊',
+ croissant: '🥐',
+ crossmark: ['❌', "box": '❎'],
+ crown: '👑',
+ crutch: '🩼',
+ crystal: '🔮',
+ cucumber: '🥒',
+ cup: ["straw": '🥤'],
+ cupcake: '🧁',
+ curling: '🥌',
+ curry: '🍛',
+ custard: '🍮',
+ customs: '🛃',
+ cutlery: '🍴',
+ cyclone: '🌀',
+ dancing: ["man": '🕺', "woman": '💃', "women.bunny": '👯'],
+ darts: '🎯',
+ dash: ["wave.double": '〰'],
+ deer: '🦌',
+ desert: '🏜',
+ detective: '🕵',
+ diamond: [
+ "blue": '🔷',
+ "blue.small": '🔹',
+ "orange": '🔶',
+ "orange.small": '🔸',
+ "dot": '💠',
+ ],
+ die: '🎲',
+ dino: ["pod": '🦕', "rex": '🦖'],
+ disc: ["cd": '💿', "dvd": '📀', "mini": '💽'],
+ discoball: '🪩',
+ diving: '🤿',
+ dodo: '🦤',
+ dog: [
+ '🐕',
+ "face": '🐶',
+ "guide": '🦮',
+ "poodle": '🐩',
+ ],
+ dollar: '💲',
+ dolphin: '🐬',
+ donut: '🍩',
+ door: '🚪',
+ dove: ["peace": '🕊'],
+ dragon: ['🐉', "face": '🐲'],
+ dress: ['👗', "kimono": '👘', "sari": '🥻'],
+ drop: '💧',
+ drops: '💦',
+ drum: ['🥁', "big": '🪘'],
+ duck: '🦆',
+ dumpling: '🥟',
+ eagle: '🦅',
+ ear: ['👂', "aid": '🦻'],
+ egg: '🥚',
+ eighteen: ["not": '🔞'],
+ elephant: '🐘',
+ elevator: '🛗',
+ elf: '🧝',
+ email: '📧',
+ excl: [
+ '❗',
+ "white": '❕',
+ "double": '‼',
+ "quest": '⁉',
+ ],
+ explosion: '💥',
+ extinguisher: '🧯',
+ eye: '👁',
+ eyes: '👀',
+ face: [
+ "grin": '😀',
+ "angry": '😠',
+ "angry.red": '😡',
+ "anguish": '😧',
+ "astonish": '😲',
+ "bandage": '🤕',
+ "beam": '😁',
+ "blank": '😶',
+ "clown": '🤡',
+ "cold": '🥶',
+ "concern": '😦',
+ "cool": '😎',
+ "cover": '🤭',
+ "cowboy": '🤠',
+ "cry": '😭',
+ "devil.smile": '😈',
+ "devil.frown": '👿',
+ "diagonal": '🫤',
+ "disguise": '🥸',
+ "dizzy": '😵',
+ "dotted": '🫥',
+ "down": '😞',
+ "down.sweat": '😓',
+ "drool": '🤤',
+ "explode": '🤯',
+ "eyeroll": '🙄',
+ "friendly": '☺',
+ "fear": '😨',
+ "fear.sweat": '😰',
+ "fever": '🤒',
+ "flush": '😳',
+ "frown": '☹',
+ "frown.slight": '🙁',
+ "frust": '😣',
+ "goofy": '🤪',
+ "halo": '😇',
+ "happy": '😊',
+ "heart": '😍',
+ "hearts": '🥰',
+ "heat": '🥵',
+ "hug": '🤗',
+ "inv": '🙃',
+ "joy": '😂',
+ "kiss": '😗',
+ "kiss.smile": '😙',
+ "kiss.heart": '😘',
+ "kiss.blush": '😚',
+ "lick": '😋',
+ "lie": '🤥',
+ "mask": '😷',
+ "meh": '😒',
+ "melt": '🫠',
+ "money": '🤑',
+ "monocle": '🧐',
+ "nausea": '🤢',
+ "nerd": '🤓',
+ "neutral": '😐',
+ "open": '😃',
+ "party": '🥳',
+ "peek": '🫣',
+ "plead": '🥺',
+ "relief": '😌',
+ "rofl": '🤣',
+ "sad": '😔',
+ "salute": '🫡',
+ "shock": '😱',
+ "shush": '🤫',
+ "skeptic": '🤨',
+ "sleep": '😴',
+ "sleepy": '😪',
+ "smile": '😄',
+ "smile.slight": '🙂',
+ "smile.sweat": '😅',
+ "smile.tear": '🥲',
+ "smirk": '😏',
+ "sneeze": '🤧',
+ "speak.not": '🫢',
+ "squint": '😆',
+ "stars": '🤩',
+ "straight": '😑',
+ "suffer": '😖',
+ "surprise": '😯',
+ "symbols": '🤬',
+ "tear": '😢',
+ "tear.relief": '😥',
+ "tear.withheld": '🥹',
+ "teeth": '😬',
+ "think": '🤔',
+ "tired": '😫',
+ "tongue": '😛',
+ "tongue.squint": '😝',
+ "tongue.wink": '😜',
+ "triumph": '😤',
+ "unhappy": '😕',
+ "vomit": '🤮',
+ "weary": '😩',
+ "wink": '😉',
+ "woozy": '🥴',
+ "worry": '😟',
+ "wow": '😮',
+ "yawn": '🥱',
+ "zip": '🤐',
+ ],
+ factory: '🏭',
+ fairy: '🧚',
+ faith: [
+ "christ": '✝',
+ "dharma": '☸',
+ "islam": '☪',
+ "judaism": '✡',
+ "menorah": '🕎',
+ "om": '🕉',
+ "orthodox": '☦',
+ "peace": '☮',
+ "star.dot": '🔯',
+ "worship": '🛐',
+ "yinyang": '☯',
+ ],
+ falafel: '🧆',
+ family: '👪',
+ fax: '📠',
+ feather: '🪶',
+ feeding: ["breast": '🤱'],
+ fencing: '🤺',
+ ferriswheel: '🎡',
+ filebox: '🗃',
+ filedividers: '🗂',
+ film: '🎞',
+ finger: [
+ "r": '👉',
+ "l": '👈',
+ "t": '👆',
+ "t.alt": '☝',
+ "b": '👇',
+ "front": '🫵',
+ "m": '🖕',
+ ],
+ fingers: ["cross": '🤞', "pinch": '🤌', "snap": '🫰'],
+ fire: '🔥',
+ firecracker: '🧨',
+ fireengine: '🚒',
+ fireworks: '🎆',
+ fish: ['🐟', "tropical": '🐠'],
+ fishing: '🎣',
+ fist: [
+ "front": '👊',
+ "r": '🤜',
+ "l": '🤛',
+ "raised": '✊',
+ ],
+ flag: [
+ "black": '🏴',
+ "white": '🏳',
+ "goal": '🏁',
+ "golf": '⛳',
+ "red": '🚩',
+ ],
+ flags: ["jp.crossed": '🎌'],
+ flamingo: '🦩',
+ flashlight: '🔦',
+ flatbread: '🫓',
+ fleur: '⚜',
+ floppy: '💾',
+ flower: [
+ "hibiscus": '🌺',
+ "lotus": '🪷',
+ "pink": '🌸',
+ "rose": '🌹',
+ "sun": '🌻',
+ "tulip": '🌷',
+ "white": '💮',
+ "wilted": '🥀',
+ "yellow": '🌼',
+ ],
+ fly: '🪰',
+ fog: '🌫',
+ folder: ['📁', "open": '📂'],
+ fondue: '🫕',
+ foot: '🦶',
+ football: ['⚽', "am": '🏈'],
+ forex: '💱',
+ fountain: '⛲',
+ fox: '🦊',
+ free: '🆓',
+ fries: '🍟',
+ frisbee: '🥏',
+ frog: ["face": '🐸'],
+ fuelpump: '⛽',
+ garlic: '🧄',
+ gear: '⚙',
+ gem: '💎',
+ genie: '🧞',
+ ghost: '👻',
+ giraffe: '🦒',
+ girl: '👧',
+ glass: [
+ "clink": '🥂',
+ "milk": '🥛',
+ "pour": '🫗',
+ "tumbler": '🥃',
+ ],
+ glasses: ['👓', "sun": '🕶'],
+ globe: [
+ "am": '🌎',
+ "as.au": '🌏',
+ "eu.af": '🌍',
+ "meridian": '🌐',
+ ],
+ gloves: '🧤',
+ goal: '🥅',
+ goat: '🐐',
+ goggles: '🥽',
+ golfing: '🏌',
+ gorilla: '🦍',
+ grapes: '🍇',
+ guard: ["man": '💂'],
+ guitar: '🎸',
+ gymnastics: '🤸',
+ haircut: '💇',
+ hammer: ['🔨', "pick": '⚒', "wrench": '🛠'],
+ hamsa: '🪬',
+ hamster: ["face": '🐹'],
+ hand: [
+ "raised": '✋',
+ "raised.alt": '🤚',
+ "r": '🫱',
+ "l": '🫲',
+ "t": '🫴',
+ "b": '🫳',
+ "ok": '👌',
+ "call": '🤙',
+ "love": '🤟',
+ "part": '🖖',
+ "peace": '✌',
+ "pinch": '🤏',
+ "rock": '🤘',
+ "splay": '🖐',
+ "wave": '👋',
+ "write": '✍',
+ ],
+ handbag: '👜',
+ handball: '🤾',
+ handholding: ["man.man": '👬', "woman.man": '👫', "woman.woman": '👭'],
+ hands: [
+ "folded": '🙏',
+ "palms": '🤲',
+ "clap": '👏',
+ "heart": '🫶',
+ "open": '👐',
+ "raised": '🙌',
+ "shake": '🤝',
+ ],
+ hash: '#',
+ hat: ["ribbon": '👒', "top": '🎩'],
+ headphone: '🎧',
+ heart: [
+ '❤',
+ "arrow": '💘',
+ "beat": '💓',
+ "black": '🖤',
+ "blue": '💙',
+ "box": '💟',
+ "broken": '💔',
+ "brown": '🤎',
+ "double": '💕',
+ "excl": '❣',
+ "green": '💚',
+ "grow": '💗',
+ "orange": '🧡',
+ "purple": '💜',
+ "real": '🫀',
+ "revolve": '💞',
+ "ribbon": '💝',
+ "spark": '💖',
+ "white": '🤍',
+ "yellow": '💛',
+ ],
+ hedgehog: '🦔',
+ helicopter: '🚁',
+ helix: '🧬',
+ helmet: ["cross": '⛑', "military": '🪖'],
+ hippo: '🦛',
+ hockey: '🏑',
+ hole: '🕳',
+ honey: '🍯',
+ hongbao: '🧧',
+ hook: '🪝',
+ horn: ["postal": '📯'],
+ horse: [
+ '🐎',
+ "carousel": '🎠',
+ "face": '🐴',
+ "race": '🏇',
+ ],
+ hospital: '🏥',
+ hotdog: '🌭',
+ hotel: ['🏨', "love": '🏩'],
+ hotspring: '♨',
+ hourglass: ['⌛', "flow": '⏳'],
+ house: [
+ '🏠',
+ "derelict": '🏚',
+ "garden": '🏡',
+ "multiple": '🏘',
+ ],
+ hundred: '💯',
+ hut: '🛖',
+ ice: '🧊',
+ icecream: ['🍨', "shaved": '🍧', "soft": '🍦'],
+ icehockey: '🏒',
+ id: '🆔',
+ info: 'ℹ',
+ izakaya: '🏮',
+ jar: '🫙',
+ jeans: '👖',
+ jigsaw: '🧩',
+ joystick: '🕹',
+ juggling: '🤹',
+ juice: '🧃',
+ kaaba: '🕋',
+ kadomatsu: '🎍',
+ kangaroo: '🦘',
+ gachi: '🈷',
+ go: '🈴',
+ hi: '㊙',
+ ka: '🉑',
+ kachi: '🈹',
+ kara: '🈳',
+ kon: '🈲',
+ man: '🈵',
+ muryo: '🈚',
+ shin: '🈸',
+ shuku: '㊗',
+ toku: '🉐',
+ yo: '🈺',
+ yubi: '🈯',
+ yuryo: '🈶',
+ koko: '🈁',
+ sa: '🈂',
+ kebab: '🥙',
+ key: ['🔑', "old": '🗝'],
+ keyboard: '⌨',
+ kiss: '💏',
+ kissmark: '💋',
+ kite: '🪁',
+ kiwi: '🥝',
+ knife: ['🔪', "dagger": '🗡'],
+ knot: '🪢',
+ koala: '🐨',
+ koinobori: '🎏',
+ label: '🏷',
+ lacrosse: '🥍',
+ ladder: '🪜',
+ lamp: ["diya": '🪔'],
+ laptop: '💻',
+ a: '🅰',
+ ab: '🆎',
+ b: '🅱',
+ cl: '🆑',
+ o: '🅾',
+ leaf: [
+ "clover.three": '☘',
+ "clover.four": '🍀',
+ "fall": '🍂',
+ "herb": '🌿',
+ "maple": '🍁',
+ "wind": '🍃',
+ ],
+ leftluggage: '🛅',
+ leg: ['🦵', "mech": '🦿'],
+ lemon: '🍋',
+ leopard: '🐆',
+ letter: ["love": '💌'],
+ liberty: '🗽',
+ lightbulb: '💡',
+ lightning: '⚡',
+ lion: '🦁',
+ lipstick: '💄',
+ litter: ['🚮', "not": '🚯'],
+ lizard: '🦎',
+ llama: '🦙',
+ lobster: '🦞',
+ lock: [
+ '🔒',
+ "key": '🔐',
+ "open": '🔓',
+ "pen": '🔏',
+ ],
+ lollipop: '🍭',
+ lotion: '🧴',
+ luggage: '🧳',
+ lungs: '🫁',
+ mage: '🧙',
+ magnet: '🧲',
+ magnify: ["r": '🔎', "l": '🔍'],
+ mahjong: ["dragon.red": '🀄'],
+ mail: ['✉', "arrow": '📩'],
+ mailbox: [
+ "closed.empty": '📪',
+ "closed.full": '📫',
+ "open.empty": '📭',
+ "open.full": '📬',
+ ],
+ mammoth: '🦣',
+ man: [
+ '👨',
+ "box": '🚹',
+ "crown": '🤴',
+ "guapimao": '👲',
+ "levitate": '🕴',
+ "old": '👴',
+ "pregnant": '🫃',
+ "turban": '👳',
+ "tuxedo": '🤵',
+ ],
+ mango: '🥭',
+ map: ["world": '🗺', "jp": '🗾'],
+ martialarts: '🥋',
+ masks: '🎭',
+ mate: '🧉',
+ matryoshka: '🪆',
+ meat: ['🥩', "bone": '🍖'],
+ medal: [
+ "first": '🥇',
+ "second": '🥈',
+ "third": '🥉',
+ "sports": '🏅',
+ "military": '🎖',
+ ],
+ megaphone: ['📢', "simple": '📣'],
+ melon: '🍈',
+ merperson: '🧜',
+ metro: 'Ⓜ',
+ microbe: '🦠',
+ microphone: ['🎤', "studio": '🎙'],
+ microscope: '🔬',
+ milkyway: '🌌',
+ mirror: '🪞',
+ mixer: '🎛',
+ money: [
+ "bag": '💰',
+ "dollar": '💵',
+ "euro": '💶',
+ "pound": '💷',
+ "yen": '💴',
+ "wings": '💸',
+ ],
+ monkey: [
+ '🐒',
+ "face": '🐵',
+ "hear.not": '🙉',
+ "see.not": '🙈',
+ "speak.not": '🙊',
+ ],
+ moon: [
+ "crescent": '🌙',
+ "full": '🌕',
+ "full.face": '🌝',
+ "new": '🌑',
+ "new.face": '🌚',
+ "wane.one": '🌖',
+ "wane.two": '🌗',
+ "wane.three.face": '🌜',
+ "wane.three": '🌘',
+ "wax.one": '🌒',
+ "wax.two": '🌓',
+ "wax.two.face": '🌛',
+ "wax.three": '🌔',
+ ],
+ mortarboard: '🎓',
+ mosque: '🕌',
+ mosquito: '🦟',
+ motorcycle: '🏍',
+ motorway: '🛣',
+ mountain: [
+ '⛰',
+ "fuji": '🗻',
+ "snow": '🏔',
+ "sunrise": '🌄',
+ ],
+ mouse: ['🐁', "face": '🐭'],
+ mousetrap: '🪤',
+ mouth: ['👄', "bite": '🫦'],
+ moyai: '🗿',
+ museum: '🏛',
+ mushroom: '🍄',
+ musicalscore: '🎼',
+ nails: ["polish": '💅'],
+ namebadge: '📛',
+ nazar: '🧿',
+ necktie: '👔',
+ needle: '🪡',
+ nest: ["empty": '🪹', "eggs": '🪺'],
+ new: '🆕',
+ newspaper: ['📰', "rolled": '🗞'],
+ ng: '🆖',
+ ningyo: '🎎',
+ ninja: '🥷',
+ noentry: '⛔',
+ nose: '👃',
+ notebook: ['📓', "deco": '📔'],
+ notepad: '🗒',
+ notes: ['🎵', "triple": '🎶'],
+ numbers: '🔢',
+ octopus: '🐙',
+ office: '🏢',
+ oil: '🛢',
+ ok: '🆗',
+ olive: '🫒',
+ oni: '👹',
+ onion: '🧅',
+ orangutan: '🦧',
+ otter: '🦦',
+ owl: '🦉',
+ ox: '🐂',
+ oyster: '🦪',
+ package: '📦',
+ paella: '🥘',
+ page: ['📄', "curl": '📃', "pencil": '📝'],
+ pager: '📟',
+ pages: ["tabs": '📑'],
+ painting: '🖼',
+ palette: '🎨',
+ pancakes: '🥞',
+ panda: '🐼',
+ parachute: '🪂',
+ park: '🏞',
+ parking: '🅿',
+ parrot: '🦜',
+ partalteration: '〽',
+ party: '🎉',
+ peach: '🍑',
+ peacock: '🦚',
+ peanuts: '🥜',
+ pear: '🍐',
+ pedestrian: ['🚶', "not": '🚷'],
+ pen: ["ball": '🖊', "fountain": '🖋'],
+ pencil: '✏',
+ penguin: '🐧',
+ pepper: ['🫑', "hot": '🌶'],
+ person: [
+ '🧑',
+ "angry": '🙎',
+ "beard": '🧔',
+ "blonde": '👱',
+ "bow": '🙇',
+ "crown": '🫅',
+ "deaf": '🧏',
+ "facepalm": '🤦',
+ "frown": '🙍',
+ "hijab": '🧕',
+ "kneel": '🧎',
+ "lotus": '🧘',
+ "massage": '💆',
+ "no": '🙅',
+ "ok": '🙆',
+ "old": '🧓',
+ "pregnant": '🫄',
+ "raise": '🙋',
+ "sassy": '💁',
+ "shrug": '🤷',
+ "stand": '🧍',
+ "steam": '🧖',
+ ],
+ petri: '🧫',
+ phone: [
+ '📱',
+ "arrow": '📲',
+ "classic": '☎',
+ "not": '📵',
+ "off": '📴',
+ "receiver": '📞',
+ "signal": '📶',
+ "vibrate": '📳',
+ ],
+ piano: '🎹',
+ pick: '⛏',
+ pie: '🥧',
+ pig: ['🐖', "face": '🐷', "node": '🐽'],
+ pill: '💊',
+ pin: ['📌', "round": '📍'],
+ pinata: '🪅',
+ pineapple: '🍍',
+ pingpong: '🏓',
+ pistol: '🔫',
+ pizza: '🍕',
+ placard: '🪧',
+ planet: '🪐',
+ plant: '🪴',
+ plaster: '🩹',
+ plate: ["cutlery": '🍽'],
+ playback: [
+ "down": '⏬',
+ "eject": '⏏',
+ "forward": '⏩',
+ "pause": '⏸',
+ "record": '⏺',
+ "repeat": '🔁',
+ "repeat.once": '🔂',
+ "repeat.v": '🔃',
+ "restart": '⏮',
+ "rewind": '⏪',
+ "shuffle": '🔀',
+ "skip": '⏭',
+ "stop": '⏹',
+ "toggle": '⏯',
+ "up": '⏫',
+ ],
+ playingcard: ["flower": '🎴', "joker": '🃏'],
+ plunger: '🪠',
+ policeofficer: '👮',
+ poo: '💩',
+ popcorn: '🍿',
+ post: ["eu": '🏤', "jp": '🏣'],
+ postbox: '📮',
+ potato: ['🥔', "sweet": '🍠'],
+ pouch: '👝',
+ powerplug: '🔌',
+ present: '🎁',
+ pretzel: '🥨',
+ printer: '🖨',
+ prints: ["foot": '👣', "paw": '🐾'],
+ prohibited: '🚫',
+ projector: '📽',
+ pumpkin: ["lantern": '🎃'],
+ purse: '👛',
+ quest: ['❓', "white": '❔'],
+ rabbit: ['🐇', "face": '🐰'],
+ raccoon: '🦝',
+ radio: '📻',
+ radioactive: '☢',
+ railway: '🛤',
+ rainbow: '🌈',
+ ram: '🐏',
+ rat: '🐀',
+ razor: '🪒',
+ receipt: '🧾',
+ recycling: '♻',
+ reg: '®',
+ restroom: '🚻',
+ rhino: '🦏',
+ ribbon: ['🎀', "remind": '🎗'],
+ rice: [
+ '🍚',
+ "cracker": '🍘',
+ "ear": '🌾',
+ "onigiri": '🍙',
+ ],
+ ring: '💍',
+ ringbuoy: '🛟',
+ robot: '🤖',
+ rock: '🪨',
+ rocket: '🚀',
+ rollercoaster: '🎢',
+ rosette: '🏵',
+ rugby: '🏉',
+ ruler: ['📏', "triangle": '📐'],
+ running: '🏃',
+ safetypin: '🧷',
+ safetyvest: '🦺',
+ sake: '🍶',
+ salad: '🥗',
+ salt: '🧂',
+ sandwich: '🥪',
+ santa: ["man": '🎅', "woman": '🤶'],
+ satdish: '📡',
+ satellite: '🛰',
+ saw: '🪚',
+ saxophone: '🎷',
+ scales: '⚖',
+ scarf: '🧣',
+ school: '🏫',
+ scissors: '✂',
+ scooter: ['🛴', "motor": '🛵'],
+ scorpion: '🦂',
+ screwdriver: '🪛',
+ scroll: '📜',
+ seal: '🦭',
+ seat: '💺',
+ seedling: '🌱',
+ shark: '🦈',
+ sheep: '🐑',
+ shell: ["spiral": '🐚'],
+ shield: '🛡',
+ ship: ['🚢', "cruise": '🛳', "ferry": '⛴'],
+ shirt: ["sports": '🎽', "t": '👕'],
+ shoe: [
+ '👞',
+ "ballet": '🩰',
+ "flat": '🥿',
+ "heel": '👠',
+ "hike": '🥾',
+ "ice": '⛸',
+ "roller": '🛼',
+ "sandal.heel": '👡',
+ "ski": '🎿',
+ "sneaker": '👟',
+ "tall": '👢',
+ "thong": '🩴',
+ ],
+ shopping: '🛍',
+ shorts: '🩳',
+ shoshinsha: '🔰',
+ shower: '🚿',
+ shrimp: ['🦐', "fried": '🍤'],
+ shrine: '⛩',
+ sign: ["crossing": '🚸', "stop": '🛑'],
+ silhouette: [
+ '👤',
+ "double": '👥',
+ "hug": '🫂',
+ "speak": '🗣',
+ ],
+ siren: '🚨',
+ skateboard: '🛹',
+ skewer: ["dango": '🍡', "oden": '🍢'],
+ skiing: '⛷',
+ skull: ['💀', "bones": '☠'],
+ skunk: '🦨',
+ sled: '🛷',
+ slide: '🛝',
+ slider: '🎚',
+ sloth: '🦥',
+ slots: '🎰',
+ snail: '🐌',
+ snake: '🐍',
+ snowboarding: '🏂',
+ snowflake: '❄',
+ snowman: ['⛄', "snow": '☃'],
+ soap: '🧼',
+ socks: '🧦',
+ softball: '🥎',
+ sos: '🆘',
+ soup: '🍲',
+ spaghetti: '🍝',
+ sparkle: ["box": '❇'],
+ sparkler: '🎇',
+ sparkles: '✨',
+ speaker: [
+ '🔈',
+ "not": '🔇',
+ "wave": '🔉',
+ "waves": '🔊',
+ ],
+ spider: '🕷',
+ spiderweb: '🕸',
+ spinach: '🥬',
+ sponge: '🧽',
+ spoon: '🥄',
+ square: [
+ "black": '⬛',
+ "black.tiny": '▪',
+ "black.small": '◾',
+ "black.medium": '◼',
+ "white": '⬜',
+ "white.tiny": '▫',
+ "white.small": '◽',
+ "white.medium": '◻',
+ "blue": '🟦',
+ "brown": '🟫',
+ "green": '🟩',
+ "orange": '🟧',
+ "purple": '🟪',
+ "red": '🟥',
+ "yellow": '🟨',
+ ],
+ squid: '🦑',
+ stadium: '🏟',
+ star: [
+ '⭐',
+ "arc": '💫',
+ "box": '✴',
+ "glow": '🌟',
+ "shoot": '🌠',
+ ],
+ stethoscope: '🩺',
+ store: ["big": '🏬', "small": '🏪'],
+ strawberry: '🍓',
+ suit: [
+ "club": '♣',
+ "diamond": '♦',
+ "heart": '♥',
+ "spade": '♠',
+ ],
+ sun: ['☀', "cloud": '🌤', "face": '🌞'],
+ sunrise: '🌅',
+ superhero: '🦸',
+ supervillain: '🦹',
+ surfing: '🏄',
+ sushi: '🍣',
+ swan: '🦢',
+ swimming: '🏊',
+ swimsuit: '🩱',
+ swords: '⚔',
+ symbols: '🔣',
+ synagogue: '🕍',
+ syringe: '💉',
+ taco: '🌮',
+ takeout: '🥡',
+ tamale: '🫔',
+ tanabata: '🎋',
+ tangerine: '🍊',
+ tap: ['🚰', "not": '🚱'],
+ taxi: ['🚕', "front": '🚖'],
+ teacup: '🍵',
+ teapot: '🫖',
+ teddy: '🧸',
+ telescope: '🔭',
+ temple: '🛕',
+ ten: '🔟',
+ tengu: '👺',
+ tennis: '🎾',
+ tent: '⛺',
+ testtube: '🧪',
+ thermometer: '🌡',
+ thread: '🧵',
+ thumb: ["up": '👍', "down": '👎'],
+ ticket: ["event": '🎟', "travel": '🎫'],
+ tiger: ['🐅', "face": '🐯'],
+ tm: '™',
+ toilet: '🚽',
+ toiletpaper: '🧻',
+ tomato: '🍅',
+ tombstone: '🪦',
+ tongue: '👅',
+ toolbox: '🧰',
+ tooth: '🦷',
+ toothbrush: '🪥',
+ tornado: '🌪',
+ tower: ["tokyo": '🗼'],
+ trackball: '🖲',
+ tractor: '🚜',
+ trafficlight: ["v": '🚦', "h": '🚥'],
+ train: [
+ '🚆',
+ "car": '🚃',
+ "light": '🚈',
+ "metro": '🚇',
+ "mono": '🚝',
+ "mountain": '🚞',
+ "speed": '🚄',
+ "speed.bullet": '🚅',
+ "steam": '🚂',
+ "stop": '🚉',
+ "suspend": '🚟',
+ "tram": '🚊',
+ "tram.car": '🚋',
+ ],
+ transgender: '⚧',
+ tray: ["inbox": '📥', "mail": '📨', "outbox": '📤'],
+ tree: [
+ "deciduous": '🌳',
+ "evergreen": '🌲',
+ "palm": '🌴',
+ "xmas": '🎄',
+ ],
+ triangle: [
+ "r": '▶',
+ "l": '◀',
+ "t": '🔼',
+ "b": '🔽',
+ "t.red": '🔺',
+ "b.red": '🔻',
+ ],
+ trident: '🔱',
+ troll: '🧌',
+ trophy: '🏆',
+ truck: ['🚚', "trailer": '🚛'],
+ trumpet: '🎺',
+ tsukimi: '🎑',
+ turkey: '🦃',
+ turtle: '🐢',
+ tv: '📺',
+ ufo: '🛸',
+ umbrella: [
+ "open": '☂',
+ "closed": '🌂',
+ "rain": '☔',
+ "sun": '⛱',
+ ],
+ unicorn: '🦄',
+ unknown: '🦳',
+ up: '🆙',
+ urn: '⚱',
+ vampire: '🧛',
+ violin: '🎻',
+ volcano: '🌋',
+ volleyball: '🏐',
+ vs: '🆚',
+ waffle: '🧇',
+ wand: '🪄',
+ warning: '⚠',
+ watch: ['⌚', "stop": '⏱'],
+ watermelon: '🍉',
+ waterpolo: '🤽',
+ wave: '🌊',
+ wc: '🚾',
+ weightlifting: '🏋',
+ whale: ['🐋', "spout": '🐳'],
+ wheel: '🛞',
+ wheelchair: ['🦽', "box": '♿', "motor": '🦼'],
+ wind: '🌬',
+ windchime: '🎐',
+ window: '🪟',
+ wine: '🍷',
+ wolf: '🐺',
+ woman: [
+ '👩',
+ "box": '🚺',
+ "crown": '👸',
+ "old": '👵',
+ "pregnant": '🤰',
+ ],
+ wood: '🪵',
+ worm: '🪱',
+ wrench: '🔧',
+ wrestling: '🤼',
+ xray: '🩻',
+ yarn: '🧶',
+ yoyo: '🪀',
+ zebra: '🦓',
+ zodiac: [
+ "aquarius": '♒',
+ "aries": '♈',
+ "cancer": '♋',
+ "capri": '♑',
+ "gemini": '♊',
+ "leo": '♌',
+ "libra": '♎',
+ "ophi": '⛎',
+ "pisces": '♓',
+ "sagit": '♐',
+ "scorpio": '♏',
+ "taurus": '♉',
+ "virgo": '♍',
+ ],
+ zombie: '🧟',
+ zzz: '💤',
+}
diff --git a/library/src/text/mod.rs b/library/src/text/mod.rs
index 3424cce6..85e58ecd 100644
--- a/library/src/text/mod.rs
+++ b/library/src/text/mod.rs
@@ -1,20 +1,22 @@
//! Text handling.
mod deco;
+mod emoji;
mod misc;
mod quotes;
mod raw;
mod shaping;
mod shift;
-mod symbol;
+mod symbols;
pub use self::deco::*;
+pub use self::emoji::*;
pub use self::misc::*;
pub use self::quotes::*;
pub use self::raw::*;
pub use self::shaping::*;
pub use self::shift::*;
-pub use self::symbol::*;
+pub use self::symbols::*;
use std::borrow::Cow;
diff --git a/library/src/text/symbol.rs b/library/src/text/symbol.rs
deleted file mode 100644
index 4a7c8ad3..00000000
--- a/library/src/text/symbol.rs
+++ /dev/null
@@ -1,111 +0,0 @@
-use crate::prelude::*;
-use crate::text::TextNode;
-
-/// # Symbol
-/// A symbol identified by symmie notation.
-///
-/// Symmie is Typst's notation for Unicode symbols. It is based on the idea of
-/// _modifiers._ Many symbols in Unicode are very similar. In symmie, such
-/// groups of symbols share a common name. To distinguish between the symbols
-/// within a group, we use one or multiple modifiers that are separated from the
-/// name by colons.
-///
-/// There is currently no easily viewable list of all names, but in the
-/// meantime you can rely on the autocompletion in Typst's web editor.
-///
-/// ## Syntax
-/// This function also has dedicated syntax: In markup, you can enclose symmie
-/// notation within colons to produce a symbol. And in math, you can just write
-/// the notation directly. There, all letter sequence of length at least two are
-/// automatically parsed as symbols (unless a variable of that name is defined).
-///
-/// Additionally, some very common but hard to type symbols can be expressed with
-/// dedicated shortcuts. These are:
-///
-/// | Symmie | Shorthand | Result |
-/// | ----------- | --------- | ------ |
-/// | `dots:b` | `...` | … |
-/// | `dash:en` | `---` | – |
-/// | `dash:em` | `--` | — |
-/// | none yet | `-?` | A soft hyphen |
-/// | none yet | `~` | A non breaking space |
-///
-/// Within math mode, additional shorthands are available:
-///
-/// | Symmie | Shorthand | Result |
-/// | ------------------ | --------- | ------ |
-/// | `arrow:r` | `->` | `→` |
-/// | `arrow:r:double` | `=>` | `⇒` |
-/// | `arrow:l` | `<-` | `←` |
-/// | `arrow:r:bar` | <code>&VerticalLine;-></code> | `↦` |
-/// | `arrow:l:r` | `<->` | `↔` |
-/// | `arrow:l:r:double` | `<=>` | `⇔` |
-/// | `eq:not` | `!=` | `≠` |
-/// | `eq:gt` | `>=` | `≥` |
-/// | `eq:lt` | `<=` | `≤` |
-/// | `colon:eq` | `:=` | `≔` |
-///
-/// ## Example
-/// ```
-/// // In text, with colons.
-/// :arrow:l: \
-/// :arrow:r: \
-/// :arrow:t: \
-/// :turtle: \
-/// :face:halo: \
-/// :woman:old:
-///
-/// // In math, directly.
-/// $f : NN -> RR$ \
-/// $A sub:eq B without C$ \
-/// $a times:div b eq:not c$
-/// ```
-///
-/// ## Parameters
-/// - notation: EcoString (positional, required)
-/// The symbol's symmie notation.
-///
-/// Consists of a name, followed by a number colon-separated modifiers
-/// in no particular order.
-///
-/// ### Example
-/// ```
-/// #symbol("NN") \
-/// #symbol("face:grin")
-/// ```
-///
-/// ## Category
-/// text
-#[func]
-#[capable(Show)]
-#[derive(Debug, Hash)]
-pub struct SymbolNode(pub EcoString);
-
-#[node]
-impl SymbolNode {
- fn construct(_: &Vm, args: &mut Args) -> SourceResult<Content> {
- Ok(Self(args.expect("notation")?).pack())
- }
-
- fn field(&self, name: &str) -> Option<Value> {
- match name {
- "notation" => Some(Value::Str(self.0.clone().into())),
- _ => None,
- }
- }
-}
-
-impl Show for SymbolNode {
- fn show(&self, _: &mut Vt, this: &Content, _: StyleChain) -> SourceResult<Content> {
- match symmie::get(&self.0) {
- Some(c) => Ok(TextNode::packed(c)),
- None => {
- if let Some(span) = this.span() {
- bail!(span, "unknown symbol");
- }
-
- Ok(Content::empty())
- }
- }
- }
-}
diff --git a/library/src/text/symbols.rs b/library/src/text/symbols.rs
new file mode 100644
index 00000000..36e49849
--- /dev/null
+++ b/library/src/text/symbols.rs
@@ -0,0 +1,460 @@
+use typst::model::{symbols, Module, Scope};
+
+/// A module with all symbols.
+pub fn sym() -> Module {
+ let mut scope = Scope::new();
+ define(&mut scope);
+ Module::new("sym").with_scope(scope)
+}
+
+symbols! {
+ define,
+
+ // Space and control.
+ space: [
+ ' ',
+ "em": '\u{2003}',
+ "en": '\u{2002}',
+ "fig": '\u{2007}',
+ "hair": '\u{200A}',
+ "ideo": '\u{3000}',
+ "nobreak": '\u{A0}',
+ "punct": '\u{2008}',
+ "quarter": '\u{2005}',
+ "sixth": '\u{2006}',
+ "thin": '\u{2009}',
+ "third": '\u{2004}',
+ ],
+ wj: '\u{2060}',
+ zwj: '\u{200D}',
+ zwnj: '\u{200C}',
+ zws: '\u{200B}',
+
+ // Punctuation.
+ dot: ['.', "c": '·'],
+ dots: [
+ "h": '…',
+ "h.c": '⋯',
+ "v": '⋮',
+ "down": '⋱',
+ "up": '⋰',
+ ],
+ colon: [
+ ':',
+ "eq": '≔',
+ "double.eq": '⩴',
+ ],
+ comma: ',',
+ semi: [';', "rev": '⁏'],
+ quest: ['?', "double": '⁇', "excl": '⁈', "inv": '¿'],
+ excl: ['!', "double": '‼', "inv": '¡', "quest": '⁉'],
+ interrobang: '‽',
+ hash: '#',
+ at: '@',
+ section: '§',
+ percent: '%',
+ permille: '‰',
+ co: '℅',
+ pilcrow: ['¶', "rev": '⁋'],
+ dagger: ['†', "double": '‡'],
+ slash: ['/', "double": '⫽', "triple": '⫻'],
+ backslash: ['\\', "circle": '⦸', "not": '⧷'],
+ ast: ['*', "low": '⁎', "double": '⁑', "triple": '⁂'],
+ amp: ['&', "inv": '⅋'],
+ dash: [
+ "en": '–',
+ "em": '—',
+ "fig": '‒',
+ "wave": '〜',
+ "colon": '∹',
+ "circle": '⊝',
+ "wave.double": '〰',
+ ],
+ hyph: [
+ '‐',
+ "minus": '\u{2D}',
+ "nobreak": '\u{2011}',
+ "point": '‧',
+ "soft": '\u{ad}',
+ ],
+ prime: [
+ '′',
+ "rev": '‵',
+ "double": '″',
+ "double.rev": '‶',
+ "triple": '‴',
+ "triple.rev": '‷',
+ "quad": '⁗',
+ ],
+ quote: [
+ "double": '"',
+ "single": '\'',
+ "l.double": '“',
+ "l.single": '‘',
+ "r.double": '”',
+ "r.single": '’',
+ "angle.l.double": '«',
+ "angle.l.single": '‹',
+ "angle.r.double": '»',
+ "angle.r.single": '›',
+ "high.double": '‟',
+ "high.single": '‛',
+ "low.double": '„',
+ "low.single": '‚',
+ ],
+
+ // Delimiters.
+ paren: [
+ "l": '(',
+ "r": ')',
+ "t": '⏜',
+ "b": '⏝',
+ ],
+ bracket: [
+ "l": '[',
+ "r": ']',
+ "t": '⎴',
+ "b": '⎵',
+ ],
+ brace: [
+ "l": '{',
+ "r": '}',
+ "t": '⏞',
+ "b": '⏟',
+ ],
+ turtle: [
+ "l": '〔',
+ "r": '〕',
+ "t": '⏠',
+ "b": '⏡',
+ ],
+ angled: ["l": '〈', "r": '〉'],
+ bar: [
+ "v": '|',
+ "v.double": '‖',
+ "v.triple": '⦀',
+ "v.broken": '¦',
+ "v.circle": '⦶',
+ "h": '―',
+ ],
+ fence: [
+ "l": '⧘',
+ "l.double": '⧚',
+ "r": '⧙',
+ "r.double": '⧛',
+ "dotted": '⦙',
+ ],
+
+ // Accents.
+ acute: ['´', "double": '˝'],
+ breve: '˘',
+ caret: '‸',
+ caron: 'ˇ',
+ cedilla: '¸',
+ circum: '^',
+ diaer: '¨',
+ grave: '`',
+ macron: '¯',
+ tilde: '~',
+ overline: '‾',
+
+ // Currency.
+ bitcoin: '₿',
+ dollar: '$',
+ euro: '€',
+ franc: '₣',
+ lira: '₺',
+ peso: '₱',
+ pound: '£',
+ ruble: '₽',
+ rupee: '₹',
+ won: '₩',
+ yen: '¥',
+
+ // Miscellaneous.
+ ballot: ['☐', "x": '☒'],
+ checkmark: ['✓', "light": '🗸'],
+ copyright: ['©', "sound": '℗'],
+ floral: ['❦', "l": '☙', "r": '❧'],
+ notes: ["up": '🎜', "down": '🎝'],
+ refmark: '※',
+ servicemark: '℠',
+ maltese: '✠',
+ suit: [
+ "club": '♣',
+ "diamond": '♦',
+ "heart": '♥',
+ "spade": '♠',
+ ],
+
+ // Shapes.
+ circle: [
+ "stroked": '○',
+ "stroked.tiny": '∘',
+ "stroked.small": '⚬',
+ "stroked.big": '◯',
+ "filled": '●',
+ "filled.tiny": '⦁',
+ "filled.small": '∙',
+ "filled.big": '⬤',
+ "dotted": '◌',
+ "nested": '⊚',
+ ],
+ square: [
+ "stroked": '□',
+ "stroked.tiny": '▫',
+ "stroked.small": '◽',
+ "stroked.medium": '◻',
+ "stroked.big": '⬜',
+ "stroked.dotted": '⬚',
+ "stroked.rounded": '▢',
+ "filled": '■',
+ "filled.tiny": '▪',
+ "filled.small": '◾',
+ "filled.medium": '◼',
+ "filled.big": '⬛',
+ ],
+ ellipse: [
+ "stroked.h": '⬭',
+ "stroked.v": '⬯',
+ "filled.h": '⬬',
+ "filled.v": '⬮',
+ ],
+ rect: [
+ "stroked.h": '▭',
+ "stroked.v": '▯',
+ "filled.h": '▬',
+ "filled.v": '▮',
+ ],
+ triangle: [
+ "stroked.r": '▷',
+ "stroked.l": '◁',
+ "stroked.t": '△',
+ "stroked.b": '▽',
+ "stroked.bl": '◺',
+ "stroked.br": '◿',
+ "stroked.tl": '◸',
+ "stroked.tr": '◹',
+ "stroked.small.r": '▹',
+ "stroked.small.b": '▿',
+ "stroked.small.l": '◃',
+ "stroked.small.t": '▵',
+ "stroked.rounded": '🛆',
+ "stroked.nested": '⟁',
+ "stroked.dot": '◬',
+ "filled.r": '▶',
+ "filled.l": '◀',
+ "filled.t": '▲',
+ "filled.b": '▼',
+ "filled.bl": '◣',
+ "filled.br": '◢',
+ "filled.tl": '◤',
+ "filled.tr": '◥',
+ "filled.small.r": '▸',
+ "filled.small.b": '▾',
+ "filled.small.l": '◂',
+ "filled.small.t": '▴',
+ ],
+ diamond: [
+ "stroked": '◇',
+ "stroked.small": '⋄',
+ "stroked.medium": '⬦',
+ "stroked.dot": '⟐',
+ "filled": '◆',
+ "filled.medium": '⬥',
+ "filled.small": '⬩',
+ ],
+ lozenge: [
+ "stroked": '◊',
+ "stroked.small": '⬫',
+ "stroked.medium": '⬨',
+ "filled": '⧫',
+ "filled.small": '⬪',
+ "filled.medium": '⬧',
+ ],
+ penta: ["stroked": '⬠', "filled": '⬟'],
+ hexa: ["stroked": '⬡', "filled": '⬢'],
+
+ // Arrows and harpoons.
+ arrow: [
+ "r": '→',
+ "r.long.bar": '⟼',
+ "r.bar": '↦',
+ "r.curve": '⤷',
+ "r.dashed": '⇢',
+ "r.dotted": '⤑',
+ "r.double": '⇒',
+ "r.double.bar": '⤇',
+ "r.double.long": '⟹',
+ "r.double.long.bar": '⟾',
+ "r.double.not": '⇏',
+ "r.filled": '➡',
+ "r.hook": '↪',
+ "r.long": '⟶',
+ "r.long.squiggly": '⟿',
+ "r.loop": '↬',
+ "r.not": '↛',
+ "r.quad": '⭆',
+ "r.squiggly": '⇝',
+ "r.stop": '⇥',
+ "r.stroked": '⇨',
+ "r.tail": '↣',
+ "r.triple": '⇛',
+ "r.twohead.bar": '⤅',
+ "r.twohead": '↠',
+ "r.wave": '↝',
+ "l": '←',
+ "l.bar": '↤',
+ "l.curve": '⤶',
+ "l.dashed": '⇠',
+ "l.dotted": '⬸',
+ "l.double": '⇐',
+ "l.double.bar": '⤆',
+ "l.double.long": '⟸',
+ "l.double.long.bar": '⟽',
+ "l.double.not": '⇍',
+ "l.filled": '⬅',
+ "l.hook": '↩',
+ "l.long": '⟵',
+ "l.long.bar": '⟻',
+ "l.long.squiggly": '⬳',
+ "l.loop": '↫',
+ "l.not": '↚',
+ "l.quad": '⭅',
+ "l.squiggly": '⇜',
+ "l.stop": '⇤',
+ "l.stroked": '⇦',
+ "l.tail": '↢',
+ "l.triple": '⇚',
+ "l.twohead.bar": '⬶',
+ "l.twohead": '↞',
+ "l.wave": '↜',
+ "t": '↑',
+ "t.bar": '↥',
+ "t.curve": '⤴',
+ "t.dashed": '⇡',
+ "t.double": '⇑',
+ "t.filled": '⬆',
+ "t.quad": '⟰',
+ "t.stop": '⤒',
+ "t.stroked": '⇧',
+ "t.triple": '⤊',
+ "t.twohead": '↟',
+ "b": '↓',
+ "b.bar": '↧',
+ "b.curve": '⤵',
+ "b.dashed": '⇣',
+ "b.double": '⇓',
+ "b.filled": '⬇',
+ "b.quad": '⟱',
+ "b.stop": '⤓',
+ "b.stroked": '⇩',
+ "b.triple": '⤋',
+ "b.twohead": '↡',
+ "l.r": '↔',
+ "l.r.double": '⇔',
+ "l.r.double.long": '⟺',
+ "l.r.double.not": '⇎',
+ "l.r.filled": '⬌',
+ "l.r.long": '⟷',
+ "l.r.not": '↮',
+ "l.r.stroked": '⬄',
+ "l.r.wave": '↭',
+ "t.b": '↕',
+ "t.b.double": '⇕',
+ "t.b.filled": '⬍',
+ "t.b.stroked": '⇳',
+ "tr": '↗',
+ "tr.double": '⇗',
+ "tr.filled": '⬈',
+ "tr.hook": '⤤',
+ "tr.stroked": '⬀',
+ "br": '↘',
+ "br.double": '⇘',
+ "br.filled": '⬊',
+ "br.hook": '⤥',
+ "br.stroked": '⬂',
+ "tl": '↖',
+ "tl.double": '⇖',
+ "tl.filled": '⬉',
+ "tl.hook": '⤣',
+ "tl.stroked": '⬁',
+ "bl": '↙',
+ "bl.double": '⇙',
+ "bl.filled": '⬋',
+ "bl.hook": '⤦',
+ "bl.stroked": '⬃',
+ "tl.br": '⤡',
+ "tr.bl": '⤢',
+ "ccw": '↺',
+ "ccw.half": '↶',
+ "cw": '↻',
+ "cw.half": '↷',
+ "zigzag": '↯',
+ ],
+ arrows: [
+ "rr": '⇉',
+ "ll": '⇇',
+ "tt": '⇈',
+ "bb": '⇊',
+ "lr": '⇆',
+ "lr.stop": '↹',
+ "rl": '⇄',
+ "tb": '⇅',
+ "bt": '⇵',
+ "rrr": '⇶',
+ "lll": '⬱',
+ ],
+ arrowhead: [
+ "t": '⌃',
+ "b": '⌄',
+ ],
+ harpoon: [
+ "rt": '⇀',
+ "rt.bar": '⥛',
+ "rt.stop": '⥓',
+ "rb": '⇁',
+ "rb.bar": '⥟',
+ "rb.stop": '⥗',
+ "lt": '↼',
+ "lt.bar": '⥚',
+ "lt.stop": '⥒',
+ "lb": '↽',
+ "lb.bar": '⥞',
+ "lb.stop": '⥖',
+ "tl": '↿',
+ "tl.bar": '⥠',
+ "tl.stop": '⥘',
+ "tr": '↾',
+ "tr.bar": '⥜',
+ "tr.stop": '⥔',
+ "bl": '⇃',
+ "bl.bar": '⥡',
+ "bl.stop": '⥙',
+ "br": '⇂',
+ "br.bar": '⥝',
+ "br.stop": '⥕',
+ "lt.rt": '⥎',
+ "lb.rb": '⥐',
+ "lb.rt": '⥋',
+ "lt.rb": '⥊',
+ "tl.bl": '⥑',
+ "tr.br": '⥏',
+ "tl.br": '⥍',
+ "tr.bl": '⥌',
+ ],
+ harpoons: [
+ "rtrb": '⥤',
+ "blbr": '⥥',
+ "bltr": '⥯',
+ "lbrb": '⥧',
+ "ltlb": '⥢',
+ "ltrb": '⇋',
+ "ltrt": '⥦',
+ "rblb": '⥩',
+ "rtlb": '⇌',
+ "rtlt": '⥨',
+ "tlbr": '⥮',
+ "tltr": '⥣',
+ ],
+}