magick-components 0.0.0-stage → 0.1.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/LICENSE.txt +89 -0
  2. package/README.md +353 -2
  3. package/fonts/FrankRuhlLibre-Bold-letters.woff2 +0 -0
  4. package/fonts/FrankRuhlLibre-OFL.txt +105 -0
  5. package/fonts/NotoSerif-BoldItalic-compass.woff2 +0 -0
  6. package/fonts/NotoSerif-Italic-latin1.woff2 +0 -0
  7. package/fonts/NotoSerif-OFL.txt +93 -0
  8. package/fonts/SOURCES.md +35 -0
  9. package/fonts/gd-hall.css +3 -0
  10. package/lib/astrology/Kamea.d.ts +75 -0
  11. package/lib/astrology/Kamea.js +73 -0
  12. package/lib/astrology/MercuryWidget.d.ts +21 -0
  13. package/lib/astrology/MercuryWidget.js +80 -0
  14. package/lib/astrology/Moon.d.ts +32 -0
  15. package/lib/astrology/Moon.js +39 -0
  16. package/lib/astrology/MoonWidget.d.ts +20 -0
  17. package/lib/astrology/MoonWidget.js +63 -0
  18. package/lib/astrology/PlanetarySpirit.d.ts +103 -0
  19. package/lib/astrology/PlanetarySpirit.js +102 -0
  20. package/lib/astrology/mercuryRetrograde.d.ts +20 -0
  21. package/lib/astrology/mercuryRetrograde.js +80 -0
  22. package/lib/astrology/moonPath.d.ts +20 -0
  23. package/lib/astrology/moonPath.js +45 -0
  24. package/lib/chakras/Chakras.d.ts +34 -0
  25. package/lib/chakras/Chakras.js +149 -0
  26. package/lib/cssString.d.ts +5 -0
  27. package/lib/cssString.js +7 -0
  28. package/lib/drawingVersions.d.ts +29 -0
  29. package/lib/drawingVersions.js +15 -0
  30. package/lib/enochian/Tablet.d.ts +17 -0
  31. package/lib/enochian/Tablet.js +24 -0
  32. package/lib/enochian/tabletSigils.d.ts +46 -0
  33. package/lib/enochian/tabletSigils.js +172 -0
  34. package/lib/enochian/tabletSvg.d.ts +85 -0
  35. package/lib/enochian/tabletSvg.js +278 -0
  36. package/lib/gd/FylfotCross.d.ts +60 -0
  37. package/lib/gd/FylfotCross.js +121 -0
  38. package/lib/gd/GradeTree.d.ts +10 -0
  39. package/lib/gd/GradeTree.js +21 -0
  40. package/lib/gd/Lamen.d.ts +31 -0
  41. package/lib/gd/Lamen.js +317 -0
  42. package/lib/gd/RoseSigil.d.ts +31 -0
  43. package/lib/gd/RoseSigil.js +49 -0
  44. package/lib/gd/RoseSigilImage.d.ts +38 -0
  45. package/lib/gd/RoseSigilImage.js +29 -0
  46. package/lib/gd/SevenBranchedCandlestick.d.ts +54 -0
  47. package/lib/gd/SevenBranchedCandlestick.js +269 -0
  48. package/lib/gd/TableOfShewbread.d.ts +19 -0
  49. package/lib/gd/TableOfShewbread.js +120 -0
  50. package/lib/gd/hall/GdHall.d.ts +94 -0
  51. package/lib/gd/hall/GdHall.js +147 -0
  52. package/lib/gd/hall/art/altar.d.ts +8 -0
  53. package/lib/gd/hall/art/altar.js +21 -0
  54. package/lib/gd/hall/art/altarItems.d.ts +20 -0
  55. package/lib/gd/hall/art/altarItems.js +113 -0
  56. package/lib/gd/hall/art/banner.d.ts +23 -0
  57. package/lib/gd/hall/art/banner.js +64 -0
  58. package/lib/gd/hall/art/board.d.ts +9 -0
  59. package/lib/gd/hall/art/board.js +49 -0
  60. package/lib/gd/hall/art/cards.d.ts +11 -0
  61. package/lib/gd/hall/art/cards.js +124 -0
  62. package/lib/gd/hall/art/furnishings.d.ts +12 -0
  63. package/lib/gd/hall/art/furnishings.js +36 -0
  64. package/lib/gd/hall/art/geometry.d.ts +49 -0
  65. package/lib/gd/hall/art/geometry.js +97 -0
  66. package/lib/gd/hall/art/hebrewLetter.d.ts +10 -0
  67. package/lib/gd/hall/art/hebrewLetter.js +38 -0
  68. package/lib/gd/hall/art/index.d.ts +7 -0
  69. package/lib/gd/hall/art/index.js +61 -0
  70. package/lib/gd/hall/art/items.d.ts +12 -0
  71. package/lib/gd/hall/art/items.js +125 -0
  72. package/lib/gd/hall/art/kamea.d.ts +20 -0
  73. package/lib/gd/hall/art/kamea.js +64 -0
  74. package/lib/gd/hall/art/lamen.d.ts +9 -0
  75. package/lib/gd/hall/art/lamen.js +52 -0
  76. package/lib/gd/hall/art/lightning.d.ts +13 -0
  77. package/lib/gd/hall/art/lightning.js +44 -0
  78. package/lib/gd/hall/art/lights.d.ts +13 -0
  79. package/lib/gd/hall/art/lights.js +64 -0
  80. package/lib/gd/hall/art/marker.d.ts +8 -0
  81. package/lib/gd/hall/art/marker.js +19 -0
  82. package/lib/gd/hall/art/pantacle.d.ts +10 -0
  83. package/lib/gd/hall/art/pantacle.js +119 -0
  84. package/lib/gd/hall/art/pillar.d.ts +4 -0
  85. package/lib/gd/hall/art/pillar.js +25 -0
  86. package/lib/gd/hall/art/placeholder.d.ts +8 -0
  87. package/lib/gd/hall/art/placeholder.js +18 -0
  88. package/lib/gd/hall/art/platform.d.ts +13 -0
  89. package/lib/gd/hall/art/platform.js +28 -0
  90. package/lib/gd/hall/art/seals.d.ts +23 -0
  91. package/lib/gd/hall/art/seals.js +151 -0
  92. package/lib/gd/hall/art/shared.d.ts +87 -0
  93. package/lib/gd/hall/art/shared.js +95 -0
  94. package/lib/gd/hall/art/symbols.d.ts +37 -0
  95. package/lib/gd/hall/art/symbols.js +134 -0
  96. package/lib/gd/hall/art/tarotKey.d.ts +34 -0
  97. package/lib/gd/hall/art/tarotKey.js +101 -0
  98. package/lib/gd/hall/art/veil.d.ts +8 -0
  99. package/lib/gd/hall/art/veil.js +22 -0
  100. package/lib/gd/hall/art/vessels.d.ts +19 -0
  101. package/lib/gd/hall/art/vessels.js +74 -0
  102. package/lib/gd/hall/aspect.d.ts +31 -0
  103. package/lib/gd/hall/aspect.js +161 -0
  104. package/lib/gd/hall/attributes.d.ts +52 -0
  105. package/lib/gd/hall/attributes.js +116 -0
  106. package/lib/gd/hall/describe.d.ts +38 -0
  107. package/lib/gd/hall/describe.js +184 -0
  108. package/lib/gd/hall/dimensions.d.ts +39 -0
  109. package/lib/gd/hall/dimensions.js +49 -0
  110. package/lib/gd/hall/editor.d.ts +13 -0
  111. package/lib/gd/hall/editor.js +13 -0
  112. package/lib/gd/hall/fontMetrics.json +177 -0
  113. package/lib/gd/hall/fonts.d.ts +45 -0
  114. package/lib/gd/hall/fonts.js +73 -0
  115. package/lib/gd/hall/hebrewLetters.d.ts +8 -0
  116. package/lib/gd/hall/hebrewLetters.js +40 -0
  117. package/lib/gd/hall/index.d.ts +19 -0
  118. package/lib/gd/hall/index.js +17 -0
  119. package/lib/gd/hall/labels.d.ts +72 -0
  120. package/lib/gd/hall/labels.js +109 -0
  121. package/lib/gd/hall/layout.d.ts +213 -0
  122. package/lib/gd/hall/layout.js +837 -0
  123. package/lib/gd/hall/planets.d.ts +13 -0
  124. package/lib/gd/hall/planets.js +35 -0
  125. package/lib/gd/hall/presets/index.d.ts +13 -0
  126. package/lib/gd/hall/presets/index.js +29 -0
  127. package/lib/gd/hall/presets/neophyte.d.ts +7 -0
  128. package/lib/gd/hall/presets/neophyte.js +74 -0
  129. package/lib/gd/hall/presets/philosophus.d.ts +30 -0
  130. package/lib/gd/hall/presets/philosophus.js +244 -0
  131. package/lib/gd/hall/presets/portal.d.ts +24 -0
  132. package/lib/gd/hall/presets/portal.js +241 -0
  133. package/lib/gd/hall/presets/practicus.d.ts +17 -0
  134. package/lib/gd/hall/presets/practicus.js +181 -0
  135. package/lib/gd/hall/presets/theoricus.d.ts +13 -0
  136. package/lib/gd/hall/presets/theoricus.js +178 -0
  137. package/lib/gd/hall/presets/types.d.ts +72 -0
  138. package/lib/gd/hall/presets/types.js +58 -0
  139. package/lib/gd/hall/presets/zelator.d.ts +12 -0
  140. package/lib/gd/hall/presets/zelator.js +161 -0
  141. package/lib/gd/hall/spec.d.ts +54 -0
  142. package/lib/gd/hall/spec.js +108 -0
  143. package/lib/gd/hall/types.d.ts +131 -0
  144. package/lib/gd/hall/types.js +1 -0
  145. package/lib/gd/hall/validate.d.ts +13 -0
  146. package/lib/gd/hall/validate.js +285 -0
  147. package/lib/gd/hall/vocabulary.d.ts +139 -0
  148. package/lib/gd/hall/vocabulary.js +435 -0
  149. package/lib/gd/lamenGlyphs.d.ts +16 -0
  150. package/lib/gd/lamenGlyphs.js +167 -0
  151. package/lib/gd/lamenGrades.d.ts +29 -0
  152. package/lib/gd/lamenGrades.js +36 -0
  153. package/lib/gd/roseSigilGeometry.d.ts +10 -0
  154. package/lib/gd/roseSigilGeometry.js +10 -0
  155. package/lib/gd/roseSigilInternals.d.ts +85 -0
  156. package/lib/gd/roseSigilInternals.js +343 -0
  157. package/lib/gd/roseSigilOptimizer.d.ts +15 -0
  158. package/lib/gd/roseSigilOptimizer.js +59 -0
  159. package/lib/gd/roseSigilVersions.d.ts +12 -0
  160. package/lib/gd/roseSigilVersions.js +57 -0
  161. package/lib/hooks/useHydrated.d.ts +9 -0
  162. package/lib/hooks/useHydrated.js +13 -0
  163. package/lib/kabbalah/TreeOfLife.d.ts +135 -0
  164. package/lib/kabbalah/TreeOfLife.js +312 -0
  165. package/lib/kabbalah/fieldPath.d.ts +25 -0
  166. package/lib/kabbalah/fieldPath.js +100 -0
  167. package/lib/kabbalah/treeLabels.d.ts +30 -0
  168. package/lib/kabbalah/treeLabels.js +32 -0
  169. package/lib/kabbalah/treeOfLifeFigure.d.ts +59 -0
  170. package/lib/kabbalah/treeOfLifeFigure.js +151 -0
  171. package/lib/svgCoordinate.d.ts +12 -0
  172. package/lib/svgCoordinate.js +16 -0
  173. package/package.json +162 -3
package/LICENSE.txt ADDED
@@ -0,0 +1,89 @@
1
+ magick-components is under three licences, by path. The repository it
2
+ comes from is AGPL-3.0-or-later (see ../../LICENSE.txt); this package is
3
+ not.
4
+
5
+ Code: MIT, below.
6
+ Everything but fonts/: the components, src/**/*.ts and src/**/*.tsx, and
7
+ the modules compiled from them into lib/, which the published package
8
+ carries. A component whose code is the drawing (the sigils, the lamens,
9
+ the hall's art, the planetary spirits' sigils) is MIT as code, its path
10
+ data included, so the drawing may be taken from the package under MIT.
11
+ The CC BY 4.0 statement in ../../README.md covers the images magick.ly
12
+ draws and serves, its hand-drawn images and the data, not this code.
13
+ Two of these files are also under BSD 3-Clause (Moon, next).
14
+
15
+ Moon: BSD 3-Clause as well as MIT.
16
+ src/astrology/moonPath.ts and src/astrology/Moon.tsx, and
17
+ lib/astrology/moonPath.js and lib/astrology/Moon.js compiled from them,
18
+ adapt phase_junk() in moon-phase.js from tingletech/moon-phase
19
+ (https://github.com/tingletech/moon-phase/blob/643015a83509ca6a662d1af6e1ac14661852cedb/moon-phase.js):
20
+ the path of the Moon's lit part and of its disc. They are under the BSD
21
+ 3-Clause License below, whose notice they carry, and our changes to them
22
+ under MIT.
23
+
24
+ Fonts: SIL Open Font License 1.1.
25
+ fonts/*.woff2, subsets of Noto Serif (Copyright 2022 The Noto Project
26
+ Authors; fonts/NotoSerif-OFL.txt) and Frank Ruhl Libre (Copyright 2015
27
+ The Frank Ruhl Libre Project Authors; fonts/FrankRuhlLibre-OFL.txt).
28
+ fonts/SOURCES.md says where they come from. fonts/gd-hall.css, which only
29
+ declares them, is MIT with the code.
30
+
31
+ The data these components read comes from the magick-data package, which
32
+ is licensed by its own files (its code MIT, its data CC BY 4.0).
33
+
34
+ ---
35
+
36
+ MIT License
37
+
38
+ Copyright (c) 2020-2026 Gadi Cohen <dragon@wastelands.net>
39
+
40
+ Permission is hereby granted, free of charge, to any person obtaining a copy
41
+ of this software and associated documentation files (the "Software"), to deal
42
+ in the Software without restriction, including without limitation the rights
43
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
44
+ copies of the Software, and to permit persons to whom the Software is
45
+ furnished to do so, subject to the following conditions:
46
+
47
+ The above copyright notice and this permission notice shall be included in all
48
+ copies or substantial portions of the Software.
49
+
50
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
51
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
52
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
53
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
54
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
55
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
56
+ SOFTWARE.
57
+
58
+ ---
59
+
60
+ BSD 3-Clause License (src/astrology/moonPath.ts, src/astrology/Moon.tsx
61
+ and what is compiled from them), from moon-phase's LICENSE.md, "License
62
+ for all other files" (its background image is not used here):
63
+
64
+ Copyright © 2012, Regents of the University of California
65
+ All rights reserved.
66
+
67
+ Redistribution and use in source and binary forms, with or without
68
+ modification, are permitted provided that the following conditions are met:
69
+
70
+ - Redistributions of source code must retain the above copyright notice,
71
+ this list of conditions and the following disclaimer.
72
+ - Redistributions in binary form must reproduce the above copyright notice,
73
+ this list of conditions and the following disclaimer in the documentation
74
+ and/or other materials provided with the distribution.
75
+ - Neither the name of the University of California nor the names of its
76
+ contributors may be used to endorse or promote products derived from this
77
+ software without specific prior written permission.
78
+
79
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
80
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
81
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
82
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
83
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
84
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
85
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
86
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
87
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
88
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
89
+ POSSIBILITY OF SUCH DAMAGE.
package/README.md CHANGED
@@ -1,3 +1,354 @@
1
- # Temporary Holding Version
1
+ # magick-components
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ React components that draw magickal figures from
4
+ [magick-data](https://www.npmjs.com/package/magick-data): the Tree of Life,
5
+ the Golden Dawn's temple halls, its lamens and symbols, the rose-cross
6
+ sigil, the Enochian tablets, the planetary kameas and the planetary
7
+ spirits' geomantic sigils, and the Moon in its phases. They are the drawings of
8
+ [magick.ly](https://magick.ly), which consumes this package as anyone else
9
+ would. The figures are drawn from the data as inline SVG, so they scale,
10
+ print and can be styled by the page around them. A few wrap their drawing
11
+ in HTML: the fylfot cross is a table of squares, `MoonWidget` and
12
+ `MercuryWidget` are tiles around a drawing or a picture, and a planetary
13
+ spirit's sigil is
14
+ centred in a `<div>` you may style.
15
+
16
+ The markup inside a drawing is not part of the API: its elements, ids and
17
+ attributes may change in any release. What is part of it is each
18
+ component's props and the classes a component documents as a styling hook
19
+ (the Tree's layers, [below](#the-tree-on-your-page)).
20
+
21
+ It is built and tested in
22
+ [the repository](https://github.com/gadicc/magickly/tree/main/packages/magick-components),
23
+ whose smoke test installs the packed tarball as a stranger would and
24
+ checks the published shape this README describes.
25
+
26
+ ## Licences
27
+
28
+ Copyright (c) 2020-2026 Gadi Cohen. The package is under three licences,
29
+ by path, and [LICENSE.txt](./LICENSE.txt) says which file is which:
30
+
31
+ - **The code is MIT**, and that includes the drawings. A component whose
32
+ code *is* the drawing (the sigils, the lamens, the hall's art, the
33
+ planetary spirits' sigils) is MIT as code, path data and all, so you may
34
+ take the drawing from the package under MIT. magick.ly licenses the
35
+ images it serves under CC BY 4.0, but anyone can render the same drawing
36
+ from this package under MIT.
37
+ - **The Moon's paths are also under BSD 3-Clause**: `astrology/Moon` and
38
+ the module of its paths adapt `phase_junk()` from
39
+ [moon-phase](https://github.com/tingletech/moon-phase/blob/643015a83509ca6a662d1af6e1ac14661852cedb/moon-phase.js),
40
+ Copyright © 2012, Regents of the University of California. Keep its
41
+ notice, in LICENSE.txt, with copies of those two modules, including in
42
+ what you build from them.
43
+ - **The hall's three fonts are under the SIL Open Font License 1.1**:
44
+ subsets of Noto Serif and Frank Ruhl Libre in `fonts/`, with their
45
+ notices and [their sources](./fonts/SOURCES.md).
46
+
47
+ The data the components read is magick-data's, which is licensed by its
48
+ own files: its code MIT, its data CC BY 4.0, with credit to
49
+ [magick.ly](https://magick.ly). The app around these components is
50
+ [AGPL-3.0-or-later](https://github.com/gadicc/magickly/blob/main/LICENSE.txt);
51
+ this package is deliberately freer, so that it can travel.
52
+
53
+ A drawing after an old source is our own drawing of a public-domain
54
+ printing, cited by page and scan: the planetary spirits' geomantic sigils
55
+ (the Rulers of the geomantic figures) follow John Heydon's *Theomagia*
56
+ (1663/4), and the Enochian Watchtowers' plain sigils, and the form of
57
+ Air's in colour, the plate of *The Equinox* (1912). Air's is a Tau with
58
+ four Yods above it, drawn as small flames (Regardie, *The Golden Dawn*,
59
+ vol. 4, 1940, p. 307). Regardie says the sigils are taken from Dee's
60
+ Sigillum Dei Aemeth (p. 308), whose T carries a 4 above it (*The
61
+ Equinox* I(7), Plate II, archive.org `crowley-equinox_202110`, leaf
62
+ n238), so the four Yods likely stand for that 4; the inference is ours,
63
+ not a source's. The form follows Plate X (leaf n256). The coloured Water and
64
+ Fire sigils are drawn from Regardie's description of them (1940), and
65
+ Earth's is a cross in four colours. Layouts taken from modern books are
66
+ facts, drawn in our own art.
67
+
68
+ ## Installing
69
+
70
+ ```sh
71
+ npm install magick-components react
72
+ ```
73
+
74
+ It needs React 19, and it is ES modules only. `@types/react` is an optional
75
+ peer: TypeScript users have it already. In a Server Component, or anything
76
+ that renders React:
77
+
78
+ ```tsx
79
+ import TreeOfLife from "magick-components/kabbalah/TreeOfLife";
80
+
81
+ export default function Page() {
82
+ return <TreeOfLife field="name.he" colorScale="queen" width={300} />;
83
+ }
84
+ ```
85
+
86
+ ## Server and Client Components
87
+
88
+ Most of the components use no hooks, or only `useId` and `useMemo`, and
89
+ render as Server Components, in plain Node with `renderToStaticMarkup`, or
90
+ in the browser. Three need the browser, and are marked `"use client"`:
91
+
92
+ - `astrology/MoonWidget`, which works out today's phase after hydration;
93
+ - `astrology/MercuryWidget`, which works out Mercury's next retrograde;
94
+ - `gd/RoseSigil`, which optimises and animates the sigil.
95
+
96
+ A client module's exports all become client references, so each of these
97
+ exports only its component. Their helpers live in modules of their own
98
+ (`astrology/Moon`, `gd/RoseSigilImage`, `gd/roseSigilGeometry`).
99
+
100
+ The Moon's drawing alone, `astrology/Moon`, needs no browser: it draws a
101
+ phase you give it, or a date's, which a page that knows the date passes:
102
+
103
+ ```tsx
104
+ import { Moon } from "magick-components/astrology/Moon";
105
+
106
+ export const Tonight = ({ date }: { date: Date }) => (
107
+ <Moon date={date} height={85} hemisphere="south" />
108
+ );
109
+ ```
110
+
111
+ ## The entry points
112
+
113
+ Each is a subpath of the package; there is no root entry. Most subpaths
114
+ are one module, and `gd/hall` gathers the hall's: its exports come from
115
+ several modules, and the package declares no side effects but its CSS,
116
+ so a bundler takes from it only the modules whose exports a page uses.
117
+ Each component is its entry's default export and a named export too
118
+ (`import TreeOfLife from …` or `import { TreeOfLife } from …`). Each
119
+ component imports only the magick-data tables it draws, except
120
+ `TreeOfLife` and `GradeTree`: a sphere's label may be any field of the
121
+ assembled graph, so they import magick-data's root entry, every table.
122
+
123
+ | Subpath | What it is |
124
+ | --- | --- |
125
+ | `kabbalah/TreeOfLife` | The Tree of Life, its spheres labelled from any field of magick-data's sephirot, in the Queen or King scale, with the Hermetic or the Hebrew letters on its paths |
126
+ | `kabbalah/fieldPath` | `readFieldPath()`, which reads a dotted field path (`planet.name.en.en`, `stones.*.name.en`) from a row, as the Tree's labels do |
127
+ | `gd/GradeTree` | The Tree as the map of the Golden Dawn's grades |
128
+ | `gd/hall` | `GdHall` (also the default export), a Golden Dawn temple hall drawn from a hall description, and what a page needs to draw, check or describe one: the description's types, `validateHall()`, `describeHall()`, `estimateHallAspect()`, `GdHallSvg` and the layout it draws, the default art and the fonts |
129
+ | `gd/hall/presets` | The halls of the grades, Neophyte to Philosophus and the Portal, as descriptions `GdHall` draws |
130
+ | `gd/Lamen` | An officer's lamen |
131
+ | `gd/lamenGrades` | Which grades' lamens each officer wears |
132
+ | `gd/RoseSigil` | The rose-cross sigil of a Hebrew text, optimised and drawn on in the browser (`"use client"`) |
133
+ | `gd/RoseSigilImage` | The same sigil with no hooks, for the server, from points you give it |
134
+ | `gd/roseSigilGeometry` | The rose's letters and where a text's letters stand on it, on either version of the rose: `ROSE_LETTERS`, `roseRings()`, `roseLetters()`, `letterPoint()` and `sigilPoints()`, with `ROSE_VERSIONS` and `ROSE_VERSION_NOTES` |
135
+ | `gd/roseSigilOptimizer` | `optimizeSigilPoints()`, the layout optimiser (nlopt, compiled to WASM) |
136
+ | `gd/SevenBranchedCandlestick` | The seven-branched candlestick, with its planets, in two versions: *The Equinox*'s figure of 1909 (the default) and the modern arrangement (`CANDLESTICK_VERSIONS`, `CANDLESTICK_VERSION_NOTES`) |
137
+ | `gd/TableOfShewbread` | The table of shewbread, with the signs and the tribes |
138
+ | `gd/FylfotCross` | The fylfot cross of the signs and elements |
139
+ | `enochian/Tablet` | An Enochian tablet, a Watchtower or the Tablet of Union, in the Golden Dawn's, Dee's or another tradition's letters |
140
+ | `chakras/Chakras` | The seven chakras, in their colours, on the outline of a body |
141
+ | `astrology/Kamea` | A planet's kamea, its magic square |
142
+ | `astrology/PlanetarySpirit` | A planetary spirit's geomantic sigil (the Rulers of the figures) |
143
+ | `astrology/Moon` | The Moon in a phase you give, or a date's, as seen from either hemisphere |
144
+ | `astrology/MoonWidget` | A tile of today's Moon and its phase's name, as seen from the viewer's hemisphere (`"use client"`) |
145
+ | `astrology/MercuryWidget` | A tile of Mercury's current or next retrograde, under a picture of the planet you give it (`"use client"`) |
146
+ | `astrology/mercuryRetrograde` | Mercury's stations and retrogrades, from astronomy-engine |
147
+ | `fonts/*` | The hall's fonts and `gd-hall.css` ([below](#the-halls-fonts)) |
148
+
149
+ ### Not stable
150
+
151
+ | Subpath | What it is |
152
+ | --- | --- |
153
+ | `gd/hall/editor` | The toolkit of magick.ly's hall editor: the hall vocabulary, the attribute readers and the layout's measures that the editor reads beyond `gd/hall`. It serves that editor and may change in any release, a patch included |
154
+
155
+ ## The Tree on your page
156
+
157
+ Without props, `TreeOfLife` draws as magick.ly's Tree page does by
158
+ default: each sphere's Roman name (`field="name.roman"`), numbered above
159
+ (`topText="index"`) and named in English below (`bottomText="name.en"`),
160
+ in the Queen scale (`colorScale="queen"`), with the Hermetic Tree's
161
+ letters on its paths (`letterAttr="hermetic"`), and its labels at 10
162
+ (`fontSize`; another field sizes its own, 32 for `index` and 20 for
163
+ Hebrew). Stating a default draws the same Tree as leaving it out:
164
+
165
+ ```tsx
166
+ import { TreeOfLife } from "magick-components/kabbalah/TreeOfLife";
167
+
168
+ export const Tree = () => <TreeOfLife width={300} />;
169
+ ```
170
+
171
+ `activeSephirah` draws one sphere and fades the rest (`null` fades them
172
+ all), and `activePath` does the same for a path; an id the Tree does not
173
+ have throws. The spheres and paths are links only where you give them
174
+ one ([below](#what-you-supply)). The `<svg>` is well-formed XML, its
175
+ links and its labels' curves `xlink:href` with the prefix declared.
176
+
177
+ It keeps to itself, so that several can share a page:
178
+
179
+ - **Ids.** The `<svg>`'s id is the `id` you pass (letters, digits, `-`
180
+ and `_`, starting with a letter) or one from React's `useId`, and every
181
+ id inside it begins with that id and a hyphen (`tree-sephirot`,
182
+ `tree-topTextPath0`). The ids are not a styling hook; they may change.
183
+ `useId` is unique within one React render, so Trees that separate
184
+ renders put on one page (two `renderToStaticMarkup` calls joined) need
185
+ an `id` each.
186
+ - **Classes.** Its three layers carry classes you may style by, which are
187
+ part of its contract (`TREE_LAYER_CLASSES`): `magick-tree-paths` (the
188
+ paths' outlines), `magick-tree-path-letters` (their letters) and
189
+ `magick-tree-sephirot` (the spheres and their labels). magick.ly's dark
190
+ mode re-inks the outlines through them.
191
+ - **Its stylesheet** names only its own `<svg>`, `flip` included.
192
+ - **Without hooks.** `TreeOfLifeSvg`, from the same entry, draws the same
193
+ Tree with no hooks and needs its `id`: for `renderToStaticMarkup` in a
194
+ route handler, where React's server build has no dispatcher for
195
+ `useId`.
196
+ - **Fonts.** It sets its labels in Noto Sans and Noto Sans Hebrew (both
197
+ OFL), falling back to Arial and sans-serif, and loads nothing itself:
198
+ load the two families on your page, or serve `NotoSans-Regular.ttf` and
199
+ `NotoSansHebrew-Regular.ttf` and pass where they are as `fontBaseUrl`
200
+ (`<TreeOfLife fontBaseUrl="/fonts" />`). The SVG then carries
201
+ `@font-face` rules for them, which an exported SVG needs; like any
202
+ `@font-face`, they define the two families for the whole page.
203
+
204
+ ## The hall's fonts
205
+
206
+ `GdHall` measures its labels with the three font subsets in `fonts/`, and
207
+ names its own font families so that no other build of Noto Serif or Frank
208
+ Ruhl Libre stands in for them. Load them in one of two ways:
209
+
210
+ - **Import the stylesheet**, and your bundler emits the fonts with the
211
+ rest of your assets:
212
+
213
+ ```ts
214
+ import "magick-components/fonts/gd-hall.css";
215
+ ```
216
+
217
+ The package's `sideEffects` keeps the import under any bundler.
218
+ TypeScript 6 checks that a side-effect import names a module it knows
219
+ of. Next's types, which `next-env.d.ts` brings in, declare CSS files;
220
+ elsewhere, a declaration file of your own does:
221
+
222
+ ```ts
223
+ // css.d.ts
224
+ declare module "*.css";
225
+ ```
226
+ - **Serve the files yourself** and pass where they are as `fontBaseUrl`
227
+ (`<GdHall hall={…} fontBaseUrl="/fonts" />`); the SVG then carries its
228
+ own `@font-face` rules, which an exported SVG needs.
229
+
230
+ ## The rose sigil and nlopt
231
+
232
+ `RoseSigil` optimises the sigil's layout with
233
+ [nlopt-js](https://www.npmjs.com/package/nlopt-js), whose Emscripten glue
234
+ asks for Node's `fs` even in a browser bundle. Both of Next's bundlers then
235
+ fail with `Can't resolve 'fs'` until you stub it out:
236
+
237
+ ```ts
238
+ // next.config.ts
239
+ import type { NextConfig } from "next";
240
+
241
+ const nextConfig: NextConfig = {
242
+ // Turbopack (next dev, and next build since Next 16): empty.ts is an
243
+ // empty module of your own.
244
+ turbopack: { resolveAlias: { fs: { browser: "./empty.ts" } } },
245
+ // webpack (next build --webpack)
246
+ webpack: (config, { isServer }) => {
247
+ if (!isServer)
248
+ config.resolve.fallback = { ...config.resolve.fallback, fs: false };
249
+ return config;
250
+ },
251
+ };
252
+
253
+ export default nextConfig;
254
+ ```
255
+
256
+ Only `RoseSigil` and `gd/roseSigilOptimizer` reach nlopt; a page that
257
+ draws the sigil on the server with `RoseSigilImage`, or uses nothing of the
258
+ sigil, needs no stub. If the optimiser fails to load, `RoseSigil` keeps the
259
+ letters' centres it first drew. Text that is not Hebrew is left out of the
260
+ sigil, and final forms are drawn as their base letters.
261
+
262
+ The rose has two versions, which differ in where Kaph and Tau stand on its
263
+ middle ring: the Golden Dawn's, as *The Equinox* printed it (`gd`, the
264
+ default), and Regardie's of 1939 (`version="regardie1939"`).
265
+ `ROSE_VERSION_NOTES`, from `gd/roseSigilGeometry`, names each and says
266
+ where it comes from; give `sigilPoints()` the same version as the drawing.
267
+
268
+ ## What you supply
269
+
270
+ - **An Enochian font.** `Tablet` draws the Latin transliteration unless you
271
+ pass `enochianStyle`, the CSS of a font that sets the Enochian letters.
272
+ The one magick.ly uses has no licence text, so it is not in the package.
273
+ - **The tiles' pictures.** `MoonWidget` and `MercuryWidget` take their
274
+ background as `background`, a URL drawn to cover, and `MercuryWidget`
275
+ the planet's picture
276
+ as `image` (a URL, or `<img>` props such as Next's `getImageProps()`
277
+ gives). Neither draws a picture of its own; without them the tile has
278
+ no background.
279
+ - **The Tree's fonts**, Noto Sans and Noto Sans Hebrew, on your page or
280
+ through `fontBaseUrl` ([above](#the-tree-on-your-page)).
281
+ - **Links.** `TreeOfLife` and `GradeTree` link nothing unless you pass
282
+ `sephirahHref` and `pathHref`. Each is given the sphere's or the path's
283
+ magick-data row and returns a URL, or `null` for no link; the links are
284
+ plain SVG links, which the browser follows:
285
+
286
+ ```tsx
287
+ import { TreeOfLife } from "magick-components/kabbalah/TreeOfLife";
288
+
289
+ export const LinkedTree = () => (
290
+ <TreeOfLife
291
+ sephirahHref={(sephirah) => `/sephirot/${sephirah.id}`}
292
+ pathHref={(path) => `/paths/${path.id}`}
293
+ />
294
+ );
295
+ ```
296
+
297
+ - **Ink, where it is not black.** The fylfot cross borders its squares,
298
+ and a planetary spirit's sigil is drawn, in black unless you pass `ink`,
299
+ a CSS colour such as your theme's custom property
300
+ (`ink="var(--my-ink, black)"`), as magick.ly does for the cross in its
301
+ dark mode. The sigil's path keeps its `stroke="#000"` attribute, which
302
+ your stylesheet may select, and takes `ink` as its style, which wins.
303
+ - **Labels.** `label` means one thing wherever a drawing takes it
304
+ (`Tablet`, `Kamea`). Not given, the drawing is an image named for what
305
+ it draws ("Enochian Watchtower of Fire", "Kamea of Saturn"); a string
306
+ names it otherwise; and `label={false}` marks it decorative, hidden
307
+ from assistive technology (`aria-hidden`), as for a drawing inside one
308
+ that names itself or beside text that says what it is.
309
+
310
+ ## Versions
311
+
312
+ The props are still settling, so the package stays at 0.x: a minor version
313
+ may change them, and a patch will not. It depends on magick-data at the
314
+ version it was built with (`^0.x`), and moves with it.
315
+
316
+ From 0.1.0, each release is published by the repository's CI when the
317
+ version changes on `main`, with npm provenance naming the commit it was
318
+ built from, as magick-data's are. CI publishes a pre-release under the
319
+ `next` tag and a release under `latest`. The first version, the release
320
+ candidate 0.1.0-rc.0, is published by hand.
321
+
322
+ ## Requirements
323
+
324
+ React 19 and an ES module environment: Node 22 or later (`engines`
325
+ says so), or any current bundler. The declarations name `.ts` files, as magick-data's do;
326
+ TypeScript 6 reads them under `bundler` and `nodenext`.
327
+
328
+ ## Provenance
329
+
330
+ Every drawing here is either drawn in code from magick-data's tables or
331
+ our own drawing after a source, and the table below says which, with the
332
+ source. The code is MIT and that cannot be taken back, so "Signed off"
333
+ is the date the owner checked the row's provenance, and no version past
334
+ 0.0.0 ships while a row has none; a test holds the first column to the
335
+ package's entries.
336
+
337
+ | Drawing | Source | Signed off |
338
+ | --- | --- | --- |
339
+ | The planetary spirits' sigils (`astrology/PlanetarySpirit`) | Our own drawings of 13 November 2026 after John Heydon, *Theomagia*, vol. 1 (London, 1663/4), book I, ch. V, pp. 13 and 15 (archive.org `theomagiaortempl00heyd`, leaves n124 and n126): a few strokes of one width placed by eye over the scan, not traced. They replace tracings of a 1994 printing in copyright, which the repository's history keeps and the package does not | 2026-11-14 |
340
+ | The Enochian tablets' letters (`enochian/Tablet`) | magick-data's `enochian/tablets.json5`, in each tradition's reading, signed off in its Sources; the tablet draws them as text | 2026-11-14 |
341
+ | The Watchtowers' sigils (`enochian/Tablet`) | Drawn in code from lines, arcs and curves. The plain sigils, and the form of Air's in colour, after *The Equinox* I(7) (1912), Plate X (archive.org `crowley-equinox_202110`, "The Equinox Vol. 1, No. 7", leaf n256); the coloured Water and Fire sigils from Regardie's description, *The Golden Dawn*, vol. 4 (1940); Earth's a cross in four colours | 2026-11-14 |
342
+ | The Air sigil's four Yods (`enochian/Tablet`) | Regardie, *The Golden Dawn*, vol. 4 (1940), p. 307 (archive.org `IsraelRegardie-TheGoldenDawn-Vol4-1940`, leaf n299) describes a Tau with four Yods above it; drawn as small flames after Plate X (above), hand-placed curves in code, not traced. That the Yods stand for the 4 over the T of Dee's Sigillum Dei Aemeth (*The Equinox* I(7), Plate II, leaf n238) is our inference, not a source's. They replace two fonts' glyphs, which the repository's history keeps | 2026-11-14 |
343
+ | The kameas (`astrology/Kamea`) | A grid drawn in code around magick-data's squares (`magick-data/astrology/kameas`), which are Agrippa's, *De occulta philosophia* (Cologne, 1533), book II, ch. 22, pp. CXLIX–CLIII (archive.org `DeOccultaPhilosophiaLoc1533`, leaves n164–n168), checked cell by cell; where the 1533 printing repeats a number (Venus, row 4: 45 for 43, which its Hebrew table gives; the Moon, row 1: 45 for 54) the square has the number that makes it magic | 2026-11-14 |
344
+ | The rose-cross sigil (`gd/RoseSigil`, `gd/RoseSigilImage`, `gd/roseSigilGeometry`, `gd/roseSigilOptimizer`) | Drawn in code. The rose's construction, three rings of letters at equal angles, is Gadi Cohen's original geometry, written out in `gd/roseSigilGeometry`, and the sigil's path is laid out by the optimiser over it. The order of the letters is in two versions. The Golden Dawn's (`gd`, the default) is the figure Crowley printed in *The Equinox* I(3) (1910), Diagram 63, plate facing p. 210 (archive.org `crowley-equinox_202110`, "The Equinox Vol. 1, No. 3", leaf n220), and the colour key to the rose in "The Complete Symbol of the Tarot", *The Equinox* I(8) (1912), plate facing p. 145 (the same item, "The Equinox Vol. 1, No. 8", leaf n174). Regardie's (`regardie1939`), which exchanges Kaph and Tau, is *The Golden Dawn*, vol. 3 (Aries Press, Chicago, 1939), p. 53 and Diagram 20, p. 56 (archive.org `IsraelRegardie-TheGoldenDawn-Vol3-1939`, leaves n46 and n49) | 2026-11-14 |
345
+ | The temple halls' art (`gd/hall`, `gd/hall/presets`, `gd/hall/editor`) | Our own art, in code. The halls' layouts are facts from Regardie, *The Golden Dawn*, vol. 2 (Aries Press, Chicago, 1938), cited for each hall by page and archive.org leaf (`IsraelRegardie-TheGoldenDawn-Vol2-1938`); no drawing of his is copied. Venus' and the Moon's seals follow Agrippa's woodcuts (1533), book II, ch. 22, pp. CLI and CLIII (archive.org `DeOccultaPhilosophiaLoc1533`, leaves n166 and n168), their geometry only. Each art records its source in its `provenance` | 2026-11-14 |
346
+ | The halls' fonts (`fonts/*`) | Subsets of Noto Serif and Frank Ruhl Libre under the SIL Open Font License 1.1, made from google/fonts at a pinned commit; [fonts/SOURCES.md](./fonts/SOURCES.md) gives the files, their hashes and how they are made | 2026-11-14 |
347
+ | The Moon (`astrology/Moon`, `astrology/MoonWidget`) | The paths of the lit part and the disc adapt `phase_junk()` from moon-phase, Copyright © 2012 Regents of the University of California, under the BSD 3-Clause License, at a pinned commit (see [Licences](#licences)); the phase comes from lune (Apache-2.0, a dependency). The tile draws no picture of its own | 2026-11-14 |
348
+ | Mercury's retrogrades (`astrology/MercuryWidget`, `astrology/mercuryRetrograde`) | Our code, MIT, computing the stations with astronomy-engine (MIT, a dependency). The tile draws no picture of its own: the planet's is the page's | 2026-11-14 |
349
+ | The Tree of Life and the Grade Tree (`kabbalah/TreeOfLife`, `kabbalah/fieldPath`, `gd/GradeTree`) | Drawn in code, original geometry: four equal circles through each other's centres (Kether, Daath, Tiphareth, Yesod), the side spheres at their crossings. Its proportions agree with the Order's own Tree, "The Minutum Mundum", in Regardie, *The Golden Dawn*, vol. 1 (Aries Press, Chicago, 1937), plate facing p. 191 (archive.org `IsraelRegardie-thegoldenDawn-vol1-1937`, leaf n182), and the six spheres round Tiphareth are the hexagram of vol. 2 (1938), p. 195 (archive.org `IsraelRegardie-TheGoldenDawn-Vol2-1938`, leaf n188). The arrangement of spheres and paths is Kircher's, *Oedipus Aegyptiacus* II.1 (1653) (Wikimedia Commons, File:Tree of Life (Kircher 1653).jpg). We found no source describing the circle construction itself. Labels and colours come from magick-data's sephirot and paths | 2026-11-14 |
350
+ | The lamens (`gd/Lamen`, `gd/lamenGrades`) | Drawn in code from geometry, nothing traced. The officers' lamens and their colours are facts from Regardie, *The Golden Dawn*, vol. 3 (Aries Press, 1939), pp. 82–84 and 88–96 (archive.org `IsraelRegardie-TheGoldenDawn-Vol3-1939`, leaves n74–n76 and n80–n88); the Stolistes' cup follows the Cup of Stolistes, vol. 1 (1937), p. 138 (`IsraelRegardie-thegoldenDawn-vol1-1937`, leaf n128); the Portal's lamens are from vol. 2 (1938), p. 156 (leaf n149). The rings' colours, the Keryx's caduceus and the Sentinel's wedjat are our own; no 1937–40 source gives the Sentinel's design. `gd/Lamen`'s comment cites these pages and the modern works it compared | 2026-11-14 |
351
+ | The seven-branched candlestick (`gd/SevenBranchedCandlestick`) | Drawn in code, our own art; the planets, their letters and the angels' and spheres' names are magick-data's. Two versions. The default (`equinox1909`) is after *The Equinox* I(2) (1909), p. 265, Diagram 17 (archive.org `crowley-equinox_202110`, "The Equinox Vol. 1, No. 2", leaf n266), its lettering not traced; the seven churches of Asia are a table in the component that cites the figure. The modern arrangement (`modern`) has no public-domain source: Regardie, *The Golden Dawn*, vol. 2 (Aries Press, Chicago, 1938), p. 62 (archive.org `IsraelRegardie-TheGoldenDawn-Vol2-1938`, leaf n56) describes the lamps but not which planet stands where, and the order is a fact from the 2015 Llewellyn edition of Regardie's *The Golden Dawn*, nothing of which is copied; its angels are Agrippa's planetary angels | 2026-11-14 |
352
+ | The table of shewbread (`gd/TableOfShewbread`) | Drawn in code. The Zelator ritual describes it, Regardie vol. 2 (1938), pp. 60–61 (leaves n54–n55); its form is *The Equinox* I(2) (1909), p. 265, Diagram 16 (archive.org `crowley-equinox_202110`, "The Equinox Vol. 1, No. 2", leaf n266); the Kerubim and signs are placed by the elements' quarters, East at the top; the archangels' names, the permutations of the Name and the tribes are magick-data's, the last two after Crowley's *777* (1909), cols. CXL–CXLI | 2026-11-14 |
353
+ | The fylfot cross (`gd/FylfotCross`) | A table of squares in code after the Fylfot Cross of the Third Knowledge Lecture, Regardie, *The Golden Dawn*, vol. 1 (Aries Press, 1937), p. 131 (archive.org `IsraelRegardie-thegoldenDawn-vol1-1937`, leaf n122), which the Zelator ritual explains, vol. 2 (1938), p. 57 (leaf n51); the symbols are magick-data's and the arms' colours our own | 2026-11-14 |
354
+ | The chakras (`chakras/Chakras`) | The seated figure is an original drawing of 13 November 2026, hand-placed curves in code, nothing traced or adapted; it replaces a silhouette of unrecorded source, which the repository's history keeps. The chakras' places and colours are magick-data's `chakras.json5` | 2026-11-14 |
@@ -0,0 +1,105 @@
1
+ Copyright 2015 The Frank Ruhl Libre Project Authors (https://github.com/fontef/frankruhllibre)
2
+
3
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
4
+ This license is copied below, and is also available with a FAQ at:
5
+ https://openfontlicense.org
6
+
7
+
8
+ -----------------------------------------------------------
9
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10
+ -----------------------------------------------------------
11
+
12
+ PREAMBLE
13
+ The goals of the Open Font License (OFL) are to stimulate worldwide
14
+ development of collaborative font projects, to support the font creation
15
+ efforts of academic and linguistic communities, and to provide a free and
16
+ open framework in which fonts may be shared and improved in partnership
17
+ with others.
18
+
19
+ The OFL allows the licensed fonts to be used, studied, modified and
20
+ redistributed freely as long as they are not sold by themselves. The
21
+ fonts, including any derivative works, can be bundled, embedded,
22
+ redistributed and/or sold with any software provided that any reserved
23
+ names are not used by derivative works. The fonts and derivatives,
24
+ however, cannot be released under any other type of license. The
25
+ requirement for fonts to remain under this license does not apply
26
+ to any document created using the fonts or their derivatives.
27
+
28
+ DEFINITIONS
29
+ "Font Software" refers to the set of files released by the Copyright
30
+ Holder(s) under this license and clearly marked as such. This may
31
+ include source files, build scripts and documentation.
32
+
33
+ "Reserved Font Name" refers to any names specified as such after the
34
+ copyright statement(s).
35
+
36
+ "Original Version" refers to the collection of Font Software components as
37
+ distributed by the Copyright Holder(s).
38
+
39
+ "Modified Version" refers to any derivative made by adding to, deleting,
40
+ or substituting -- in part or in whole -- any of the components of the
41
+ Original Version, by changing formats or by porting the Font Software to a
42
+ new environment.
43
+
44
+ "Author" refers to any designer, engineer, programmer, technical
45
+ writer or other person who contributed to the Font Software.
46
+
47
+ PERMISSION & CONDITIONS
48
+ Permission is hereby granted, free of charge, to any person obtaining
49
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
50
+ redistribute, and sell modified and unmodified copies of the Font
51
+ Software, subject to the following conditions:
52
+
53
+ 1) Neither the Font Software nor any of its individual components,
54
+ in Original or Modified Versions, may be sold by itself.
55
+
56
+ 2) Original or Modified Versions of the Font Software may be bundled,
57
+ redistributed and/or sold with any software, provided that each copy
58
+ contains the above copyright notice and this license. These can be
59
+ included either as stand-alone text files, human-readable headers or
60
+ in the appropriate machine-readable metadata fields within text or
61
+ binary files as long as those fields can be easily viewed by the user.
62
+
63
+ 3) No Modified Version of the Font Software may use the Reserved Font
64
+ Name(s) unless explicit written permission is granted by the corresponding
65
+ Copyright Holder. This restriction only applies to the primary font name as
66
+ presented to the users.
67
+
68
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69
+ Software shall not be used to promote, endorse or advertise any
70
+ Modified Version, except to acknowledge the contribution(s) of the
71
+ Copyright Holder(s) and the Author(s) or with their explicit written
72
+ permission.
73
+
74
+ 5) The Font Software, modified or unmodified, in part or in whole,
75
+ must be distributed entirely under this license, and must not be
76
+ distributed under any other license. The requirement for fonts to
77
+ remain under this license does not apply to any document created
78
+ using the Font Software.
79
+
80
+ TERMINATION
81
+ This license becomes null and void if any of the above conditions are
82
+ not met.
83
+
84
+ DISCLAIMER
85
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93
+ OTHER DEALINGS IN THE FONT SOFTWARE.
94
+ © 2022 GitHub, Inc.
95
+ Terms
96
+ Privacy
97
+ Security
98
+ Status
99
+ Docs
100
+ Contact GitHub
101
+ Pricing
102
+ API
103
+ Training
104
+ Blog
105
+ About
@@ -0,0 +1,93 @@
1
+ Copyright 2022 The Noto Project Authors (https://github.com/notofonts/latin-greek-cyrillic)
2
+
3
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
4
+ This license is copied below, and is also available with a FAQ at:
5
+ https://scripts.sil.org/OFL
6
+
7
+
8
+ -----------------------------------------------------------
9
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10
+ -----------------------------------------------------------
11
+
12
+ PREAMBLE
13
+ The goals of the Open Font License (OFL) are to stimulate worldwide
14
+ development of collaborative font projects, to support the font creation
15
+ efforts of academic and linguistic communities, and to provide a free and
16
+ open framework in which fonts may be shared and improved in partnership
17
+ with others.
18
+
19
+ The OFL allows the licensed fonts to be used, studied, modified and
20
+ redistributed freely as long as they are not sold by themselves. The
21
+ fonts, including any derivative works, can be bundled, embedded,
22
+ redistributed and/or sold with any software provided that any reserved
23
+ names are not used by derivative works. The fonts and derivatives,
24
+ however, cannot be released under any other type of license. The
25
+ requirement for fonts to remain under this license does not apply
26
+ to any document created using the fonts or their derivatives.
27
+
28
+ DEFINITIONS
29
+ "Font Software" refers to the set of files released by the Copyright
30
+ Holder(s) under this license and clearly marked as such. This may
31
+ include source files, build scripts and documentation.
32
+
33
+ "Reserved Font Name" refers to any names specified as such after the
34
+ copyright statement(s).
35
+
36
+ "Original Version" refers to the collection of Font Software components as
37
+ distributed by the Copyright Holder(s).
38
+
39
+ "Modified Version" refers to any derivative made by adding to, deleting,
40
+ or substituting -- in part or in whole -- any of the components of the
41
+ Original Version, by changing formats or by porting the Font Software to a
42
+ new environment.
43
+
44
+ "Author" refers to any designer, engineer, programmer, technical
45
+ writer or other person who contributed to the Font Software.
46
+
47
+ PERMISSION & CONDITIONS
48
+ Permission is hereby granted, free of charge, to any person obtaining
49
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
50
+ redistribute, and sell modified and unmodified copies of the Font
51
+ Software, subject to the following conditions:
52
+
53
+ 1) Neither the Font Software nor any of its individual components,
54
+ in Original or Modified Versions, may be sold by itself.
55
+
56
+ 2) Original or Modified Versions of the Font Software may be bundled,
57
+ redistributed and/or sold with any software, provided that each copy
58
+ contains the above copyright notice and this license. These can be
59
+ included either as stand-alone text files, human-readable headers or
60
+ in the appropriate machine-readable metadata fields within text or
61
+ binary files as long as those fields can be easily viewed by the user.
62
+
63
+ 3) No Modified Version of the Font Software may use the Reserved Font
64
+ Name(s) unless explicit written permission is granted by the corresponding
65
+ Copyright Holder. This restriction only applies to the primary font name as
66
+ presented to the users.
67
+
68
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69
+ Software shall not be used to promote, endorse or advertise any
70
+ Modified Version, except to acknowledge the contribution(s) of the
71
+ Copyright Holder(s) and the Author(s) or with their explicit written
72
+ permission.
73
+
74
+ 5) The Font Software, modified or unmodified, in part or in whole,
75
+ must be distributed entirely under this license, and must not be
76
+ distributed under any other license. The requirement for fonts to
77
+ remain under this license does not apply to any document created
78
+ using the Font Software.
79
+
80
+ TERMINATION
81
+ This license becomes null and void if any of the above conditions are
82
+ not met.
83
+
84
+ DISCLAIMER
85
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93
+ OTHER DEALINGS IN THE FONT SOFTWARE.