Giter Club home page Giter Club logo

drawshield-code's Introduction

Drawshield-Code

Heraldry is the ancient art of creating recognisable and distinctive colours and patterns to represent a person or an organisation, usually in the form of a design drawn on to the shape of an armoured Knight's shield. Hundreds of years ago the way that these shield designs are described was formalised into a language known as blazonry, in which the description of a particular shield design is known as a blazon.

The code in the DrawShield repository is a PHP program that will take as input a heraldic blazon and create the corresponding graphical image of the shield. It forms the core of the functionality provided by the https://drawshield.net website.

It is primarily intended to work as a server side service via a simple stateless API call, either as a POST or GET request (although there is a limited command line interface that can be used locally, for debugging or batch creation). The default image format returned is SVG, although the code includes hooks to call out to an external program to convert to other formats such as PNG or JPEG.

The program code is of highly variable quality: some of it dates back over 7 years and was my first major PHP project, using PHP 5. The program was subsequently ported to later versions of PHP and newer features tend to have a more Object Oriented approach. There is documentation of equally variable quality in the wiki of this repository.

Example Use

Install the code on a web server supporting PHP 8.1, for example in a directory /include/drawshield and invoke it with a GET API call in the following format:

http://<your-server->/include/drawshield/drawshield.php?blazon=<URL-encoded-text-blazon>

For a real example try:

https://drawshield.net/include/drawshield.php?blazon=Azure,%20a%20bend%20or

This will return an SVG file of a blue shield with a yellow diagonal band from top left to bottom right, which in most modern browsers will be displayed as an image like this:

Azure a bend or

Blazonry, however, has much greater expressive power and literally billions of different images can be created. There are over 12,000 example images, each complete with the blazon on the DrawShield Gallery Page:

DrawShield Gallery

Please check out the Wiki for an overview of the code organisation and a fairly random scattering of other documentation.

And please get in touch if you can help develop DrawShield further or have bug reports and feature suggestions.

drawshield-code's People

Contributors

26hpc avatar aerrapc avatar flamableassassin avatar jt-traub avatar karlwilcox avatar mbasaglia avatar mormegil-cz avatar paoloruben avatar timothyrichardgreen avatar zifyoip avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

drawshield-code's Issues

Label fixes

Your new labels are acting up a bit. They default to fess rather than chief and I can't get my colour of choice with the standard 3-pointed label, which is enormous. Can the default colour for labels be white and can charges on labels appear on the points rather than the bar? It would be fantastic if it were possible to have, say, the Princess Royal's "Heart between two Crosses Gules" on the points of a label.

Grady tinctures parsed like treatment but should be a single tincture(?)

User report:

When ermined, fleury, or a similar treatment is used with a gradient, the gradient is repeated in a series of squares containing two of the treatment charge/shape. When a gradient is followed by "seme de ermine spot", the second gradient color is ignored, and the word ermine is read as the name of a fur instead of as part of the name of a charge.
Blazon: grady in annulo sanguine and rose seme de ermine spot argent a griffin bronze beaked or armed argent langued sanguine

Since "grady" isn't proper heraldry, (but does look nice) this is probably low priority...

Sizes and locations of charges "in position"

However, I think I found a bug.

The "in honor point" command places the charge offset to the left of the centre line of the shield, instead of in line with the other points of the escutcheon.

Also, not sure if this are bugs or not, the size of the charges on each point vary wildly compared to each other and the charges for the nombril point and base point seem to overlap. Possibly because the middle base point charge seems to be a bit high up.

Also the command "in base point" and "in middle base" gives different results from each other. I might be mistaken but I thought they were the same thing.

Tested it out by making a blazon which placed a roundle on each point. Was expecting to get a nice straight row of same sized roundles at the appropriate points on the shield. Got a bit of a mess instead.
But the biggest problem is the offset honor point.

Ordinaries on charges

Quite a few error reports involve the cimple charges with ordinaries on them. We should be able to use similar code to that which allows a division on a charge - it won't always work nicely but should be possible.

Font scaling on motto is too conservative

The font size for the motto is varied depending on how long the motto is, so it will all fit. The alogorithm assumes all letters are as wide as M - evidence suggests that this is not the case!

Crowned / gorged may not be coloured correctly if not last in list of features

E.g. in "a lion or ducally crowned and langued gules" the crown takes the colour of the lion - reversing the order of the features make the crown gules.

This is a bit tricky, because "a lion or ducally crowned" should indeed have the crown the same colour as the lion. Need to look "ahead" in the list of features to see if any subsequent ones have a different tincture and use that instead.

Of course, we could just "fix" this by adding the line "crowned or gorged must be the last item in the list of features" to the user manual...(!)

Castles and Towers - coloured features

Castles and towers should perhaps be "masoned" of a different colour (but this will clash with the treatement of that name...)
Similarly, should the openings be able to be coloured differently? If so, what is the term?
Is it "Ajoure", of does that just make the openings transparent so the field is shown?

Add supporters to the achievement

This would be nice, it is fairly easy to parse but would need work to both the SVG rendering code and the web page layout as it makes the final image "landscape" rather than portrait, so wouldn't really fit into the existing page design very well.

Barnacle / Hemp Brake Corrections

Correspondence:

At present Drawshield has a hemp break charge that is actually a braie/bray/broye. Heraldically, the hemp break is always shown with a table in one of the two forms below.

A bray, like Drawshield’s barnacle, is a rather vicious horse bit/curb - but the latter is shown by default like a semi-closed nutcracker and is often hinged at the top. The bray is open. Could you rename Drawshield’s hemp break and, if you can find a good enough illustration, introduce a true hemp break?

Incidentally, brays don’t appear that much. I can only think of the Genevill/Joinville arms, which are below. (The Genevills descended on the female side from Broies/Broys and adopted horsebrays in their arms, which are still those of Joinville in Champagne)

image001

Per Chief

Implement this, however should it simply be a synonym:

Per chief A & B === B, a chief A

(in which the chief affects the layout of ordinaries and charges, the chief is an ordinary)

or is it treated like a division of two (unevenly sized) parts and being a division of the field doesn't affect placement of anyhthing else? Either is pretty straight forward, just need to decide which way to go

Canton improvements (shield & flag)

See following discussion:

Hi Karl,

So the simplest way to do this would be to have a few various cantons to work with. This also makes the most sense because in reality, while we call many things a canton in vexillology, they all can have various shapes. That's what I aim to fix by having four types of cantons.

First, you have square cantons. You're correct in that altering the height would change the width as well to keep it square. If you just say "a square canton", that implies that the square is exactly 1/2 the vertical size of the field, and the width of the canton will take care of itself.

Then you have square cantons that terminate at a bar. They work largely the same but the descriptor "of N bars" would have to be added to specify their vertical size (and again in turn adjusting their width as well).

For rectangular cantons, you have three types in common use. The first is quarter, taking up exactly 1/2 the width and 1/2 the height of the field. An example would be the Blue Ensign flags of the British Overseas Territories, which I propose you simply define as "a quarter".

The quarter can also be terminated at a specific barline, making it technically 1/2 the width of the field, but some value other than 1/2 the height of the field. An example of this would be the flag of Malaysia, whose canton is 1/2 the width of the field, but whose lower boundary is aligned on the 8th of 14 bars, making it slightly larger than 1/2. For cantons like these, I simply propose you say "a quarter of n bars".

Next you have what I've taken to calling a "two-fifths canton", a "fourty canton" (meaning 40% the width of the field) or just a "US canton" (because it appears on almost all US flags dating back to some of its earliest renditions). This canton is 2/5ths the width of the field and, by default, 1/2 the height of the field. However, it too can be made to align to specific bars, with the US flag being a prime example. This would then be "a US canton of 7 bars" on the US flag. An example of a two-fifths canton that is exactly 1/2 the height of the field is in the flag of Tonga, whose measurements are very precise and not well documented, but the canton is roughly 40% the width of the field and exactly 1/2 the height.

Finally, you have what I believe are traditional heraldic cantons, which (if I'm not mistaken) are 1/3 the width of the field and 1/2 the height. These could just be called cantons, and could still be subjected to the "of n bars" modifier.

To recap, my research proposes the following four cantons:

  1. Square Canton: a perfect square canton which by default takes up 1/2 the height of the field
  2. Quarter: a rectangular which by default is 1/2 the width of the field and 1/2 the height of the field
  3. Two-Fifths Canton, Fourty Canton, US Canton*: a rectangular canton which by default is 2/5 the width of the field and 1/2 the height of the field
  4. Canton: a rectangular canton which by default is 1/3 the width of the field and 1/2 the height of the field
  • if you can think of a better name for this canton, I'd love to hear it. I'm not overly fond of any of these names, but they get the point across."US canton" is the simplest, though it seems a bit pompous. I just can't find any earlier records of a 2/5ths canton existing before the US flag, so it may be accurate.

All of these cantons can have the "of n bars" descriptor at the end to adjust their height (and in the case of the square canton, adjust its width as well). They can also be put in chief sinister (a x canton sinister), dexter base (an x canton in base), and sinister base (an x canton sinister in base).

Hopefully this all makes sense. Please don't hesitate to ask if you have any further questions or need clarification. Thanks!

Mike

On Tue, Nov 5, 2019 at 2:55 PM Karl Wilcox [email protected] wrote:

Hi Mike,

I've got some code working on my development server that implements "a canton of N bars" for the height. Obviously in a square canton the width would be the same as the height but what would the width be for the ordinary canton? I can make it either a fixed width (say 1/3 of the total width), or I can force the aspect ratio of the canton to stay the same (e.g. the width is always 150% of the height or something?

Any thoughts?

Cheers,

Karl

—
Karl R. Wilcox
Creator: Leading heraldry site drawshield.net
E-mail: [email protected]
Website: karlwilcox.com
LinkedIn: linkedin.com/in/karlwilcox
Github: github.com/karlwilcox



On Tue, Nov 5, 2019 at 1:01 PM Micah wrote:

    Karl,

    I saw on your Twitter feed that you added the canton adjustments we discussed. I wanted to say thank you for taking the time to read my suggestions!

    After I sent you that email I compiled a bit of research on modern cantons and how they are used. I wanted to get your take to see if implementing these features would be feasible or not.

    Many cantons dictate their vertical size based not on the flag proportions but from objects on the field, almost always bars. For example, the United States flag isn't actually 1/2 the vertical size of the field, it's technically "7/13ths" because it aligns its lower boundary on the separation between the 7th and 8th bar from the field. The flag of Greece is another example, being a square canton but specifically aligning its lower boundary between the 5th and 6th bar from the field.

    My question to you is this: is it feasible to implement such a change? Since it's unexplored territory I took the liberty of compiling it all into a research paper and giving it the syntax "...a canton of n bars..." or just "...a canton of n...". Basically, this would mean that if you previously indicated bars on the field, this command would set the vertical size of the canton to exactly that many bars. The US flag would then be "barry of thirteen gules and argent, on a canton of seven bars (or just "on a canton of seven"),...". Square cantons would work the same way, so Greece would be "Barry of eight azure and argent, on a square canton of five, ..." It would allow for cantons to be set to the exact heights that they are depicted as in their flags.

    I understand that may be difficult to implement, and I also understand and respect that your interests lie primarily in heraldic uses so this kind of specificity may be beyond what you're interested in getting into since it only really applies to flags and not heraldic achievements. Regardless, I'm always interested in discussing flag design so I just figured I would see what you thought. I appreciate you taking the time to discuss this all with me.

    Thank you again!
    Mike

Roundels flexing on flags..?

Correspondence:

Lots of charges get stretched when drawing flags, some have started doing it recently that didn't used to including roundels. Some examples that do:

  • double headed phoenix
  • lions
  • roundels

Only a minor issue though, thanks for all the work you've down on this! It's serving me well for my D&D campaigns.

Sizing of divisions used to fill ordinaries

E.g. azure a chief paly of 9 gules and or (also seen with per bend)

To avoid unsightly joins when creating fancy edges on ordinaries, the oridinaries are usually specificied slightly wider than the field and cropped. This is usually fine, but if the ordinary is filled with a division the edges of that division get clipped. This is unsightly, but fairly minor. Could probably be fixed by using an exactly sized ordinary if it is filled by a division, although this might give you the unsightly joins if a fancy edge is used. You pays your money and takes your choice...

Position of charges in orle (and on Bordure)

At the moment there are 12 specified positions for charges in orle, if there are fewer charges then some positions are missed out. This works for some numbers but not others (e.g. 10, 11). It would nice to support more as well. Needs additions to arrangements.inc

Canton improvements (shield & flag)

See following discussion:

Hi Karl,

So the simplest way to do this would be to have a few various cantons to work with. This also makes the most sense because in reality, while we call many things a canton in vexillology, they all can have various shapes. That's what I aim to fix by having four types of cantons.

First, you have square cantons. You're correct in that altering the height would change the width as well to keep it square. If you just say "a square canton", that implies that the square is exactly 1/2 the vertical size of the field, and the width of the canton will take care of itself.

Then you have square cantons that terminate at a bar. They work largely the same but the descriptor "of N bars" would have to be added to specify their vertical size (and again in turn adjusting their width as well).

For rectangular cantons, you have three types in common use. The first is quarter, taking up exactly 1/2 the width and 1/2 the height of the field. An example would be the Blue Ensign flags of the British Overseas Territories, which I propose you simply define as "a quarter".

The quarter can also be terminated at a specific barline, making it technically 1/2 the width of the field, but some value other than 1/2 the height of the field. An example of this would be the flag of Malaysia, whose canton is 1/2 the width of the field, but whose lower boundary is aligned on the 8th of 14 bars, making it slightly larger than 1/2. For cantons like these, I simply propose you say "a quarter of n bars".

Next you have what I've taken to calling a "two-fifths canton", a "fourty canton" (meaning 40% the width of the field) or just a "US canton" (because it appears on almost all US flags dating back to some of its earliest renditions). This canton is 2/5ths the width of the field and, by default, 1/2 the height of the field. However, it too can be made to align to specific bars, with the US flag being a prime example. This would then be "a US canton of 7 bars" on the US flag. An example of a two-fifths canton that is exactly 1/2 the height of the field is in the flag of Tonga, whose measurements are very precise and not well documented, but the canton is roughly 40% the width of the field and exactly 1/2 the height.

Finally, you have what I believe are traditional heraldic cantons, which (if I'm not mistaken) are 1/3 the width of the field and 1/2 the height. These could just be called cantons, and could still be subjected to the "of n bars" modifier.

To recap, my research proposes the following four cantons:

  1. Square Canton: a perfect square canton which by default takes up 1/2 the height of the field
  2. Quarter: a rectangular which by default is 1/2 the width of the field and 1/2 the height of the field
  3. Two-Fifths Canton, Fourty Canton, US Canton*: a rectangular canton which by default is 2/5 the width of the field and 1/2 the height of the field
  4. Canton: a rectangular canton which by default is 1/3 the width of the field and 1/2 the height of the field
  • if you can think of a better name for this canton, I'd love to hear it. I'm not overly fond of any of these names, but they get the point across."US canton" is the simplest, though it seems a bit pompous. I just can't find any earlier records of a 2/5ths canton existing before the US flag, so it may be accurate.

All of these cantons can have the "of n bars" descriptor at the end to adjust their height (and in the case of the square canton, adjust its width as well). They can also be put in chief sinister (a x canton sinister), dexter base (an x canton in base), and sinister base (an x canton sinister in base).

Hopefully this all makes sense. Please don't hesitate to ask if you have any further questions or need clarification. Thanks!

Mike

On Tue, Nov 5, 2019 at 2:55 PM Karl Wilcox [email protected] wrote:

Hi Mike,

I've got some code working on my development server that implements "a canton of N bars" for the height. Obviously in a square canton the width would be the same as the height but what would the width be for the ordinary canton? I can make it either a fixed width (say 1/3 of the total width), or I can force the aspect ratio of the canton to stay the same (e.g. the width is always 150% of the height or something?

Any thoughts?

Cheers,

Karl

—
Karl R. Wilcox
Creator: Leading heraldry site drawshield.net
E-mail: [email protected]
Website: karlwilcox.com
LinkedIn: linkedin.com/in/karlwilcox
Github: github.com/karlwilcox



On Tue, Nov 5, 2019 at 1:01 PM Micah wrote:

    Karl,

    I saw on your Twitter feed that you added the canton adjustments we discussed. I wanted to say thank you for taking the time to read my suggestions!

    After I sent you that email I compiled a bit of research on modern cantons and how they are used. I wanted to get your take to see if implementing these features would be feasible or not.

    Many cantons dictate their vertical size based not on the flag proportions but from objects on the field, almost always bars. For example, the United States flag isn't actually 1/2 the vertical size of the field, it's technically "7/13ths" because it aligns its lower boundary on the separation between the 7th and 8th bar from the field. The flag of Greece is another example, being a square canton but specifically aligning its lower boundary between the 5th and 6th bar from the field.

    My question to you is this: is it feasible to implement such a change? Since it's unexplored territory I took the liberty of compiling it all into a research paper and giving it the syntax "...a canton of n bars..." or just "...a canton of n...". Basically, this would mean that if you previously indicated bars on the field, this command would set the vertical size of the canton to exactly that many bars. The US flag would then be "barry of thirteen gules and argent, on a canton of seven bars (or just "on a canton of seven"),...". Square cantons would work the same way, so Greece would be "Barry of eight azure and argent, on a square canton of five, ..." It would allow for cantons to be set to the exact heights that they are depicted as in their flags.

    I understand that may be difficult to implement, and I also understand and respect that your interests lie primarily in heraldic uses so this kind of specificity may be beyond what you're interested in getting into since it only really applies to flags and not heraldic achievements. Regardless, I'm always interested in discussing flag design so I just figured I would see what you thought. I appreciate you taking the time to discuss this all with me.

    Thank you again!
    Mike

In Annulo arrangement

Add the arrangement "in annulo" - user suggestion

I have sketched out the algorithm for this, I just need to implement it

over all the quarters is flaky

The implementation of this is awful and erratic. It sometimes needs 3(!) semicolons to be recognised correctly.

Replace existing functions in grammar.inc with:

protected function overall() {
$node = null;
$state = self::save();
if ($this->metaOverall()) {
self::restore($state);
} elseif (self::find(languageDB::OVERALL)) {
self::discard($state);
$node = $this->schema->makeNode(blazonML::E_OVERALL, array ( 'keyterm' => 'overall' ), self::tokens(), self::lineNo());
if (($over = self::objects()) == null) {
self::raiseError(self::ERROR_ORIGIN, 'Nothing to go "overall"', true);
return null;
}
$node->appendChild($over);
}
return $node;
}

protected function metaoverall() {
$node = null;

if (self::find(languageDB::METAOVERALL) != null) {
  $node = $this->schema->makeNode(blazonML::E_OVERALL, array ( 'keyterm' => 'overall' ), self::tokens(), self::lineNo());
  if (($over = self::objects()) == null) {
    self::raiseError(self::ERROR_ORIGIN, 'Nothing to go "overall"', true);
    return null;
  }
  $node->appendChild($over);
}
return $node;

}

Implement "issuant From"

We have code to display and "half" of a charge, and so can use this (with some appropriate positioning) to implement "issuant from X", where X can be an ordinary, or perhaps the edges of the shield. The charge will usually "issue" upwards, with exceptions for the sides of the shield and maybe others...?

x between 2 y respectant / addorsed

This does the "between" bit but does not flip the outer charges as requested. The general case (what you might call combined arrangements) is quite hard, but arguably the two cases here are by far the most common and putting in a specific fix for these will catch most cases.

Weapon tweaks

The mace and truncheon should have separately coloured handles.
The staff wreathed doesn't work
Should the head of the staff be separately coloured (and if so, is it called anything other than "head")?

Cantons should always be in top corners

Even if there is a cheif present (according to Robin), that means that they also need to be drawn after the chief. May also be noted in the discussion in #54 but can be tackled separately

Improvements to achievements

Summary: See highlight.

Correspondence:

I’ve answered your points below in rubric.

Also, for reference and by way of further explanation, I have attached some notes, which I think are best looked at first

Ecclesiastical achievements would be terrific but they are all hats. Can you also allow the current charge “mitre” to be used in the same way as the helmet in an achievement? As its lappets fall round the shoulders of the escutcheon it would have to be an alternative to helmet-and-mantling, as would the other ecclesiastical hats-and-cords

In my notes, for a lady’s arms in a lozenge or oval shape, I mentioned a love knot as (part of) an achievement. I thought it might be a form of torse. On reflection, though, a love knot, too, has to wrap round the lozenge/oval, so it’s more like mantling.

If any of the above are introduced, it would mean that the word “achievement” shouldn’t automatically produce anything. Indeed, the word ‘achievement’ becomes only an introductory warning that what follows isn’t on the shield/lozenge/oval. And all elements of an achievement, except helmet and mantling, are independent of each other.

I have responded below on this basis and, if you adopt this proposal, blazons would be like this:

(1) Sable on a bend Or 3 martlets bendwise sinister gules very much larger
Achievement
Torse sa and arg
Crest a demi lion per fess or and sable

(2) Sable a pile throughout inverted arg
Achievement
Torse arg and sa
Crest a talbot sejant gu
Motto “Loyaute mon honeur”

(3) Barry arg and gu
Achievement
Mantling dexter arg and gu sinister gu and arg [whereupon a squire’s helmet will automatically appear, default colour steel]
Torse gu and arg
Crest a rustre sa

(4) Vert a pomegranate or fructed gu
Achievement
A Royal helmet Or [whereupon mantling will appear – the user can then colour it as he wishes]
Torse or and vert
Crest a lion rampant purpure

(5) Az a chi rho Or between 4 crosses crosslet arg
Achievement
A mitre az

(6) Or on a fess sa between 2 roses proper smaller 3 portcullises arg drawn in a lozenge shape
Achievement
A love knot az
Crest a baron’s coronet proper [I know it’s not a crest but it’s in the same place as a crest]

Charge Orientation re-work

Implement the following:

As part of their metadata, charges have an "aspect", with values of "landscape" or "portrait". This can be specified explicitly in extradata.inc, or be calculated.
$aspect = $height > $width ? "portrait" : "landscape";

Charges also have a "facing" direction, with values "left", "right", "up", "down" or "none". This can be specified explicitly, or have the default value "left".

At least some of the combinations are to be implemented as shown below:

orientation

These metadata items will also be used to determine whether (and how) charges are oriented in line with any ordinaries that they are placed "on".

More details to follow.

Hatching as an alternative colour scheme

A correspondent suggests offering hatching as an alternative colour scheme.

For rendering, this would mods to tinctures.inc as we would need to replace the fill with a pattern fill, alhtough you could pre-define all the fills as there are only 8 or so.

Questions - how to represent colours that don't have a corresponding hatching? Grey?

Actually, pattern fills might give problems when objects are scaled, need to keep a consistent hatching size. Alternative is perhaps mask onto fixed sized layer containing the hatching.

Also got problems with quarterly shields and scaling. Only really works for very simple shields and hence not widely useful...?

Nested charges....

...charged with an escutcheon azure [charged] with a mullet of...

e.g. Gules, a cross Or, an eagle Or charged with an escutcheon azure charged with a mullet of ten points argent

Eagle has no eyes

The eagle (and eagle displayed, which is the same charge) do not have any eyes!

Geometric shapes not drawn entire

Geometric shapes do not honour the "entire" modifier. Also, this modifier needs to be marked as "used" to avoid the spurious error message.

Nested quarters - numbering error

I may have misunderstood recursive method calls - when quarters are further quartered the subshields array (grammar.inc line 1069) seems to get overwritten with the recursive data - WHY? Example blazon:

quartered
first quartered
first or
second gules
third azure
fourth per pale argent and sable
;;
second or
third vert
fourth purpure

Different colours in each quarter / per saltire?

Is this valid? Per saltire gules or azure argent i.e. one colour per section
Can the same be said of quartered? Gyronny (of n)?

Fairly easy to parse but tricky to implement because (at the moment) we don't have separate objects for the various parts, so a lot of drawing would be required.

Spurious Error Message in per pile

per pile purpure and sable

Generates

parser Missing tincture(s) on division per pile purpure and sable near line Malformed tincture ID=N1-8

(Caused by always looking for a third tincture - clean up in references.inc?)

Flaunches always in pairs

Correspondence:

You do not have a way to emblazon two flanches, (I looked for flaunches). I didn't even know you could use only one until recently. I thought they always came in pairs, and have only seen one with a single flanche. Is this correct?

Also, if so, the corresondent wanted to put a charge on each (combattant as well) - This latter is related to #37

Full stop after blazon (or position?) not recognised

Contact Form: Message: Don't understand: ...leaved argent in middle chief [.]...
Blazon: Argent,
A cross gules
A tudor rose gules, leaved vert, seeded or.
A chief azure in upper half.
A book or leaved argent in middle chief.
Reference: Error Report

Specify number of checks on ordinary

Make it possible to specify the number of rows for checky when applied to an ordinary. e.g. 3 or 4 rows on a fess. Needs work on the parser (what should the syntax be?) and the SVG rendering code.

Implement "Fessward" modifier

This is probably best treated as a specific arrangement, in which the objects are arranged in annulo but pointing towards the centre. Would need to know which was the "top" of a charge (see other issue about charge orientation)

Cannot counterchange per pile

This is becuase per pile can have three tinctures, which cannot be counterchanged. The code needs to explicitly count how many colours have been used to determine whether counerchange is possible. Example blazon - e.g. per pile arg and sa per pale counterchanged

Identifying quarters by colour for contents

e.g. Quarterly Vert and Azure in the verta Portcullis Or in the azure a Lymphad

Alternatively...

Quarterly Vert and Azure in the former a Portcullis Or in the latter a Lymphad

This is probably quite tricky to implement, especially error handling...? Former / latter is probably OK, but would this construction also then apply to an two-colout division? That would be quite a bit of work...

Charge "between two bars"

Placement for one (or more?) charges "between two bars", as in "between two bars gules a lion or"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.