Ajoute des icônes Apple Touch générées proprement
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"icons:generate": "node tools/generate_apple_touch_icons.js",
|
||||||
"links:refresh": "node tools/check_external_links.js",
|
"links:refresh": "node tools/check_external_links.js",
|
||||||
"stats:generate": "node tools/generate_stats.js"
|
"stats:generate": "node tools/generate_stats.js"
|
||||||
},
|
},
|
||||||
|
|||||||
BIN
static/apple-touch-icon-precomposed.png
Normal file
BIN
static/apple-touch-icon-precomposed.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 49 KiB |
BIN
static/apple-touch-icon.png
Normal file
BIN
static/apple-touch-icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 49 KiB |
@@ -11,4 +11,5 @@
|
|||||||
<link rel="icon" href="{{ "favicon.ico" | absURL }}" type="image/x-icon">
|
<link rel="icon" href="{{ "favicon.ico" | absURL }}" type="image/x-icon">
|
||||||
<link rel="shortcut icon" href="{{ "favicon.ico" | absURL }}" type="image/x-icon">
|
<link rel="shortcut icon" href="{{ "favicon.ico" | absURL }}" type="image/x-icon">
|
||||||
<link rel="icon" href="{{ "favicon.png" | absURL }}" type="image/png" sizes="256x256">
|
<link rel="icon" href="{{ "favicon.png" | absURL }}" type="image/png" sizes="256x256">
|
||||||
|
<link rel="apple-touch-icon" href="{{ "apple-touch-icon.png" | absURL }}" sizes="180x180">
|
||||||
{{ partialCached "head/css.html" . }}
|
{{ partialCached "head/css.html" . }}
|
||||||
|
|||||||
@@ -4,4 +4,5 @@
|
|||||||
<link rel="icon" href="{{ "favicon.ico" | absURL }}" type="image/x-icon" />
|
<link rel="icon" href="{{ "favicon.ico" | absURL }}" type="image/x-icon" />
|
||||||
<link rel="shortcut icon" href="{{ "favicon.ico" | absURL }}" type="image/x-icon" />
|
<link rel="shortcut icon" href="{{ "favicon.ico" | absURL }}" type="image/x-icon" />
|
||||||
<link rel="icon" href="{{ "favicon.png" | absURL }}" type="image/png" sizes="256x256" />
|
<link rel="icon" href="{{ "favicon.png" | absURL }}" type="image/png" sizes="256x256" />
|
||||||
|
<link rel="apple-touch-icon" href="{{ "apple-touch-icon.png" | absURL }}" sizes="180x180" />
|
||||||
{{ partialCached "head/css.html" . }}
|
{{ partialCached "head/css.html" . }}
|
||||||
|
|||||||
53
tools/generate_apple_touch_icons.js
Normal file
53
tools/generate_apple_touch_icons.js
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
const fs = require("fs");
|
||||||
|
const path = require("path");
|
||||||
|
const sharp = require("sharp");
|
||||||
|
|
||||||
|
const PROJECT_ROOT = path.resolve(__dirname, "..");
|
||||||
|
const SOURCE_ICON_PATH = path.join(PROJECT_ROOT, "static", "favicon.png");
|
||||||
|
const APPLE_TOUCH_ICON_SIZE = 180;
|
||||||
|
const APPLE_TOUCH_ICON_BACKGROUND = "#060c14";
|
||||||
|
const OUTPUT_ICON_PATHS = [
|
||||||
|
path.join(PROJECT_ROOT, "static", "apple-touch-icon.png"),
|
||||||
|
path.join(PROJECT_ROOT, "static", "apple-touch-icon-precomposed.png"),
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Génère le PNG Apple Touch à partir du favicon principal du site.
|
||||||
|
*
|
||||||
|
* L'image finale est rendue opaque sur le fond sombre du thème actif pour
|
||||||
|
* éviter les rendus incohérents des zones transparentes sur certains appareils iOS.
|
||||||
|
*
|
||||||
|
* @returns {Promise<Buffer>}
|
||||||
|
*/
|
||||||
|
function buildAppleTouchIconBuffer() {
|
||||||
|
return sharp(SOURCE_ICON_PATH)
|
||||||
|
.resize(APPLE_TOUCH_ICON_SIZE, APPLE_TOUCH_ICON_SIZE, {
|
||||||
|
fit: "cover",
|
||||||
|
})
|
||||||
|
.flatten({
|
||||||
|
background: APPLE_TOUCH_ICON_BACKGROUND,
|
||||||
|
})
|
||||||
|
.png({
|
||||||
|
compressionLevel: 9,
|
||||||
|
adaptiveFiltering: true,
|
||||||
|
})
|
||||||
|
.toBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Écrit la même icône sous les deux noms historiques encore demandés par les navigateurs.
|
||||||
|
*
|
||||||
|
* @param {Buffer} iconBuffer
|
||||||
|
*/
|
||||||
|
function writeAppleTouchIcons(iconBuffer) {
|
||||||
|
for (const outputPath of OUTPUT_ICON_PATHS) {
|
||||||
|
fs.writeFileSync(outputPath, iconBuffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
(async function main() {
|
||||||
|
const iconBuffer = await buildAppleTouchIconBuffer();
|
||||||
|
writeAppleTouchIcons(iconBuffer);
|
||||||
|
})();
|
||||||
Reference in New Issue
Block a user