Skip to content

Redraw the Vanuatu pall on the 1980 Declaration grid - #1466

Open
tisohjung wants to merge 1 commit into
lipis:mainfrom
tisohjung:fix/vu-declaration-grid
Open

tisohjung wants to merge 1 commit into
lipis:mainfrom
tisohjung:fix/vu-declaration-grid

Conversation

@tisohjung

Copy link
Copy Markdown

Fixes the pall proportions of the Vanuatu flag, which do not match the grid laid down in the State
Flag and Armorial Bearings Public Declaration of 19 March 1980. Reported first as #1465; this is the
patch for it.

The grid

The Declaration builds the flag on an 18 × 12 grid. Reduced to ratios:

element value
black fimbriation, each side 1/18 of the height
yellow pall 1/18 of the height
whole pall band (black + yellow + black) 1/6 of the height
tip of the black hoist triangle 1/2 of the width

The three bands are equal. Flag_of_Vanuatu_(official).svg
on Commons is built on that grid and cites the Declaration as its source; in its coordinates the
yellow arm spans y = 3740…4180 of 7920 (440 units) inside a black band spanning 3300…4620
(1320 units) — 440 / 440 / 440.

Current vs the grid

as a fraction of the height Declaration current delta
black fimbriation, each side 0.05556 0.06316 +14%
yellow pall 0.05556 0.05263 −5%
whole pall band 0.16667 0.17895 +7%
black triangle tip (of the width) 0.5 0.5684 +14%

Two constructions disagree, and why this one

Commons also carries Flag_of_Vanuatu.svg
(950 × 570), which uses black 36 / yellow 30 / black 36 — that is 0.06316 / 0.05263, exactly
what this repo draws today. So the current artwork does match a published construction; it is just
not the one that cites the legal instrument, and the two are mutually inconsistent. That is presumably
how the discrepancy arose. I have taken the file citing the Declaration as authoritative, on the
grounds that a flag's own enabling law outranks a third-party construction sheet — but that is the
judgement call in this PR, and it is yours to overrule.

How it is drawn

Derived from the grid rather than nudged toward it. Diagonals at slope 5/9; each band is 2/3 of a
grid unit measured perpendicular, so the vertical offset along a diagonal is 2·√106 / 27. Every
vertex follows from those three constants, and they agree with the reference file's own numbers to
6.4e-5 grid units — the reference being the rounded one, since it stores 1 decimal in a 7920-unit
space.

The pall is now four filled polygons with the grid baked into the coordinates, replacing the two
strokes inside scale(.71111 1.01053) / scale(.56889 1.0779). That is not cosmetic: a stroke under
a non-uniform scale should be an elliptical pen, and renderers disagree about it. Skia-based ones
(so Flutter's flutter_svg, via vector_graphics) resolve the transform into the path and keep
stroke-width a scalar, which makes the arm's yellow 62% too wide and eats the black
fimbriation — silently, with no parse error or warning. Filled polygons have no such ambiguity, so
this also makes the file render identically everywhere. Same reasoning as the es-ct stripes, which
have the same construction.

The boar's tusk emblem is untouched, and needed no reseating — the redrawn inner black triangle
reaches further right, so clearance at the emblem's right edge grows from 2.11 to 7.82 units (4x3)
and 1.66 to 8.20 (1x1).

Verification

Both files rendered at their natural size, the reference stretched to the same box with
preserveAspectRatio="none" so only the design differs, then a column scan counting colour runs in
pixels. Every run now matches the Declaration grid exactly, read identically off
rsvg-convert 2.58.4 and off flutter_svg:

4x3, x=560 (arm)          current  blk 29  yel 24  blk 29
                          this PR  blk 26  yel 26  blk 26
                          grid     blk 26  yel 26  blk 26

4x3, x=200 (diagonal)     current  blk 32  yel 27  blk  92  yel 27  blk 32
                          this PR  blk 29  yel 29  blk 106  yel 29  blk 29
                          grid     blk 29  yel 29  blk 106  yel 29  blk 29

1x1, x=448 (arm)          current  blk 31  yel 26  blk 31
                          this PR  blk 27  yel 28  blk 27
                          grid     blk 27  yel 28  blk 27

1x1, x=160 (diagonal)     current  blk 34  yel 28  blk  98  yel 28  blk 34
                          this PR  blk 30  yel 31  blk 112  yel 31  blk 30
                          grid     blk 30  yel 31  blk 112  yel 31  blk 30

26 is 480/18; 27/28 is 512/18 landing either side of 28.44. Runs count pure-colour pixels,
so each boundary loses ~1.5 px to antialiasing — which is why the sum is a little under the geometric
value rather than exact.

Both files also get slightly smaller and lose the now-unused clipPath.

The black fimbriation is drawn wider than the yellow pall, where the grid in
the State Flag and Armorial Bearings Public Declaration (19 March 1980) makes
the two equal at 1/18 of the height each. Measured at 640x480, the horizontal
arm reads black 29 / yellow 24 / black 29 against the grid's 26 / 26 / 26.

Redrawn from the grid: diagonals at slope 5/9, each band 2/3 of a grid unit
perpendicular, so the vertical offset along a diagonal is 2*sqrt(106)/27. Now
four filled polygons with the grid baked into the coordinates instead of two
strokes under a non-uniform scale. The emblem is untouched and needed no
reseating.

Refs lipis#1465
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant