

<?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>FontForge &#8211; Max的程式語言筆記</title>
	<atom:link href="https://stackoverflow.max-everyday.com/tag/fontforge/feed/" rel="self" type="application/rss+xml" />
	<link>https://stackoverflow.max-everyday.com</link>
	<description>我要當一個豬頭，快樂過每一天</description>
	<lastBuildDate>Mon, 19 Jan 2026 20:05:31 +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://stackoverflow.max-everyday.com/wp-content/uploads/2017/02/max-stackoverflow-256.png</url>
	<title>FontForge &#8211; Max的程式語言筆記</title>
	<link>https://stackoverflow.max-everyday.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>OTS parsing error: Failed to convert WOFF 2.0 font to SFNT</title>
		<link>https://stackoverflow.max-everyday.com/2026/01/ots-parsing-error-failed-to-convert-woff-2-0-font-to-sfnt/</link>
					<comments>https://stackoverflow.max-everyday.com/2026/01/ots-parsing-error-failed-to-convert-woff-2-0-font-to-sfnt/#respond</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Mon, 19 Jan 2026 20:05:30 +0000</pubDate>
				<category><![CDATA[電腦相關應用]]></category>
		<category><![CDATA[FontForge]]></category>
		<guid isPermaLink="false">https://stackoverflow.max-everyday.com/?p=7651</guid>

					<description><![CDATA[遇到這個問題, 真的很玄, 同時做了3個語系(c...]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="981" height="355" src="https://stackoverflow.max-everyday.com/wp-content/uploads/2026/01/2026-01-20_03-51_lf.jpg?v=1768852344" alt="" class="wp-image-7652" srcset="https://stackoverflow.max-everyday.com/wp-content/uploads/2026/01/2026-01-20_03-51_lf.jpg?v=1768852344 981w, https://stackoverflow.max-everyday.com/wp-content/uploads/2026/01/2026-01-20_03-51_lf-600x217.jpg?v=1768852344 600w, https://stackoverflow.max-everyday.com/wp-content/uploads/2026/01/2026-01-20_03-51_lf-768x278.jpg?v=1768852344 768w" sizes="(max-width: 981px) 100vw, 981px" /></figure>



<p>遇到這個問題, 真的很玄, 同時做了3個語系(cjk jp/ cjk tc / cjk sc), 字元數目在這3個語系是一樣多, 產生的檔案檔大小, 不確定是不是因為先刪掉原本 cjk jp 的字, 再使用 merge 匯入新造的字, 誤刪了一些被 alt 進行引用的字, 所以產生出來的 woff2 是錯誤的.</p>



<p>神奇的是, 直接 convert 成 woff 格式, 檔案又是正常的.</p>



<p>改用 fontforge 以外的工具進行 woff2 格式轉換, 結果也一樣.</p>



<p>最快的懶人解法, 是只匯出特定範圍的字元到 woff2, 就解決了:</p>



<pre class="wp-block-code"><code>pyftsubset MarukoGothic.ttf ^
--unicodes="U+0000-007F,U+00A0-00FF,U+2000-206F,U+3000-303F,U+3040-309F,U+30A0-30FF,U+4E00-9FFF,U+FF00-FFEF" ^
--flavor=woff2 ^
--layout-features="*" ^
--output-file=MarukoGothic_optimized.woff2</code></pre>



<p>詳細說明: TTF 轉 WOFF2 工具<br><a href="https://codereview.max-everyday.com/ttf-to-woff2/">https://codereview.max-everyday.com/ttf-to-woff2/</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2026/01/ots-parsing-error-failed-to-convert-woff-2-0-font-to-sfnt/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>FontForge 合併字型造成設定錯亂</title>
		<link>https://stackoverflow.max-everyday.com/2022/09/fontforge-font-pros-settings-wrong/</link>
					<comments>https://stackoverflow.max-everyday.com/2022/09/fontforge-font-pros-settings-wrong/#respond</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Sun, 04 Sep 2022 16:34:13 +0000</pubDate>
				<category><![CDATA[電腦相關應用]]></category>
		<category><![CDATA[FontForge]]></category>
		<guid isPermaLink="false">https://stackoverflow.max-everyday.com/?p=4099</guid>

					<description><![CDATA[最近在處理一個字型，不知道為什麼常常在合併別人的...]]></description>
										<content:encoded><![CDATA[
<p>最近在處理一個字型，不知道為什麼常常在合併別人的字型之後，造成神奇的錯誤訊息，例如：</p>



<pre class="wp-block-preformatted">Attempt to output 65550 into a 16-bit field. It will be truncated and the file may not be useful.</pre>



<p>但實際上，字數並沒有這麼多，而且 font.props 居然長大了 1萬5千行，不知道那裡來的神奇設定值，使用線上文字比對：</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="654" src="https://stackoverflow.max-everyday.com/wp-content/uploads/2022/09/Screen-Shot-2022-09-05-at-12.21.28-AM-1024x654.png?v=1662308951" alt="" class="wp-image-4100" srcset="https://stackoverflow.max-everyday.com/wp-content/uploads/2022/09/Screen-Shot-2022-09-05-at-12.21.28-AM-1024x654.png?v=1662308951 1024w, https://stackoverflow.max-everyday.com/wp-content/uploads/2022/09/Screen-Shot-2022-09-05-at-12.21.28-AM-600x383.png?v=1662308951 600w, https://stackoverflow.max-everyday.com/wp-content/uploads/2022/09/Screen-Shot-2022-09-05-at-12.21.28-AM-768x490.png?v=1662308951 768w, https://stackoverflow.max-everyday.com/wp-content/uploads/2022/09/Screen-Shot-2022-09-05-at-12.21.28-AM.png?v=1662308951 1381w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>字型名稱的 LangName 欄位內容也被弄不見了。</p>



<p>解法，遇到出問題時，拿舊版的出來覆蓋過去就可以了。</p>



<p>分享這篇的重點：沒想到正常的操作之下，會有這樣子的錯誤發生。</p>



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



<h2 class="wp-block-heading">相關討論</h2>



<ul class="wp-block-list">
<li>Lookup removal related &#8220;Attempt to output n into a 16-bit field.&#8221; failure<br><a href="https://github.com/fontforge/fontforge/issues/5228">https://github.com/fontforge/fontforge/issues/5228</a></li>



<li>移除字型檔的 lookups<br><a href="https://codereview.max-everyday.com/remove_lookups/">https://codereview.max-everyday.com/remove_lookups/</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2022/09/fontforge-font-pros-settings-wrong/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>苦累蛙圓體修正錯字示範</title>
		<link>https://stackoverflow.max-everyday.com/2021/07/correct-font-glyph-error/</link>
					<comments>https://stackoverflow.max-everyday.com/2021/07/correct-font-glyph-error/#respond</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Fri, 02 Jul 2021 10:16:39 +0000</pubDate>
				<category><![CDATA[電腦相關應用]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[FontForge]]></category>
		<guid isPermaLink="false">https://stackoverflow.max-everyday.com/?p=3821</guid>

					<description><![CDATA[這篇文章示範字體檔案的某一個單字的修改，透過自動...]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img decoding="async" width="773" height="469" src="https://stackoverflow.max-everyday.com/wp-content/uploads/2021/07/correct-font-glyph-error-cover.jpg" alt="" class="wp-image-3824" srcset="https://stackoverflow.max-everyday.com/wp-content/uploads/2021/07/correct-font-glyph-error-cover.jpg?v=1625220678 773w, https://stackoverflow.max-everyday.com/wp-content/uploads/2021/07/correct-font-glyph-error-cover-600x364.jpg?v=1625220678 600w, https://stackoverflow.max-everyday.com/wp-content/uploads/2021/07/correct-font-glyph-error-cover-768x466.jpg?v=1625220678 768w" sizes="(max-width: 773px) 100vw, 773px" /></figure>



<p>這篇文章示範字體檔案的某一個單字的修改，透過自動化的方式，簡化手動去操作FontForge，可以提升更多的效率。影片示範重點為：</p>



<ol class="wp-block-list">
<li><strong>取出字體檔特定的文字</strong><br>copy selected glyph out, ex command:<br><code>copy_selected_out.py --input KurewaGothicCjkTc-Regular.sfdir --output new.sfdir --string 揄</code></li>



<li><strong>修改好的點陣圖轉成向量圖格式</strong><br>bmp to svg, ex command:<br><code>potrace -b svg -u 50 orig/U_25540.bmp -o orig/U_25540.bmp.svg</code></li>



<li><strong>svg 匯入字體檔案</strong><br>import svg to font, ex command:<br><code>fontforge ~/Documents/sh/import_svg.py --input new.sfdir --svg_path orig --filename_pattern="U_%s.bmp.svg" --filename_source=unicode_int</code></li>
</ol>



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



<p>Youtube 影片：苦累蛙圓體修正錯字示範<br><a href="https://youtu.be/26ENvQD50cA">https://youtu.be/26ENvQD50cA</a></p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="苦累蛙圓體修正錯字示範" width="640" height="480" src="https://www.youtube.com/embed/26ENvQD50cA?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>



<p>Max學習字體的筆記<br><a href="https://codereview.max-everyday.com/font-readme/">https://codereview.max-everyday.com/font-readme/</a></p>



<p>字型轉圖片 font to image<br><a href="https://codereview.max-everyday.com/font-to-image/">https://codereview.max-everyday.com/font-to-image/</a></p>



<p>dumping SVG outlines into a FontForge file<br><a href="https://stackoverflow.max-everyday.com/2021/06/dumping-svg-outlines-into-a-fontforge-file/">https://stackoverflow.max-everyday.com/2021/06/dumping-svg-outlines-into-a-fontforge-file/</a></p>



<p>苦累蛙圓體 Kurewa Gothic<br><a href="https://max-everyday.com/2021/06/kurewa-gothic/">https://max-everyday.com/2021/06/kurewa-gothic/</a></p>



<p>苦累蛙圓體下載點<br><a href="https://github.com/max32002/kurewa-gothic">https://github.com/max32002/kurewa-gothic</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2021/07/correct-font-glyph-error/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>dumping SVG outlines into a FontForge file</title>
		<link>https://stackoverflow.max-everyday.com/2021/06/dumping-svg-outlines-into-a-fontforge-file/</link>
					<comments>https://stackoverflow.max-everyday.com/2021/06/dumping-svg-outlines-into-a-fontforge-file/#respond</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Thu, 10 Jun 2021 11:02:34 +0000</pubDate>
				<category><![CDATA[Python筆記]]></category>
		<category><![CDATA[FontForge]]></category>
		<guid isPermaLink="false">https://stackoverflow.max-everyday.com/?p=3797</guid>

					<description><![CDATA[把 svg 檔案批次的方式，匯入字體檔案裡，滿實...]]></description>
										<content:encoded><![CDATA[
<p>把 svg 檔案批次的方式，匯入字體檔案裡，滿實用的功能，省下很多手動操作的時間，簡易的範例：<br><a href="https://stackoverflow.com/questions/22124130/import-a-sequence-of-svg-files-into-fontforge-as-glyphs-and-output-a-font-file">https://stackoverflow.com/questions/22124130/import-a-sequence-of-svg-files-into-fontforge-as-glyphs-and-output-a-font-file</a></p>



<pre class="wp-block-code"><code>import fontforge
font = fontforge.open('blank.sfd')
glyph = font.createMappedChar('A')
glyph.importOutlines('sourceimg.svg')
font.generate('testfont.ttf')</code></pre>



<hr class="wp-block-separator"/>



<p>進階範例：<br><a href="https://gist.github.com/psmay/fd3e7e91893f6012b262">https://gist.github.com/psmay/fd3e7e91893f6012b262</a></p>



<pre class="wp-block-code"><code>import fontforge
#fontforge.loadNameList('aglfn.txt') # Might be optional

#font = fontforge.open('existing.sfd')
font = fontforge.font() # new font

glyphNameAndOutlineFilename = {
    ('A', 'capital-a-glyph.svg'),
    ('Adieresis', 'capital-adieresis-glyph.svg'),
    ...
}

#characterAndOutlineFilename = {
#   ('A', 'capital-a-glyph.svg'),
#   ('Ä', 'capital-adieresis-glyph.svg'),
#   ...
#}

for name, filename in glyphNameAndOutlineFilename:
    glyph = font.createMappedChar(name)
    glyph.importOutlines(filename)
    # May need to set glyph.width here

#for c, filename in characterAndOutlineFilename:
#   glyph = font.createChar(ord(c))
#   glyph.importOutlines(filename)
#   # May need to set glyph.width here

#font.generate('output-font.ttf')
font.save('output-font.sfd')</code></pre>



<hr class="wp-block-separator"/>



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



<p>向量檔匯入字體檔<br><a href="https://codereview.max-everyday.com/import-svg-to-font/">https://codereview.max-everyday.com/import-svg-to-font/</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2021/06/dumping-svg-outlines-into-a-fontforge-file/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>點陣圖片轉成向量的字型檔</title>
		<link>https://stackoverflow.max-everyday.com/2020/12/bmp-2-ttf/</link>
					<comments>https://stackoverflow.max-everyday.com/2020/12/bmp-2-ttf/#respond</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Wed, 30 Dec 2020 19:28:43 +0000</pubDate>
				<category><![CDATA[Python筆記]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[FontForge]]></category>
		<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">http://stackoverflow.max-everyday.com/?p=3667</guid>

					<description><![CDATA[這篇文章的目的是把點陣圖片(.bmp 或 .pn...]]></description>
										<content:encoded><![CDATA[
<p>這篇文章的目的是把點陣圖片(.bmp 或 .png) 產生成一個字型檔，原來滿簡單的，網路上有很多驗證過且完整的解法。</p>



<p>相關網頁：</p>



<ul class="wp-block-list"><li>妄想者造字记<br><a href="https://zhuanlan.zhihu.com/p/23607678">https://zhuanlan.zhihu.com/p/23607678</a></li><li>中文像素字体制作<br><a href="https://indienova.com/u/hata/blogread/26923">https://indienova.com/u/hata/blogread/26923</a></li><li>Converting rasters to SVG, and creating a rudimentary font with font-forge &#8211; Part 4 of an XKCD font saga<br><a href="https://pelson.github.io/2017/xkcd_font_raster_to_vector_and_basic_font_creation/">https://pelson.github.io/2017/xkcd_font_raster_to_vector_and_basic_font_creation/</a></li><li>字体生成小记<br><a href="http://www.shushilvshe.com/data/font-build.html">http://www.shushilvshe.com/data/font-build.html</a></li><li>幫字型檔補缺字<br><a href="https://max-everyday.com/2020/02/how-to-add-new-glyph-to-font/">https://max-everyday.com/2020/02/how-to-add-new-glyph-to-font/</a></li></ul>



<hr class="wp-block-separator"/>



<p>最後成功後的執行畫面：</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="644" height="469" src="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/12/Screen-Shot-2020-12-31-at-00.13.33.png" alt="" class="wp-image-3669" srcset="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/12/Screen-Shot-2020-12-31-at-00.13.33.png?v=1609351666 644w, https://stackoverflow.max-everyday.com/wp-content/uploads/2020/12/Screen-Shot-2020-12-31-at-00.13.33-600x437.png?v=1609351666 600w" sizes="auto, (max-width: 644px) 100vw, 644px" /></figure>



<p>上面圖片裡的「桌」是前一篇文章的產物，參考看看：<br>Python 在圖像上輸出文字<br><a href="https://stackoverflow.max-everyday.com/2020/12/python-draw-text/">https://stackoverflow.max-everyday.com/2020/12/python-draw-text/</a></p>



<p>有了 bmp 檔案後，要怎麼變成字型檔案呢？常見的解法是先用 potrace,Inkscape,autotrace 自動描邊的軟體把圖片轉成向量格式，手動的指令可以參考看看：</p>



<p>Looking at the&nbsp;<code>potrace</code>&nbsp;website you can apparently go directly from BMP to SVG.</p>



<pre class="wp-block-code"><code>$ potrace -s input.bmp -o output.svg
</code></pre>



<h3 class="wp-block-heading">autotrace</h3>



<p>Another option to&nbsp;<code>potrace</code>&nbsp;is&nbsp;<a href="http://autotrace.sourceforge.net/"><code>autotrace</code></a>.</p>



<pre class="wp-block-code"><code>$ autotrace -output-file ouput.svg -output-format svg --color-count 4 input.bmp
</code></pre>



<p>You&#8217;ll likely have to play with the&nbsp;<code>--color-count</code>&nbsp;to get an image that suites your needs.</p>



<hr class="wp-block-separator"/>



<p>有了 .svg 檔案，可以手動在 fontforge 裡做匯入(import)，當然最理想的作法是寫python腳本程式來自動匯入，才會比較有效率和省時間。</p>



<p>直接使用空的字型檔案，或直接匯入 .svg 都會讓圖片產生偏移，奇怪的是坐標內容是正確的，執行結果：</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="773" height="321" src="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/12/Screen-Shot-2020-12-30-at-19.12.50.png" alt="" class="wp-image-3670" srcset="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/12/Screen-Shot-2020-12-30-at-19.12.50.png?v=1609352172 773w, https://stackoverflow.max-everyday.com/wp-content/uploads/2020/12/Screen-Shot-2020-12-30-at-19.12.50-600x249.png?v=1609352172 600w, https://stackoverflow.max-everyday.com/wp-content/uploads/2020/12/Screen-Shot-2020-12-30-at-19.12.50-768x319.png?v=1609352172 768w" sizes="auto, (max-width: 773px) 100vw, 773px" /></figure>



<p>解決這個問題滿簡單的，不要使用空的字型檔，而是去更新一個要修改的字(.glyph) 就可以解決了，max 的 sample code:<br><a href="https://github.com/max32002/MaxFontScripts/blob/master/bmp2ttf.py">https://github.com/max32002/MaxFontScripts/blob/master/bmp2ttf.py</a></p>



<hr class="wp-block-separator"/>



<pre class="wp-block-preformatted"><code>import os

BMP_PATH = './bmp/'
SVG_PATH = './svg/'
FONT_PROJECT= './myfont.sfdir'
FONT_PATH= './myfont.ttf'

import fontforge
# new font.
#font = fontforge.font()
# open exist font.
print("Open font:", FONT_PROJECT)
font=fontforge.open(FONT_PROJECT)

# prepare environment
if not os.path.exists(BMP_PATH):
    # make dir.
    print('mkdir bmp folder')
    os.system('mkdir -p ' + BMP_PATH)

if not os.path.exists(SVG_PATH):
    # make dir.
    print('mkdir svg folder')
    os.system('mkdir -p ' + SVG_PATH)

print('bmp transform to svg...')

for filename in os.listdir(BMP_PATH):
    bmp_filepath = os.path.join(BMP_PATH, filename)
    svg_filename = filename.replace('.bmp','.svg')
    svg_filepath = os.path.join(SVG_PATH, svg_filename)
    command='potrace -s ' + bmp_filepath + ' -o ' + svg_filepath

    try:
        os.system(command)
    except Exception as e:
        print(e)

print('bmp transform to svg finished, move svg image to svg folder.')


print('generate fonts...')

for filename in os.listdir(SVG_PATH):
    svg = os.path.join(SVG_PATH, filename)
    try:
        #image filename example: "U_001234.svg"
        glyph = font.createChar(int('0x'+filename.split('.')[0][-4:], 16) ,filename.split('.')[0]) 
        
        # force overwrite, must clear before import.
        glyph.clear()
        # if .clear() clean too many infomation, use below code instead.
        #glyph.layers[0] = fontforge.layer()
        #glyph.layers[1] = fontforge.layer()

        glyph.importOutlines(svg)

        #glyph.correctDirection()
        glyph.simplify()
        glyph.round()

    except Exception as e:
        print(e)
    except Error as err:
        print(err)

# not necessary to save, save only for debug purpose.
#font.save(FONT_PROJECT)

font.generate(FONT_PATH)
font.close()

print('generate fonts finished.^_^y')

</code</pre>



<hr class="wp-block-separator"/>



<p>一開始以為 glyph.clear() 會把異體字對應的table清除，實際測試額外的 AltUni2 還有被保留，還沒有去測試 Substitution2 的資料會不會因為 glyph.clear() 造成遺失。</p>



<p>fontforge scripting 官方說明：<br><a href="https://fontforge.org/docs/scripting/python/fontforge.htm">https://fontforge.org/docs/scripting/python/fontforge.htm</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2020/12/bmp-2-ttf/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>在 macOS 使用 FontForge</title>
		<link>https://stackoverflow.max-everyday.com/2020/09/macos-fontforge-command/</link>
					<comments>https://stackoverflow.max-everyday.com/2020/09/macos-fontforge-command/#respond</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Mon, 28 Sep 2020 09:35:20 +0000</pubDate>
				<category><![CDATA[Python筆記]]></category>
		<category><![CDATA[電腦相關應用]]></category>
		<category><![CDATA[FontForge]]></category>
		<guid isPermaLink="false">http://stackoverflow.max-everyday.com/?p=3528</guid>

					<description><![CDATA[由於新的 macOS 的權限設定較嚴格，造成 F...]]></description>
										<content:encoded><![CDATA[
<p>由於新的 macOS 的權限設定較嚴格，造成 FontForge 的執行檔直接執行後，無法直接存取 Documents 資料夾下的檔案。解法是可以直接執行 FontForget app 裡的 fontforge 執行就可以了。</p>



<p>Step 1：下載 FontForge app 後，先移動到  Applications 目錄裡，方便之後執行。</p>



<p>Step 2：在 FontForge app 按右鍵選開啟(Open)，這個動需要做2次，第一次只會顯示「取消」和「移到垃圾桶」2個選項，第二次的開啟，才會有 「Open」的選項可以使用。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="626" height="438" src="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/09/Screen-Shot-2020-09-28-at-5.01.30-PM.png" alt="" class="wp-image-3529" srcset="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/09/Screen-Shot-2020-09-28-at-5.01.30-PM.png?v=1601284312 626w, https://stackoverflow.max-everyday.com/wp-content/uploads/2020/09/Screen-Shot-2020-09-28-at-5.01.30-PM-600x420.png?v=1601284312 600w" sizes="auto, (max-width: 626px) 100vw, 626px" /></figure>



<p>Step 3：在 FontForge App 按右鍵，選擇「Show Package Contents」後，再去點2下 &#8220;Contents&#8221; &#8211; &#8220;MacOS&#8221; 目錄下的 FontForge 執行檔，透過這個方式開啟 FontForge 也可以避開權限的檢查，正常執行 FontForge 的所有功能。</p>



<figure class="wp-block-gallery columns-1 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex"><ul class="blocks-gallery-grid"><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="905" height="549" src="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/09/Screen-Shot-2020-09-28-at-5.14.32-PM.png" alt="" data-id="3530" data-full-url="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/09/Screen-Shot-2020-09-28-at-5.14.32-PM.png?v=1601284500" data-link="https://stackoverflow.max-everyday.com/?attachment_id=3530" class="wp-image-3530" srcset="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/09/Screen-Shot-2020-09-28-at-5.14.32-PM.png?v=1601284500 905w, https://stackoverflow.max-everyday.com/wp-content/uploads/2020/09/Screen-Shot-2020-09-28-at-5.14.32-PM-600x364.png?v=1601284500 600w, https://stackoverflow.max-everyday.com/wp-content/uploads/2020/09/Screen-Shot-2020-09-28-at-5.14.32-PM-768x466.png?v=1601284500 768w" sizes="auto, (max-width: 905px) 100vw, 905px" /></figure></li></ul></figure>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">進階使用FontForge + Python</h2>



<p>如果你想透過 FontForge 的執行檔執行與 python 相關的程式，由於 2020-06-30 後的版本打包的關係，python 3.8 無法使用外部共用的版本，會顯示外部的 modules 不存在，錯誤訊息：</p>



<pre class="wp-block-preformatted"><code>from PIL import Image</code>
ModuleNotFoundError: No module named 'PIL'</pre>



<p>解法，請先找出你的系統裡 python package 的路徑，再把 site-packages 複製一份到 FontForge 的目錄下，例如：</p>



<pre class="wp-block-preformatted">cp -r /usr/local/Cellar/python@3.9/3.9.0_2/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/* /Applications/FontForge.app/Contents/Resources/opt/local/lib/python3.9/site-packages</pre>



<p>需要手動把你 python site-packages 複製一份的 FontForge app 裡後，就可以解決 ModuleNotFoundError 的問題。</p>



<p>由於每個人的版本可能都不同，可以先使用下面的指令來看電腦裡有那些版本可以使用：</p>



<pre class="wp-block-preformatted">ll /usr/local/Cellar/python*</pre>



<p>說明：目前 2020-11月，FontForge 所使用的python 是 3.9版，也許之後會再改版，上面的指令，需要先使用下面指令來看看 FontForge 所使用的Python 版本：</p>



<pre class="wp-block-preformatted">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000} span.s1 {font-variant-ligatures: no-common-ligatures}
ll /Applications/FontForge.app/Contents/Resources/opt/local/lib/</pre>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">透過指令開啟 FontForge</h2>



<p>使用圖形介面操作字型相關的事情是很方便，但比較慢和花時間，大多數 FontForge 的操作都可以改用指令（或批次檔）的腳本來完成，某些情況下，透過指令來進行字體檔案的操作，會更有彈性和效率。</p>



<p>要在指令行裡執行 fontforge 可以執行：</p>



<pre class="wp-block-preformatted">/Applications/FontForge.app/Contents/Resources/opt/local/bin/fontforge</pre>



<p>但是每次都要打這麼長，很麻煩，如果想透過執行  ff  2個單字，就去開啟某一個字體檔，可以先產生 ff 的文字檔，內容如下：</p>



<pre class="wp-block-preformatted">#!/bin/bash
/Applications/FontForge.app/Contents/Resources/opt/local/bin/fontforge "${1}" ${2} ${3} ${4} ${5} ${6} ${7} ${8} ${9}</pre>



<p>透過下面指令讓 ff 檔案變成可以執行 (windows 平台可以使用.bat, 即可執行):</p>



<pre class="wp-block-preformatted"> chmod +x ff </pre>



<p>ff 檔案可以執行後，再搬到 path 上，讓所有的路徑下都可以隨時存取：</p>



<pre class="wp-block-preformatted">mv ff /usr/local/bin/</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2020/09/macos-fontforge-command/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>套用和轉換字型為WebFont</title>
		<link>https://stackoverflow.max-everyday.com/2020/08/convert-ttf-to-webfont/</link>
					<comments>https://stackoverflow.max-everyday.com/2020/08/convert-ttf-to-webfont/#respond</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Sun, 02 Aug 2020 14:26:05 +0000</pubDate>
				<category><![CDATA[電腦相關應用]]></category>
		<category><![CDATA[FontForge]]></category>
		<guid isPermaLink="false">http://stackoverflow.max-everyday.com/?p=3468</guid>

					<description><![CDATA[很多漂亮的網站都有使用web font，效果比使...]]></description>
										<content:encoded><![CDATA[
<p>很多漂亮的網站都有使用web font，效果比使用圖片來做好看而且方便維護，要套用web font 很簡單，在網頁裡加入幾行去引用網路上的 .woff2 到網頁裡，即可直接指定想要的文字套用引用的字型。</p>



<p>要轉換自己的 otf/ttf 字型為 web font 也很簡單，透過 fontforge 或其他線上的服務即可完成，如果有多次轉換的需求，使用 fontforge 會方便些。</p>



<hr class="wp-block-separator"/>



<p>WebFont 常見有2個格式.woff 和 .woff2。</p>



<p>WOFF is basically OTF or TTF with metadata and compression supported by all major browsers.</p>



<p>WOFF2 is the next generation of WOFF. The WOFF2 format offers a 30% average compression gain over the original WOFF. Because it still just a recommended upgrade, it does not have the wide support of WOFF.</p>



<p>反正現在網路速度都很快，建議先使用 .woff 隔幾年後大家的瀏覽器都升級了，再使用 .woff2。也有人建議可直接產 woff2 (壓縮率更佳)，因目前主流瀏覽器皆已支援：<br><a rel="noreferrer noopener" href="https://caniuse.com/#search=woff2" target="_blank">https://caniuse.com/#search=woff2</a></p>



<hr class="wp-block-separator"/>



<p>FontForge script to convert .ttf file to its webfont variations</p>



<p>FontForge 腳本：</p>



<pre class="wp-block-preformatted">#!/usr/local/bin/fontforge
Open($1)
Generate($1 + ".otf")
Generate($1 + ".svg")
Generate($1 + ".woff")
Generate($1 + ".woff2")</pre>



<hr class="wp-block-separator"/>



<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>



<p>Max 使用 FontForge 把 Swei-Gothic （獅尾圓體） ，原本15MB 的字型，轉成.woff2 只剩 5.6MB！好心動哦。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="912" height="116" src="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/08/Screen-Shot-2020-08-02-at-22.24.36.png" alt="" class="wp-image-3472" srcset="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/08/Screen-Shot-2020-08-02-at-22.24.36.png?v=1596378334 912w, https://stackoverflow.max-everyday.com/wp-content/uploads/2020/08/Screen-Shot-2020-08-02-at-22.24.36-600x76.png?v=1596378334 600w, https://stackoverflow.max-everyday.com/wp-content/uploads/2020/08/Screen-Shot-2020-08-02-at-22.24.36-768x98.png?v=1596378334 768w" sizes="auto, (max-width: 912px) 100vw, 912px" /></figure>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">CSS 網頁字型</h2>



<p>@font-face 這個 CSS 的 at-rule 可以讓網頁設計者可以使用網路上的字型檔來顯示網頁中的文字，@font-face 的基本使用方式：</p>



<pre class="wp-block-preformatted">@font-face {
font-family: YourFontName;
src: url(http://your-font-url/font-name.woff) format("woff");
}</pre>



<p>有了上面的 style 後，就可以使用 font-family 屬性來指派我的網頁元件套用網路字型。</p>



<p>Css 寫法範例2號：</p>



<pre class="wp-block-code"><code>@font-face {
    font-family: "MyWebFont";
    src: url("webfont.woff2") format("woff2"), /* Super Modern Browsers */
    url("webfont.woff") format("woff"), /* Pretty Modern Browsers */
    url("webfont.ttf")  format("truetype") /* Safari, Android, iOS */
    font-weight: normal;
    font-style: normal;
}</code></pre>



<p>Later on in the stylesheet:</p>



<pre class="wp-block-code"><code>body {
    font-family: "MyWebFont";
}</code></pre>



<hr class="wp-block-separator"/>



<p>當 woff2 上 Github 後，可透過以下方式從 CDN 中引入，<br>可大幅加快網頁載入。jsDelivr 在速度上挺不錯的：&nbsp;<a href="http://www.cdnperf.com/#!performance,Asia" rel="noreferrer noopener" target="_blank">www.cdnperf.com/#!performance,Asia</a>&nbsp;。</p>



<p>@font-face{<br>　font-family: naikai;<br>　src: url(&nbsp;<a href="https://cdn.jsdelivr.net/gh/max32002/naikaifont@770d2de358eb3eab35b4918a910cb6b06ff8e15a/webfont/NaikaiFont-Regular.woff2" rel="noreferrer noopener" target="_blank">https://cdn.jsdelivr.net/gh/max32002/naikaifont@770d2de358eb3eab35b4918a910cb6b06ff8e15a/webfont/NaikaiFont-Regular.woff2</a><br>) format(&#8220;woff2&#8221;);<br>}</p>



<hr class="wp-block-separator"/>



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



<ul class="wp-block-list"><li>透過指令「字體」與「FontForge專案」互轉<br><a href="https://codereview.max-everyday.com/2020/08/03/font-to-fontforge/">https://codereview.max-everyday.com/2020/08/03/font-to-fontforge/</a></li><li>如何製作「字體預覽」的網頁功能<br><a href="https://codereview.max-everyday.com/2020/08/03/webfont-preview-textarea/">https://codereview.max-everyday.com/2020/08/03/webfont-preview-textarea/</a></li><li>@font-face 使用方法<br><a href="https://developer.mozilla.org/zh-TW/docs/Web/CSS/@font-face">https://developer.mozilla.org/zh-TW/docs/Web/CSS/@font-face</a></li><li>CSS 網頁字型 @font-face 使用教學與範例<br><a href="https://blog.gtwang.org/web-development/css-font-face/">https://blog.gtwang.org/web-development/css-font-face/</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2020/08/convert-ttf-to-webfont/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>字型裡符號橫排直排自動轉換的方法</title>
		<link>https://stackoverflow.max-everyday.com/2020/07/font-position-alternate-vertical-half-metrics-lookup/</link>
					<comments>https://stackoverflow.max-everyday.com/2020/07/font-position-alternate-vertical-half-metrics-lookup/#respond</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Tue, 28 Jul 2020 14:53:55 +0000</pubDate>
				<category><![CDATA[電腦相關應用]]></category>
		<category><![CDATA[FontForge]]></category>
		<guid isPermaLink="false">http://stackoverflow.max-everyday.com/?p=3459</guid>

					<description><![CDATA[如果把字型檔案裡的 kerning info 都...]]></description>
										<content:encoded><![CDATA[
<p>如果把字型檔案裡的 kerning info 都拿掉，會造成在直書時，字是橫的。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="751" height="715" src="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/07/Screen-Shot-2020-07-28-at-05.41.05.png" alt="" class="wp-image-3460" srcset="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/07/Screen-Shot-2020-07-28-at-05.41.05.png?v=1595947637 751w, https://stackoverflow.max-everyday.com/wp-content/uploads/2020/07/Screen-Shot-2020-07-28-at-05.41.05-600x571.png?v=1595947637 600w" sizes="auto, (max-width: 751px) 100vw, 751px" /></figure>



<p>說明：第一行是原本的字型；第二行是Max修改的，無法直書和符號轉向。</p>



<hr class="wp-block-separator"/>



<p>修改好之後，就變直的了：</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="776" height="812" src="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/07/Screen-Shot-2020-07-28-at-11.27.47.png" alt="" class="wp-image-3461" srcset="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/07/Screen-Shot-2020-07-28-at-11.27.47.png?v=1595947722 776w, https://stackoverflow.max-everyday.com/wp-content/uploads/2020/07/Screen-Shot-2020-07-28-at-11.27.47-573x600.png?v=1595947722 573w, https://stackoverflow.max-everyday.com/wp-content/uploads/2020/07/Screen-Shot-2020-07-28-at-11.27.47-768x804.png?v=1595947722 768w" sizes="auto, (max-width: 776px) 100vw, 776px" /></figure>



<p>說明：右邊是Noto Sans CJK TC，左邊是 Swei Sans CJK TC。</p>



<hr class="wp-block-separator"/>



<p>直書的解法好像有滿多個，首先是要在 font.props 裡設定HasVMetrics屬性：</p>



<pre class="wp-block-preformatted">HasVMetrics: 1</pre>



<p>直接加上面一行，就支援直書了，但部份的符號，在直書時轉換的位置可能不是符合我們預期的結果，需要在 glyph 檔案裡，針對個別的字做位置調整。</p>



<p>font.props 沒有加入HasVMetrics的設定時，會變成符號有設定 Position2 的都有轉換位置到，但其他的沒設定的字會維持在橫書，沒有套成直書。</p>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">解法1：使用指令做符號轉向</h2>



<p>首先是 font.props 裡有相關的設定，例如：</p>



<pre class="wp-block-preformatted">Lookup: 257 0 0 "'vhal' Alternate Vertical Half Metrics lookup 8" { "'vhal' Alternate Vertical Half Metrics lookup 8 per glyph data 0" "'vhal' Alternate Vertical Half Metrics lookup 8 per glyph data 1" "'vhal' Alternate Vertical Half Metrics lookup 8 per glyph data 2" } ['vhal' ('DFLT' &lt;'dflt' &gt; 'cyrl' &lt;'JAN ' 'KOR ' 'ZHH ' 'ZHS ' 'ZHT ' 'dflt' &gt; 'grek' &lt;'JAN ' 'KOR ' 'ZHH ' 'ZHS ' 'ZHT ' 'dflt' &gt; 'hang' &lt;'JAN ' 'KOR ' 'ZHH ' 'ZHS ' 'ZHT ' 'dflt' &gt; 'hani' &lt;'JAN ' 'KOR ' 'ZHH ' 'ZHS ' 'ZHT ' 'dflt' &gt; 'kana' &lt;'JAN ' 'KOR ' 'ZHH ' 'ZHS ' 'ZHT ' 'dflt' &gt; 'latn' &lt;'JAN ' 'KOR ' 'ZHH ' 'ZHS ' 'ZHT ' 'dflt' &gt; ) ]
Lookup: 257 0 0 "'halt' Alternative Half Widths lookup 5" { "'halt' Alternative Half Widths lookup 5 per glyph data 0" "'halt' Alternative Half Widths lookup 5 per glyph data 1" "'halt' Alternative Half Widths lookup 5 per glyph data 2" } ['halt' ('DFLT' &lt;'dflt' &gt; 'cyrl' &lt;'JAN ' 'KOR ' 'ZHH ' 'ZHS ' 'ZHT ' 'dflt' &gt; 'grek' &lt;'JAN ' 'KOR ' 'ZHH ' 'ZHS ' 'ZHT ' 'dflt' &gt; 'hang' &lt;'JAN ' 'KOR ' 'ZHH ' 'ZHS ' 'ZHT ' 'dflt' &gt; 'hani' &lt;'JAN ' 'KOR ' 'ZHH ' 'ZHS ' 'ZHT ' 'dflt' &gt; 'kana' &lt;'JAN ' 'KOR ' 'ZHH ' 'ZHS ' 'ZHT ' 'dflt' &gt; 'latn' &lt;'JAN ' 'KOR ' 'ZHH ' 'ZHS ' 'ZHT ' 'dflt' &gt; ) ]</pre>



<hr class="wp-block-separator"/>



<p>接著，是 glyph 檔案裡，要設定 Position2 欄位處理直排時的位置轉換：</p>



<pre class="wp-block-preformatted">Position2: "'vhal' Alternate Vertical Half Metrics lookup 8 per glyph data 1" dx=0 dy=250 dh=0 dv=-500
Position2: "'halt' Alternative Half Widths lookup 5 per glyph data 1" dx=-250 dy=0 dh=-500 dv=0</pre>



<p>附註： font.props 裡 coverage 裡的名稱，需要和 glyph 檔裡裡 Position2 裡第一個欄位名稱一致，不然「可能」會套用不到效果。</p>



<hr class="wp-block-separator"/>



<p>有些日文符號，在直書時需要順時針旋轉90度，例如：日文的長音符號「ー」（U+30FC），使用的 code:</p>



<pre class="wp-block-preformatted">Kerns2: 1732 -50 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1714 -40 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1713 -30 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1704 -60 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1703 -60 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1702 -60 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1698 -10 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1697 -10 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1696 -20 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1695 -60 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1686 -20 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1685 -20 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1675 -50 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1674 -50 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1673 -20 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1672 -20 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1671 -20 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1670 -20 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1652 -40 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1651 -40 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1610 -40 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1609 -40 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1608 -40 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1594 -60 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1593 -60 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1496 -10 "'kern' Horizontal Kerning lookup 2 per glyph data 0" 1495 -10 "'kern' Horizontal Kerning lookup 2 per glyph data 0"<br>Position2: "'palt' Proportional Alternate Metrics lookup 3 per glyph data 8" dx=-7 dy=0 dh=-15 dv=0</pre>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">解法2號：另外在其他的字先轉好方向。</h2>



<p>這個解法需要先本的 .glyph 另存一新檔為 .vert.glyph 檔案。</p>



<p>修改 .vert.glyph 檔案內容的 StartChar: 為原本值 + .vert</p>



<p>修改 Encoding: 欄位第 2 欄為 -1</p>



<p>在 .glyph 檔案裡，增加下面的語法，召換 .vert.glyph 檔案。</p>



<pre class="wp-block-preformatted">Substitution2: "'vrt2' Vertical Rotation &amp; Alternates lookup 4 subtable" uni30FC.vert<br>Substitution2: "'vert' Vertical Alternates lookup 3 subtable" uni30FC.vert</pre>



<p>常見的符號有：bracketleft, bracketright, ellipsis, uni301C, uni30FC, uniFF08, uniFF09.</p>



<hr class="wp-block-separator"/>



<h2 class="wp-block-heading">Q&amp;A</h2>



<p><strong>Q：font.props / .vert.glyph 這些我都不知道在哪？</strong><br>A：請先把要處理的字型，透過 FontForge 開啟，並另存 FontForge 的專案為資料夾格式(.sfdir)，就可以看到 font.props 和 一堆的 .glyph 檔案。</p>



<p>關閉 FontForge 後，去修改那些檔案，再透過 FontForge 開啟該專案。就可以產生出轉向效果的字型。</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2020/07/font-position-alternate-vertical-half-metrics-lookup/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>FontForge Expand Stroke 筆畫消失</title>
		<link>https://stackoverflow.max-everyday.com/2020/04/fontforge-expand-stroke-disappear/</link>
					<comments>https://stackoverflow.max-everyday.com/2020/04/fontforge-expand-stroke-disappear/#respond</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Fri, 17 Apr 2020 22:16:37 +0000</pubDate>
				<category><![CDATA[電腦相關應用]]></category>
		<category><![CDATA[FontForge]]></category>
		<guid isPermaLink="false">http://stackoverflow.max-everyday.com/?p=3414</guid>

					<description><![CDATA[使用FontForge 讓字變重時，筆畫消失了，...]]></description>
										<content:encoded><![CDATA[
<p>使用FontForge 讓字變重時，筆畫消失了，如下圖「期」所示：</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="706" height="593" src="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-18-at-06.00.53.png" alt="" class="wp-image-3415" srcset="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-18-at-06.00.53.png?v=1587161673 706w, https://stackoverflow.max-everyday.com/wp-content/uploads/2020/04/Screen-Shot-2020-04-18-at-06.00.53-600x504.png?v=1587161673 600w" sizes="auto, (max-width: 706px) 100vw, 706px" /></figure>



<p></p>



<p>FontForge 官方說明：<br><a href="https://fontforge.org/docs/scripting/python/fontforge.html#glyph">https://fontforge.org/docs/scripting/python/fontforge.html#glyph</a></p>



<p><code>removeoverlap (string, default="layer")</code></p>



<p>Specifies whether, and on what basis, remove-overlap should be run. “layer” corresponds to running remove-overlap on the <a href="https://fontforge.org/docs/scripting/python/fontforge.html#fontforge.layer"><code>layer</code></a> as a whole. “contour” corresponds to running remove-overlap on individual contours. “none” corresponds to not running remove-overlap. Note that because the stroke facility relies on remove-overlap to eliminate cusps and other artifacts, “none” is an unusual choice and available primarily for debugging purposes.</p>



<hr class="wp-block-separator"/>



<p>解法，把原本的 removeoverlap=&#8221;layer&#8221; 換成 removeoverlap=&#8221;contour&#8221; 問題暫時被解決。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2020/04/fontforge-expand-stroke-disappear/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>FontForge 修改行距失敗的解法</title>
		<link>https://stackoverflow.max-everyday.com/2020/04/fontforge-linegap-fail/</link>
					<comments>https://stackoverflow.max-everyday.com/2020/04/fontforge-linegap-fail/#respond</comments>
		
		<dc:creator><![CDATA[max-stackoverflow]]></dc:creator>
		<pubDate>Fri, 17 Apr 2020 01:23:21 +0000</pubDate>
				<category><![CDATA[電腦相關應用]]></category>
		<category><![CDATA[FontForge]]></category>
		<guid isPermaLink="false">http://stackoverflow.max-everyday.com/?p=3410</guid>

					<description><![CDATA[字型檔案怪怪的，設了 UnderlinePosi...]]></description>
										<content:encoded><![CDATA[
<p>字型檔案怪怪的，設了 UnderlinePosition 也調了 </p>



<p>LineGap: 0<br>VLineGap: 0</p>



<p>但行高都超高的，像這樣：</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="804" height="915" src="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/04/compare_style-1.png" alt="" class="wp-image-3412" srcset="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/04/compare_style-1.png?v=1587086517 804w, https://stackoverflow.max-everyday.com/wp-content/uploads/2020/04/compare_style-1-527x600.png?v=1587086517 527w, https://stackoverflow.max-everyday.com/wp-content/uploads/2020/04/compare_style-1-768x874.png?v=1587086517 768w" sizes="auto, (max-width: 804px) 100vw, 804px" /></figure>



<p class="has-background has-luminous-vivid-amber-background-color">解法：使用FontForge 過水一次，去掉髒東西。</p>



<p>先把 project 產生為 ttf 格式後，再使用產生出來的 ttf 來修改，即可完成行高的修改，成功的畫面：</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="814" height="711" src="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/04/compare_style.png" alt="" class="wp-image-3411" srcset="https://stackoverflow.max-everyday.com/wp-content/uploads/2020/04/compare_style.png?v=1587086441 814w, https://stackoverflow.max-everyday.com/wp-content/uploads/2020/04/compare_style-600x524.png?v=1587086441 600w, https://stackoverflow.max-everyday.com/wp-content/uploads/2020/04/compare_style-768x671.png?v=1587086441 768w" sizes="auto, (max-width: 814px) 100vw, 814px" /></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://stackoverflow.max-everyday.com/2020/04/fontforge-linegap-fail/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
