

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Script &#8211; MaxCodeReview</title>
	<atom:link href="https://codereview.max-everyday.com/tag/script/feed/" rel="self" type="application/rss+xml" />
	<link>https://codereview.max-everyday.com</link>
	<description>分享Max收集的小程式</description>
	<lastBuildDate>Fri, 26 Dec 2025 13:29:18 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://codereview.max-everyday.com/wp-content/uploads/2020/07/cropped-logo1_x512-32x32.jpg</url>
	<title>Script &#8211; MaxCodeReview</title>
	<link>https://codereview.max-everyday.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>字型(.ttf) / Web Font (.woff2) / FontForge專案(.sfdir) 互轉</title>
		<link>https://codereview.max-everyday.com/font-to-fontforge/</link>
		
		<dc:creator><![CDATA[max-code-review-usr1]]></dc:creator>
		<pubDate>Sun, 02 Aug 2020 16:25:07 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[字體]]></category>
		<category><![CDATA[Command]]></category>
		<category><![CDATA[Font]]></category>
		<category><![CDATA[FontForge]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Shell]]></category>
		<guid isPermaLink="false">https://codereview.max-everyday.com/?p=1241</guid>

					<description><![CDATA[為什麼要學這個？ 透過 FontForge  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">為什麼要學這個？</h2>



<p>透過 FontForge 開啟，並另存專案為資料夾格式(.sfdir)，除了手動去操作之外，也可以使用腳本來做。如果透過指令來做會更有效率的話，當然要使用指令來做。</p>



<hr class="wp-block-separator has-css-opacity"/>



<h2 class="wp-block-heading">實作步驟</h2>



<p>使用前，需要先安裝FontForge，透過執行FontForge的腳本(Script)可以在指令行的模式下，合併2個字體檔案。</p>



<p>FontForge執行檔下載：<br><a href="https://fontforge.org/en-US/">https://fontforge.org/en-US/</a></p>



<p>Max腳本檔案，轉成FontForge (all font format to .sfdir)下載：<br><a href="https://github.com/max32002/MaxFontScripts/blob/master/save_as.py">https://github.com/max32002/MaxFontScripts/blob/master/save_as.py</a></p>



<p>Max腳本檔案，轉成字體檔 (all font format to .ttf/.otf/.svg/.woff/.woff2)下載：<br><a href="https://github.com/max32002/MaxFontScripts/blob/master/generate.py">https://github.com/max32002/MaxFontScripts/blob/master/generate.py</a></p>



<hr class="wp-block-separator has-css-opacity"/>



<h2 class="wp-block-heading">使用範例</h2>



<p>把 source.ttf 轉換為 target.sfdir</p>



<pre class="wp-block-code"><code>fontforge save_as.py -i source.ttf -o target.sfdir</code></pre>



<p>把 source.ttf 轉換為 target.woff2</p>



<pre class="wp-block-code"><code>fontforge generate.py -i source.ttf -o target.woff2</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">檔案說明</h2>



<ul class="wp-block-list">
<li><strong>generate.py</strong><br>讀取字體並匯出為 .ttf / .woff2</li>



<li><strong>save_as.py</strong><br>讀取字體並產成為 fontforge 專案資料夾 .sfdir<br></li>
</ul>



<p></p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="1024" src="https://codereview.max-everyday.com/wp-content/uploads/2020/08/Screen-Shot-2020-08-03-at-00.23.53-1024x1024.png?v=1596385479" alt="" class="wp-image-1246" srcset="https://codereview.max-everyday.com/wp-content/uploads/2020/08/Screen-Shot-2020-08-03-at-00.23.53-1024x1024.png?v=1596385479 1024w, https://codereview.max-everyday.com/wp-content/uploads/2020/08/Screen-Shot-2020-08-03-at-00.23.53-300x300.png?v=1596385479 300w, https://codereview.max-everyday.com/wp-content/uploads/2020/08/Screen-Shot-2020-08-03-at-00.23.53-150x150.png?v=1596385479 150w, https://codereview.max-everyday.com/wp-content/uploads/2020/08/Screen-Shot-2020-08-03-at-00.23.53-768x768.png?v=1596385479 768w, https://codereview.max-everyday.com/wp-content/uploads/2020/08/Screen-Shot-2020-08-03-at-00.23.53-640x640.png?v=1596385479 640w, https://codereview.max-everyday.com/wp-content/uploads/2020/08/Screen-Shot-2020-08-03-at-00.23.53-50x50.png?v=1596385479 50w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<hr class="wp-block-separator has-css-opacity"/>



<h2 class="wp-block-heading">MaxCodeReview 影片</h2>



<p>Youtube：<a href="https://youtu.be/9-0WHjjfOgU">https://youtu.be/9-0WHjjfOgU</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="「字體」與「FontForge專案」互轉" width="1170" height="658" src="https://www.youtube.com/embed/9-0WHjjfOgU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<hr class="wp-block-separator has-css-opacity"/>



<h2 class="wp-block-heading">相關文章：</h2>



<ul class="wp-block-list">
<li>轉換字型為webfont<br><a href="https://stackoverflow.max-everyday.com/2020/08/convert-ttf-to-webfont/">https://stackoverflow.max-everyday.com/2020/08/convert-ttf-to-webfont/</a></li>



<li>如何製作「字體預覽」的網頁功能<br><a href="https://codereview.max-everyday.com/webfont-preview-textarea/">https://codereview.max-everyday.com/webfont-preview-textarea/</a></li>
</ul>



<p></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>透過指令合併2個字體檔案</title>
		<link>https://codereview.max-everyday.com/merge-font/</link>
		
		<dc:creator><![CDATA[max-code-review-usr1]]></dc:creator>
		<pubDate>Wed, 29 Jul 2020 00:20:11 +0000</pubDate>
				<category><![CDATA[字體]]></category>
		<category><![CDATA[Command]]></category>
		<category><![CDATA[Font]]></category>
		<category><![CDATA[FontForge]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Shell]]></category>
		<guid isPermaLink="false">http://codereview.max-everyday.com/?p=1</guid>

					<description><![CDATA[為什麼要學這個？ 如果透過指令來做會更有效率 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="1024" src="https://codereview.max-everyday.com/wp-content/uploads/2020/08/merge_font-1024x1024.jpg?v=1597073599" alt="" class="wp-image-1312" srcset="https://codereview.max-everyday.com/wp-content/uploads/2020/08/merge_font.jpg?v=1597073599 1024w, https://codereview.max-everyday.com/wp-content/uploads/2020/08/merge_font-300x300.jpg?v=1597073599 300w, https://codereview.max-everyday.com/wp-content/uploads/2020/08/merge_font-150x150.jpg?v=1597073599 150w, https://codereview.max-everyday.com/wp-content/uploads/2020/08/merge_font-768x768.jpg?v=1597073599 768w, https://codereview.max-everyday.com/wp-content/uploads/2020/08/merge_font-640x640.jpg?v=1597073599 640w, https://codereview.max-everyday.com/wp-content/uploads/2020/08/merge_font-830x830.jpg?v=1597073599 830w, https://codereview.max-everyday.com/wp-content/uploads/2020/08/merge_font-230x230.jpg?v=1597073599 230w, https://codereview.max-everyday.com/wp-content/uploads/2020/08/merge_font-350x350.jpg?v=1597073599 350w, https://codereview.max-everyday.com/wp-content/uploads/2020/08/merge_font-480x480.jpg?v=1597073599 480w, https://codereview.max-everyday.com/wp-content/uploads/2020/08/merge_font-50x50.jpg?v=1597073599 50w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">為什麼要學這個？</h2>



<p>如果透過指令來做會更有效率的話，當然要使用指令來做。這個指令還滿常使用到的，因為字體常常在補字，一定會用到合併的功能。</p>



<p>GUI 的操作參考使用下面的這篇分享：合併字型較安全的方法<br><a href="https://codereview.max-everyday.com/a-safer-way-to-merge-fonts/">https://codereview.max-everyday.com/a-safer-way-to-merge-fonts/</a></p>



<p>這篇教學示範2個解法: </p>



<ul class="wp-block-list">
<li>解法1: 透過 fontforge + .pe 檔.</li>



<li>解法2: python + fonttool</li>
</ul>



<hr class="wp-block-separator has-css-opacity"/>



<h2 class="wp-block-heading">解法1: 透過 fontforge + .pe 檔.</h2>



<p>使用前，需要先安裝FontForge，透過執行FontForge的腳本(Script)可以在指令行的模式下，合併2個字體檔案。</p>



<p>FontForge執行檔下載：<br><a href="https://fontforge.org/en-US/">https://fontforge.org/en-US/</a></p>



<p>Max腳本檔案下載：<br><a href="https://github.com/max32002/MaxFontScripts/blob/master/merge_font.pe">https://github.com/max32002/MaxFontScripts/blob/master/merge_font.pe</a></p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="797" src="https://codereview.max-everyday.com/wp-content/uploads/2020/08/Screen-Shot-2020-08-01-at-15.56.37b-1024x797.png" alt="" class="wp-image-28"/></figure>



<p>MaxCodeReview 影片：<br><a href="https://youtu.be/SFCf50iiQbs">https://youtu.be/SFCf50iiQbs</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">解法1使用範例</h2>



<pre class="wp-block-code"><code>merge_font.pe main.ttf added.ttf outout.sfdir</code></pre>



<p>說明：前二個參數，由於是使用 FontForge 去開啟，不限於 .ttf 或 .sfdir 格式，都可以被順利開啟。</p>



<p>第三個參數，目前的腳本固定要使用  .sfdir 格式，因為是使用 Save() 指令，如果是要產生成 .ttf 要改用 Generate().</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">解法2: python + fonttool</h2>



<p>Max腳本檔案下載：<br><a href="https://github.com/max32002/MaxFontScripts/blob/master/merge_font.py">https://github.com/max32002/MaxFontScripts/blob/master/merge_font.py</a></p>



<p>使用範例:</p>



<pre class="wp-block-code"><code>python merge_font.py --font1 font1.ttf --font2 font2.ttf --output font3.ttf</code></pre>



<p>執行畫面:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1254" height="205" src="https://codereview.max-everyday.com/wp-content/uploads/2020/07/2025-01-24_14-05_5l.jpg?v=1737698768" alt="" class="wp-image-1705" srcset="https://codereview.max-everyday.com/wp-content/uploads/2020/07/2025-01-24_14-05_5l.jpg?v=1737698768 1254w, https://codereview.max-everyday.com/wp-content/uploads/2020/07/2025-01-24_14-05_5l-1000x163.jpg?v=1737698768 1000w, https://codereview.max-everyday.com/wp-content/uploads/2020/07/2025-01-24_14-05_5l-230x38.jpg?v=1737698768 230w, https://codereview.max-everyday.com/wp-content/uploads/2020/07/2025-01-24_14-05_5l-350x57.jpg?v=1737698768 350w, https://codereview.max-everyday.com/wp-content/uploads/2020/07/2025-01-24_14-05_5l-480x78.jpg?v=1737698768 480w" sizes="(max-width: 1254px) 100vw, 1254px" /></figure>



<p>使用這個解法, 比較方便與安全, 缺點就是合併完的檔案, 在作業系統雖然可以使用, 但無法被 fontforge 開啟.</p>



<p>當 font1 與 font2 同時都有的字元, 會以 font2 被保留下來, 理論上應該是, 但實際上, 有時候會以 font2 為主, 有時候並不會被取代.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">相關網頁</h2>



<p>FontForge Scripting Tutorial<br><a href="https://fontforge.org/docs/tutorial/scripting-tutorial.html">https://fontforge.org/docs/tutorial/scripting-tutorial.html</a></p>



<p></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
