常見會出血的字: gjpqyýÿ¿¡{}Q
這些字和中文字一起訓練會幾個問題, 首先是偏移在不同位置, 會出現不同的大小, 例如 “H” 這個符號, 一模一模的輸入, 設定不同的 y offset, 出現在晝面上/中/下 不同的位置, 推論出來的結果會不一樣大, 形狀也會有差異.
- 解法1:
使用 x offet / y offset 來解決, 但這個只能解決一小部份的字, 因為加了 offset 會讓部份的字掛掉, 例如為了讓 g/p/q/y 等字向上, 就會讓很多大寫字或符號的字因為 offset 造成被crop. - 解法2:
先讓晝布寬高乘2, 原本為 256 就讓畫布為 512, 然後在 x offset / y offset 各設為原本的 1/2, 就是 128, 晝上原本 256×256 的字, 然後把這個圖轉成 svg 之後, 進入 fontforge 把這個glyph x offset / y offset 各設 -128 就可以拿到正常的圖片, 要使用這一個解法, 在訓練的時候, 就要資料都用 512 的大小去訓練, - 解法3:
以算的剛剛好的情況下, 最佳解法應該是在 infer 時讓 font size=222 (=256 x 0.87), 但推論結果如果是會讓原本筆畫線條變粗的請況下, 又會出血, 建議 infer 時使用 font size=217 (=256 x 0.85), 是微微的允許筆晝線條變粗, 也可以試著調整為font size=212 (=256 x 0.83), 由於推論前就縮小了, 在取得推論結果之後, 再 resize 回去, 就可以取得超過256×256 以外的筆畫, 如果是使用 217 是原本的 0.85, resize_canvas_size 設為 294 (=256 x 1.15) 就可以取得放大後的筆晝.

說明: 紅字是直接推論, 會被 crop 到, 藍色是使用先縮小後放大, 黑色部份是二個推論重疊的部份, 解法3有符合預期的效果.