日本語版
最新ニュース
科学&テクノロジー

HTML/ZIP/PNG 多言語ファイルの作成方法

この記事は、利用可能なプレゼンテーションの概要です ここ。作成されたデモ ファイルは、記事の最後からダウンロードできます。リポジトリは次の場所にあります。 https://github.com/gildas-lormeau/Polyglot-HTML-ZIP-PNG。 導入 単一ファイルは、Web アーカイブ用のツールであり、通常、Web ページのリソースをデータ URI として保存します。ただし、このアプローチは、リソースが大きい場合には非効率となる可能性があります。 ZIP 形式の柔軟な構造を HTML と組み合わせることで、より洗練されたソリューションが生まれます。次に、この構造全体を PNG ファイル内にカプセル化することで、さらに一歩進めます。 ZIP の力 ZIP 形式は、複数のファイルを保存するための整理された構造を提供します。これは、ファイル エントリの後に中央ディレクトリが続く構造に基づいています。中央ディレクトリは目次として機能し、各ファイル エントリに関するメタデータを含むヘッダーが含まれます。これらのヘッダーには、ファイル名、サイズ、チェックサム、ファイル エントリ オフセットなどの重要な情報が含まれています。 ZIP を特に多用途にしているのは、データ配置の柔軟性です。この形式では、最初のファイル エントリに 0 より大きいオフセットを設定することで、ZIP コンテンツの前にデータを追加できますが、その後に最大 64KB のデータを追加できます (つまり ZIP コメント)。この機能により、多言語ファイルの作成に適しています。 HTML/ZIP 多言語ファイルの作成 この知識に基づいて、Web…

1735345437
2024-12-27 23:10:00

この記事は、利用可能なプレゼンテーションの概要です ここ。作成されたデモ ファイルは、記事の最後からダウンロードできます。リポジトリは次の場所にあります。 https://github.com/gildas-lormeau/Polyglot-HTML-ZIP-PNG

導入

単一ファイルは、Web アーカイブ用のツールであり、通常、Web ページのリソースをデータ URI として保存します。ただし、このアプローチは、リソースが大きい場合には非効率となる可能性があります。 ZIP 形式の柔軟な構造を HTML と組み合わせることで、より洗練されたソリューションが生まれます。次に、この構造全体を PNG ファイル内にカプセル化することで、さらに一歩進めます。

ZIP の力

ZIP 形式は、複数のファイルを保存するための整理された構造を提供します。これは、ファイル エントリの後に中央ディレクトリが続く構造に基づいています。中央ディレクトリは目次として機能し、各ファイル エントリに関するメタデータを含むヘッダーが含まれます。これらのヘッダーには、ファイル名、サイズ、チェックサム、ファイル エントリ オフセットなどの重要な情報が含まれています。 ZIP を特に多用途にしているのは、データ配置の柔軟性です。この形式では、最初のファイル エントリに 0 より大きいオフセットを設定することで、ZIP コンテンツの前にデータを追加できますが、その後に最大 64KB のデータを追加できます (つまり ZIP コメント)。この機能により、多言語ファイルの作成に適しています。

HTML/ZIP 多言語ファイルの作成

この知識に基づいて、Web ブラウザで動作する自己解凍アーカイブを作成できます。表示するページとそのリソースは ZIP ファイルに保存されます。 ZIP データを HTML コメントに格納することで、ZIP ファイルの内容を抽出して表示する自己解凍ページを作成できます。

自己解凍ページの基本構造は次のとおりです。



  
     charset=utf-8>
    </span>Please wait...<span class="nt"/>
    <span class="nt"></span><span class="s">lib/zip.min.js</span><span class="nt">></span>
  <span class="nt"/>
  <span class="nt"/>
    <span class="nt"/>Please wait...<span class="nt"/>
    <span class="c"><!-- [ZIP data] --></span>
    <span class="nt"><![CDATA[<span class="na">src=]]></script></span><span class="s">lib/zip.min.js</span><span class="nt">></span>
  <span class="nt"/>
  <span class="nt"/>
    <span class="nt"/>Please wait...<span class="nt"/>
    <span class="c"><!-- [ZIP data] --></span>
    <span class="nt"></span><span class="s">application/json</span><span class="nt">></span>
    <span class="p">[</span><span class="nx">consolidation</span> <span class="nx">data</span><span class="p">]</span>
    <span class="nt"/>
    <span class="nt">
      
    
  
]
[IEND chunk]
</code></pre>
</div>
</div>
<h2 id="optimization-through-image-reuse">画像の再利用による最適化</h2>
<p>最後の最適化では、ZIP ファイルからメイン画像 (RennesJS のロゴ) が削除され、PNG ファイルとして解釈されたページが再利用されて、表示されるページ内で置き換えられます。</p>
<h2 id="resulting-file">結果のファイル</h2>
<p>ダウンロード <a target="_blank" href="https://github.com/gildas-lormeau/Polyglot-HTML-ZIP-PNG/raw/main/demo.png.zip.html" rel="noopener">デモ.png.zip.html</a> (macOS の「アーカイブ ユーティリティ」のバグにより、結果のファイルを解凍できません。この問題を回避するには、unzip を使用できます)。</p>
</p></div>
<p>#HTMLZIPPNG #多言語ファイルの作成方法</p><div class="aipbc6a7c9e784f6b7" >
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-0928966750491324"
     data-ad-slot="4752185579"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script></div><style type="text/css">
@media screen and (min-width: 1201px) {
.aipbc6a7c9e784f6b7 {
display: block;
}
}
@media screen and (min-width: 993px) and (max-width: 1200px) {
.aipbc6a7c9e784f6b7 {
display: block;
}
}
@media screen and (min-width: 769px) and (max-width: 992px) {
.aipbc6a7c9e784f6b7 {
display: block;
}
}
@media screen and (min-width: 768px) and (max-width: 768px) {
.aipbc6a7c9e784f6b7 {
display: block;
}
}
@media screen and (max-width: 767px) {
.aipbc6a7c9e784f6b7 {
display: block;
}
}
</style>

<div class="sharedaddy sd-sharing-enabled"><div class="robots-nocontent sd-block sd-social sd-social-icon sd-sharing"><h3 class="sd-title">Share this:</h3><div class="sd-content"><ul><li class="share-facebook"><a rel="nofollow noopener noreferrer"
				data-shared="sharing-facebook-4105317"
				class="share-facebook sd-button share-icon no-text"
				href="https://www.nipponese.news/html-zip-png-%e5%a4%9a%e8%a8%80%e8%aa%9e%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ae%e4%bd%9c%e6%88%90%e6%96%b9%e6%b3%95/?share=facebook"
				target="_blank"
				aria-labelledby="sharing-facebook-4105317"
				>
				<span id="sharing-facebook-4105317" hidden>Share on Facebook (Opens in new window)</span>
				<span>Facebook</span>
			</a></li><li class="share-x"><a rel="nofollow noopener noreferrer"
				data-shared="sharing-x-4105317"
				class="share-x sd-button share-icon no-text"
				href="https://www.nipponese.news/html-zip-png-%e5%a4%9a%e8%a8%80%e8%aa%9e%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ae%e4%bd%9c%e6%88%90%e6%96%b9%e6%b3%95/?share=x"
				target="_blank"
				aria-labelledby="sharing-x-4105317"
				>
				<span id="sharing-x-4105317" hidden>Share on X (Opens in new window)</span>
				<span>X</span>
			</a></li><li class="share-end"></li></ul></div></div></div>
<div id='jp-relatedposts' class='jp-relatedposts' >
	<h3 class="jp-relatedposts-headline"><em>Related</em></h3>
</div>					</div>

					<div class="byo-author-box">
						<strong>執筆者について: nipponese</strong>
						<p>
							Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。						</p>
					</div>
				</div>

				<aside class="byo-article-side" aria-label="関連記事">
					<h2>関連記事</h2>
											<article>
							<a class="byo-kicker" href="https://www.nipponese.news/category/%e7%a7%91%e5%ad%a6%ef%bc%86%e3%83%86%e3%82%af%e3%83%8e%e3%83%ad%e3%82%b8%e3%83%bc/">科学&テクノロジー</a>							<h3><a href="https://www.nipponese.news/%e3%83%8a%e3%82%a4%e3%82%b8%e3%82%a7%e3%83%ab%e3%83%bb%e3%83%95%e3%82%a1%e3%83%a9%e3%83%bc%e3%82%b8%e6%b0%8f%e3%81%ab%e9%a2%a8%e5%88%ba%e5%80%99%e8%a3%9c%e3%82%ab%e3%82%a6%e3%83%b3%e3%83%88%e3%83%bb/">ナイジェル・ファラージ氏に風刺候補カウント・ビンフェイスが挑むクラクトン補選</a></h3>
						</article>
											<article>
							<a class="byo-kicker" href="https://www.nipponese.news/category/%e7%a7%91%e5%ad%a6%ef%bc%86%e3%83%86%e3%82%af%e3%83%8e%e3%83%ad%e3%82%b8%e3%83%bc/">科学&テクノロジー</a>							<h3><a href="https://www.nipponese.news/2026%e5%b9%b48%e6%9c%8812%e6%97%a5%e3%81%ab%e3%82%a2%e3%82%a4%e3%83%ab%e3%83%a9%e3%83%b3%e3%83%89%e3%81%a7%e9%83%a8%e5%88%86%e6%97%a5%e9%a3%9f%e3%82%92%e8%a6%b3%e6%b8%ac%e3%80%81%e5%b0%82%e9%96%80/">2026年8月12日にアイルランドで部分日食を観測、専門家が安全な観測を呼びかけ</a></h3>
						</article>
											<article>
							<a class="byo-kicker" href="https://www.nipponese.news/category/%e7%a7%91%e5%ad%a6%ef%bc%86%e3%83%86%e3%82%af%e3%83%8e%e3%83%ad%e3%82%b8%e3%83%bc/">科学&テクノロジー</a>							<h3><a href="https://www.nipponese.news/2026%e5%b9%b48%e6%9c%8812%e6%97%a5%e3%81%ab%e8%8b%b1%e5%9b%bd%e3%81%a7%e9%83%a8%e5%88%86%e6%97%a5%e9%a3%9f%e3%82%92%e8%a6%b3%e6%b8%ac%e3%80%81%e3%83%aa%e3%83%b3%e3%82%ab%e3%83%b3%e3%82%b7%e3%83%a3/">2026年8月12日に英国で部分日食を観測、リンカンシャー州では最大食が午後7時10分に到来の見込み</a></h3>
						</article>
											<article>
							<a class="byo-kicker" href="https://www.nipponese.news/category/%e7%a7%91%e5%ad%a6%ef%bc%86%e3%83%86%e3%82%af%e3%83%8e%e3%83%ad%e3%82%b8%e3%83%bc/">科学&テクノロジー</a>							<h3><a href="https://www.nipponese.news/2026%e5%b9%b48%e6%9c%8812%e6%97%a5%e3%81%ae%e9%83%a8%e5%88%86%e6%97%a5%e9%a3%9f%e3%80%81%e3%82%ab%e3%83%8a%e3%83%80%e3%82%84%e3%82%a2%e3%83%a1%e3%83%aa%e3%82%ab%e3%81%ae%e4%b8%bb%e8%a6%81%e9%83%bd/">2026年8月12日の部分日食、カナダやアメリカの主要都市で観測可能に</a></h3>
						</article>
											<article>
							<a class="byo-kicker" href="https://www.nipponese.news/category/%e7%a7%91%e5%ad%a6%ef%bc%86%e3%83%86%e3%82%af%e3%83%8e%e3%83%ad%e3%82%b8%e3%83%bc/">科学&テクノロジー</a>							<h3><a href="https://www.nipponese.news/%e3%83%9a%e3%83%ab%e3%82%bb%e3%82%a6%e3%82%b9%e5%ba%a7%e6%b5%81%e6%98%9f%e7%be%a4%e3%81%8c8%e6%9c%8812%e6%97%a5%e3%81%a813%e6%97%a5%e3%81%ab%e3%83%94%e3%83%bc%e3%82%af%e3%80%811%e6%99%82%e9%96%93/">ペルセウス座流星群が8月12日と13日にピーク、1時間に50〜100個の流星を観測可能</a></h3>
						</article>
														</aside>
			</div>

										<nav class="byo-article-navigation" aria-label="前後の記事">
					<div class="byo-newsroom-wrap byo-article-navigation__grid">
													<a class="byo-article-navigation__item byo-article-navigation__item--previous" href="https://www.nipponese.news/%e5%9c%b0%e7%90%83%e4%b8%8a%e3%81%ae%e6%b5%b7%e3%81%ae140%e5%85%86%e5%80%8d%e3%81%ae%e5%ba%83%e3%81%95-%e3%82%ab%e3%83%90%e3%83%ab%e3%83%bb%e3%83%8c%e3%82%b5%e3%83%b3%e3%82%bf%e3%83%a9/">
								<span class="byo-article-navigation__label">← 前の記事</span>
								<span class="byo-article-navigation__title">地球上の海の140兆倍の広さ – カバル・ヌサンタラ</span>
							</a>
						
													<a class="byo-article-navigation__item byo-article-navigation__item--next" href="https://www.nipponese.news/%e3%82%af%e3%83%aa%e3%83%bc%e3%83%96%e3%83%a9%e3%83%b3%e3%83%89%e3%83%bb%e3%83%96%e3%83%a9%e3%82%a6%e3%83%b3%e3%82%ba%e3%80%81%e3%83%87%e3%82%b7%e3%83%a7%e3%83%bc%e3%83%b3%e3%83%bb%e3%83%af%e3%83%88/">
								<span class="byo-article-navigation__label">次の記事 →</span>
								<span class="byo-article-navigation__title">クリーブランド・ブラウンズ、デショーン・ワトソンとの2億3000万ドルの契約で重大な決定を下す</span>
							</a>
											</div>
				</nav>
					</article>
	</main>


	</div>
</div>

		<section class="byo-newsroom-footer-links" aria-label="Nipponese News">
			<div class="byo-newsroom-wrap">
				<div class="byo-newsroom-footer-links__brand">Nipponese News</div>
									<nav>
													<a href="https://www.nipponese.news/about-us/">About Us</a>
													<a href="https://www.nipponese.news/contact/">Contact</a>
													<a href="https://www.nipponese.news/style-guide/">Style Guide</a>
													<a href="https://www.nipponese.news/privacy-policy/">Privacy Policy</a>
											</nav>
							</div>
		</section>
		
<div class="site-footer">
			<footer class="site-info" aria-label="Site"  itemtype="https://schema.org/WPFooter" itemscope>
			<div class="inside-site-info grid-container">
								<div class="copyright-bar">
					© 2026 Nipponese News. All rights reserved.				<br><span class="byo-footer-contact">お問い合わせ・広告・著作権・不具合に関するご連絡は office@nipponese.news までメールでお願いします。</span></div>
			</div>
		</footer>
		</div>

<a title="Scroll back to top" aria-label="Scroll back to top" rel="nofollow" href="#" class="generate-back-to-top" data-scroll-speed="400" data-start-scroll="300" role="button">
					<span class="gp-icon icon-arrow-up"><svg viewBox="0 0 330 512" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M305.863 314.916c0 2.266-1.133 4.815-2.832 6.514l-14.157 14.163c-1.699 1.7-3.964 2.832-6.513 2.832-2.265 0-4.813-1.133-6.512-2.832L164.572 224.276 53.295 335.593c-1.699 1.7-4.247 2.832-6.512 2.832-2.265 0-4.814-1.133-6.513-2.832L26.113 321.43c-1.699-1.7-2.831-4.248-2.831-6.514s1.132-4.816 2.831-6.515L158.06 176.408c1.699-1.7 4.247-2.833 6.512-2.833 2.265 0 4.814 1.133 6.513 2.833L303.03 308.4c1.7 1.7 2.832 4.249 2.832 6.515z" fill-rule="nonzero" /></svg></span>
				</a><script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/byo-newsroom/*","/wp-content/themes/generatepress/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<!-- Default Statcounter code for nipponese
http://www.nipponese.news/ -->
<script type="text/javascript">
var sc_project=12695711; 
var sc_invisible=1; 
var sc_security="6ab6c765"; 
</script>
<script type="text/javascript"
src="https://www.statcounter.com/counter/counter.js"
async></script>
<noscript><div class="statcounter"><a title="Web Analytics"
href="https://statcounter.com/" target="_blank"><img
class="statcounter"
src="https://c.statcounter.com/12695711/0/6ab6c765/1/"
alt="Web Analytics"
referrerPolicy="no-referrer-when-downgrade"></a></div></noscript>
<!-- End of Statcounter Code -->
<!-- Public Byoviral.com Tracking code -->
<script src="https://www.byoviral.com/badge/script?domain=nipponese.news" async defer></script>
<!-- End of Byoviral Code --><script id="generate-a11y">
!function(){"use strict";if("querySelector"in document&&"addEventListener"in window){var e=document.body;e.addEventListener("pointerdown",(function(){e.classList.add("using-mouse")}),{passive:!0}),e.addEventListener("keydown",(function(){e.classList.remove("using-mouse")}),{passive:!0})}}();
</script>
	<div class="gp-modal gp-search-modal" id="gp-search" role="dialog" aria-modal="true" aria-label="Search">
		<div class="gp-modal__overlay" tabindex="-1" data-gpmodal-close>
			<div class="gp-modal__container">
					<form role="search" method="get" class="search-modal-form" action="https://www.nipponese.news/">
		<label for="search-modal-input" class="screen-reader-text">Search for:</label>
		<div class="search-modal-fields">
			<input id="search-modal-input" type="search" class="search-field" placeholder="Search …" value="" name="s" />
			<button aria-label="Search"><span class="gp-icon icon-search"><svg viewBox="0 0 512 512" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em"><path fill-rule="evenodd" clip-rule="evenodd" d="M208 48c-88.366 0-160 71.634-160 160s71.634 160 160 160 160-71.634 160-160S296.366 48 208 48zM0 208C0 93.125 93.125 0 208 0s208 93.125 208 208c0 48.741-16.765 93.566-44.843 129.024l133.826 134.018c9.366 9.379 9.355 24.575-.025 33.941-9.379 9.366-24.575 9.355-33.941-.025L337.238 370.987C301.747 399.167 256.839 416 208 416 93.125 416 0 322.875 0 208z" /></svg></span></button>
		</div>
			</form>
				</div>
		</div>
	</div>
	
	<script type="text/javascript">
		window.WPCOM_sharing_counts = {"https://www.nipponese.news/html-zip-png-%e5%a4%9a%e8%a8%80%e8%aa%9e%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ae%e4%bd%9c%e6%88%90%e6%96%b9%e6%b3%95/":4105317};
	</script>
				<script id="force-refresh-js-js-extra">
var forceRefreshLocalizedData = {"apiEndpoint":"https://www.nipponese.news/wp-json/force-refresh/v1/current-version","postId":"4105317","isDebugActive":"","refreshInterval":"120","featureFlags":{"scheduledRefresh":true,"troubleshootingTerminal":false,"troubleshootingSubmitDebug":true},"versionFileUrl":null};
//# sourceURL=force-refresh-js-js-extra
</script>
<script id="force-refresh-js-js" src="https://www.nipponese.news/wp-content/plugins/force-refresh/dist/js/force-refresh.js?ver=1785693408"></script>
<script id="generate-menu-js-before">
var generatepressMenu = {"toggleOpenedSubMenus":true,"openSubMenuLabel":"Open Sub-Menu","closeSubMenuLabel":"Close Sub-Menu"};
//# sourceURL=generate-menu-js-before
</script>
<script id="generate-menu-js" src="https://www.nipponese.news/wp-content/themes/generatepress/assets/js/menu.min.js?ver=3.6.1"></script>
<script id="generate-modal-js" src="https://www.nipponese.news/wp-content/themes/generatepress/assets/dist/modal.js?ver=3.6.1"></script>
<script id="generate-navigation-search-js-before">
var generatepressNavSearch = {"open":"Open Search Bar","close":"Close Search Bar"};
//# sourceURL=generate-navigation-search-js-before
</script>
<script id="generate-navigation-search-js" src="https://www.nipponese.news/wp-content/themes/generatepress/assets/js/navigation-search.min.js?ver=3.6.1"></script>
<script id="generate-back-to-top-js-before">
var generatepressBackToTop = {"smooth":true};
//# sourceURL=generate-back-to-top-js-before
</script>
<script id="generate-back-to-top-js" src="https://www.nipponese.news/wp-content/themes/generatepress/assets/js/back-to-top.min.js?ver=3.6.1"></script>
<script async data-wp-strategy="async" fetchpriority="low" id="comment-reply-js" src="https://c0.wp.com/c/7.0.4/wp-includes/js/comment-reply.min.js"></script>
<script id="jetpack-stats-js-before">
_stq = window._stq || [];
_stq.push([ "view", {"v":"ext","blog":"201233194","post":"4105317","tz":"0","srv":"www.nipponese.news","j":"1:16.1"} ]);
_stq.push([ "clickTrackerInit", "201233194", "4105317" ]);
//# sourceURL=jetpack-stats-js-before
</script>
<script data-wp-strategy="defer" defer fetchpriority="low" id="jetpack-stats-js" src="https://stats.wp.com/e-202633.js"></script>
<script id="sharing-js-js-extra">
var sharing_js_options = {"lang":"en","counts":"1","is_stats_active":"1"};
//# sourceURL=sharing-js-js-extra
</script>
<script id="sharing-js-js" src="https://c0.wp.com/p/jetpack/16.1/_inc/build/sharedaddy/sharing.min.js"></script>
<script id="sharing-js-js-after">
var windowOpen;
			( function () {
				function matches( el, sel ) {
					return !! (
						el.matches && el.matches( sel ) ||
						el.msMatchesSelector && el.msMatchesSelector( sel )
					);
				}

				document.body.addEventListener( 'click', function ( event ) {
					if ( ! event.target ) {
						return;
					}

					var el;
					if ( matches( event.target, 'a.share-facebook' ) ) {
						el = event.target;
					} else if ( event.target.parentNode && matches( event.target.parentNode, 'a.share-facebook' ) ) {
						el = event.target.parentNode;
					}

					if ( el ) {
						event.preventDefault();

						// If there's another sharing window open, close it.
						if ( typeof windowOpen !== 'undefined' ) {
							windowOpen.close();
						}
						windowOpen = window.open( el.getAttribute( 'href' ), 'wpcomfacebook', 'menubar=1,resizable=1,width=600,height=400' );
						return false;
					}
				} );
			} )();
var windowOpen;
			( function () {
				function matches( el, sel ) {
					return !! (
						el.matches && el.matches( sel ) ||
						el.msMatchesSelector && el.msMatchesSelector( sel )
					);
				}

				document.body.addEventListener( 'click', function ( event ) {
					if ( ! event.target ) {
						return;
					}

					var el;
					if ( matches( event.target, 'a.share-x' ) ) {
						el = event.target;
					} else if ( event.target.parentNode && matches( event.target.parentNode, 'a.share-x' ) ) {
						el = event.target.parentNode;
					}

					if ( el ) {
						event.preventDefault();

						// If there's another sharing window open, close it.
						if ( typeof windowOpen !== 'undefined' ) {
							windowOpen.close();
						}
						windowOpen = window.open( el.getAttribute( 'href' ), 'wpcomx', 'menubar=1,resizable=1,width=600,height=350' );
						return false;
					}
				} );
			} )();
//# sourceURL=sharing-js-js-after
</script>
<script id="wp-emoji-settings" type="application/json">
{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://www.nipponese.news/wp-includes/js/wp-emoji-release.min.js?ver=7.0.4"}}
</script>
<script type="module">
/*! This file is auto-generated */
var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
//# sourceURL=https://www.nipponese.news/wp-includes/js/wp-emoji-loader.min.js
</script>

</body>
</html>
<!--
Performance optimized by Redis Object Cache. Learn more: https://wprediscache.com

Retrieved 2593 objects (1 MB) from Redis using PhpRedis (v6.3.0).
-->


<!-- Page cached by LiteSpeed Cache 7.9 on 2026-08-12 16:25:28 -->