diff --git a/doc-img/shield_map_world.svg b/doc-img/shield_map_world.svg
index 7402f7dc3..45d72ed4c 100644
--- a/doc-img/shield_map_world.svg
+++ b/doc-img/shield_map_world.svg
@@ -118,9 +118,10 @@ See the end of this file for a list of available jurisdictions and their codes.
.ht,
.mx,
.us,
-.bo,
.cl,
.co,
+.bo,
+.pe,
.uy,
.ve,
.dz,
diff --git a/icons/shield_mx_state_2.svg b/icons/shield_escutcheon_crossbar_2.svg
similarity index 100%
rename from icons/shield_mx_state_2.svg
rename to icons/shield_escutcheon_crossbar_2.svg
diff --git a/icons/shield_mx_state_3.svg b/icons/shield_escutcheon_crossbar_3.svg
similarity index 100%
rename from icons/shield_mx_state_3.svg
rename to icons/shield_escutcheon_crossbar_3.svg
diff --git a/icons/shield_pe_2.svg b/icons/shield_pe_2.svg
new file mode 100644
index 000000000..edcef187a
--- /dev/null
+++ b/icons/shield_pe_2.svg
@@ -0,0 +1,5 @@
+
diff --git a/icons/shield_pe_3.svg b/icons/shield_pe_3.svg
new file mode 100644
index 000000000..37ddb0420
--- /dev/null
+++ b/icons/shield_pe_3.svg
@@ -0,0 +1,5 @@
+
diff --git a/src/js/shield_defs.js b/src/js/shield_defs.js
index 01b9bf244..d9c4e9020 100644
--- a/src/js/shield_defs.js
+++ b/src/js/shield_defs.js
@@ -96,6 +96,20 @@ export function loadShields() {
textHaloColor: Color.backgroundFill,
};
+ let escutcheonCrossbarShield = {
+ spriteBlank: [
+ "shield_escutcheon_crossbar_2",
+ "shield_escutcheon_crossbar_3",
+ ],
+ textColor: Color.shields.black,
+ padding: {
+ left: 2,
+ right: 2,
+ top: 5.5,
+ bottom: 4.5,
+ },
+ };
+
// NORTH AMERICA
shields["GLCT"] = {
notext: true,
@@ -573,19 +587,7 @@ export function loadShields() {
"VER",
"YUC",
"ZAC",
- ].forEach(
- (state) =>
- (shields[`MX:${state}`] = {
- spriteBlank: ["shield_mx_state_2", "shield_mx_state_3"],
- textColor: Color.shields.black,
- padding: {
- left: 2,
- right: 2,
- top: 5.5,
- bottom: 4.5,
- },
- })
- );
+ ].forEach((state) => (shields[`MX:${state}`] = escutcheonCrossbarShield));
// Ejes Viales (CDMX)
shields["MX:CDMX:EJE:CENTRAL"] = {
@@ -3158,6 +3160,53 @@ export function loadShields() {
textColor: Color.shields.white,
};
+ // Peru
+ shields["PE:national"] = {
+ spriteBlank: ["shield_pe_2", "shield_pe_3"],
+ textColor: Color.shields.black,
+ padding: {
+ left: 3,
+ right: 3,
+ top: 7,
+ bottom: 4,
+ },
+ };
+ [
+ "AM",
+ "AN",
+ "AP",
+ "AR",
+ "AY",
+ "CA",
+ "CU",
+ "HU",
+ "HV",
+ "IC",
+ "JU",
+ "LA",
+ "LI",
+ "LM",
+ "LO",
+ "MD",
+ "MO",
+ "PA",
+ "PI",
+ "PU",
+ "SM",
+ "TA",
+ "TU",
+ "UC",
+ ].forEach(
+ (department) =>
+ ([
+ shields[`PE:departmental:${department}`],
+ shields[`PE:rural:${department}`],
+ ] = [
+ escutcheonCrossbarShield,
+ pillShield(Color.shields.white, Color.shields.black),
+ ])
+ );
+
// Uruguay
shields["UY"] = homePlateDownShield(
5,