heraldicon icon indicating copy to clipboard operation
heraldicon copied to clipboard

Study heraldry, teach it to computers

#+TITLE: Heraldry

TL;DR: https://heraldicon.org

[[https://ko-fi.com/heraldicon][https://ko-fi.com/img/githubbutton_sm.svg]]

** About There are many heraldry resources online, but I didn't find a lot of software to create coats of arms. And the software I found felt limited and hard to use.

There's a [[https://discord.gg/EGbMW8dth2][Discord server]] now for feature requests, bug reports, or general discussion. Feel free to say hello, if also helps getting a sense of who is using this and what for, so future features can be prioritized accordingly. :)

** Goals

  • Implement a system to create and render data that describes coats of arms and ultimately entire heraldic achievements.
  • Convert between blazonry and that data in both directions.
  • Create precise, canonical results (if possible) that mainly use the description of the coat of arms and heraldic rules, i.e. it is not an SVG editor with a library of elements to arrange manually.
  • Provide a wide array of emblazonment tweaks that aren't necessarily covered in the blazonry, as different artists, regions, periods had different styles.
  • Validate coat of arms data against heraldic rules and potentially additional rule sets, e.g. specific to a period in time or region.
  • An open database of historical coats of arms with their metadata and their rendering.

** Intermediate data format It's no attempt to re-invent [[https://en.wikipedia.org/wiki/Blazon][Blazonry]], but the renderer will need some data representation of the coat of arms, and this data needs to be more precise than blazonry. It also should not care about heraldic rules, because it needs to be more powerful than those in order to deal with all the possible exceptions and historical/regional differences.

Conversion between this data representation and blazonry in both directions is still the goal.

This data structure also is not intended for human consumption or manipulation, it is only the source of truth behind the curtains. And the user interface is the tool to wrap around it.

I think [[https://github.com/edn-format/edn][EDN]] is perfect for this and will result in well-structured and concise representations.

** Resources *** Community themes Themes are hardcoded for the time being for various reasons. If you want me to add one, then fill out this template with HTML colour codes (hexadecimal #rrggbb) and paste it into #feature-requests on the Discord server. If you leave any tinctures empty, then it'll default to colour in the default theme. #+begin_src clojure {;; metals :argent "#" ;; silver, required :or "#" ;; gold, required

;; colours :azure "#" ;; blue, required :vert "#" ;; green, required :gules "#" ;; red, required :sable "#" ;; black, required :purpure "#" ;; purpur, required

;; stains :murrey "#" ;; brown red :sanguine "#" ;; blood red :tenne "#" ;; light brown

;; other :amaranth "#" :brunatre "#" ;; brown :buff "#" ;; leather :carnation "#" ;; skin colour :copper "#" :orange "#" :rose "#" :white "#" :cendree "#" ;; iron colour :bleu-celeste "#" ;; sky blue

::name "" ::attribution {:license :public-domain :creator-name "" :creator-link "https://"}} #+end_src

*** Community escutcheons Escutcheons are hardcoded currently, if you want me to add one, then please send an SVG of just the shape (see this [[./docs/escutcheon-triangular.svg][example]]) and this template for attribution if you made it yourself: #+begin_src clojure {::name "" ::attribution {:nature :own-work :license :public-domain :creator-name "" :creator-link "https://"}} #+end_src or if you based it on a file you found online (ideally under a CC license): #+begin_src clojure {::name "" ::attribution {:nature :derivative :license :cc-attribution-share-alike :license-version :v4 :creator-name "" :creator-link "https://" :source-license :cc-attribution-share-alike :source-license-version :v4 :source-link "https://" :source-name "" :source-creator-name "<the source creator's name>" :source-creator-link "https://"}} #+end_src

** Licensing/attribution Any arms, collection, charge, ribbon made public on the site must get a license from the creator, and it'll be attributed in SVGs and when viewing the thing or its derivatives on the site. See the site for details on this.

See the [[./LICENSE][LICENSE]] file for this repository's own licensing info.

** Alternatives [[https://github.com/Azgaar/Armoria][Armoria]] is another awesome site, with a different focus. It probably is a simpler alternative for a lot of use cases.

[[https://github.com/drawshield/Drawshield-Code][DrawShield]] was the first editor I found before I started. It also is an amazing resource on heraldry in general. It has an impressive blazonry parser and a decent, if static, SVG renderer, but it is server-side, making working with it rather slow and as a beginner I found it difficult to understand the various parts of it.