purplebamboo / font-carrier

font-carrier是一个功能强大的字体操作库,使用它你可以随心所欲的操作字体。让你可以在svg的维度改造字体的展现形状。
http://purplebamboo.github.io/font-carrier/
MIT License
1.61k stars 194 forks source link

有闭合区间的字填充规则不正确 #43

Open aisong opened 4 years ago

aisong commented 4 years ago

1、我有一个“的”字的svg文件,里面包含闭合区间,fill-rule="evenodd"(svg文件见附件zip包中的src.svg)。svg图片的效果如下图:

src

2、我用这个svg制作字体,生成ttf文件(生成的字体文件见附件zip包中的fillrule.ttf);

3、用字体编辑软件打开ttf文件,发现闭合区间的填充规则显示不正确,截图如下:

editfont

4、主要代码:

var font = fontCarrier.create();

var zis = [{ name: '的', svg: svg}];

for (let zi of zis) {
    font.setSvg(zi.name, fs.readFileSync(zi.svg).toString())
}

font.output({
    path: './fillrule',
    types: ["ttf"]
})

请问下这是什么原因导致的呢?还是需要设置什么参数来纠正?麻烦帮我看一下,谢谢🙏

Archive.zip

yisibl commented 4 years ago
 
<svg xmlns="http://www.w3.org/2000/svg" width="208" height="239" viewBox="0 0 208 239">
  <path d="M141.056,35.25 C142.11,32.618 145.763,32.218 146.689,34.632 C147.034,35.53 146.707,37.218 145.963,38.382 C143.716,41.901 137.4,55.085 134.65,62 C131.48,69.969 130.924,73.626 132.951,73.183 C136.183938,72.476866 153.895819,71.0235245 170.455785,70.0977562 L171.5,70.04 C181.4,69.499 191.978,68.837 195.007,68.569 C198.036,68.301 201.094,68.44 201.802,68.878 C203.368,69.845 206.509,82.436 207.072,90 C208.044,103.066 207.4,127.984 205.56,148.5 C205.264,151.8 204.571,161.925 204.021,171 C200.876,222.848 199.767,237.595 198.95,238.43 C197.146,240.274 193.069,236.634 186.322,227.157 C182.57,221.887 178.094,216.208 176.377,214.537 C174.659,212.867 172.559,210.133 171.71,208.462 C169.519,204.146 167.907,194.749 169.144,193.5 C170.331,192.302 172.788,195.271 173.695,199 C174.387,201.845 179.397,209.529 181.332,210.713 C182.04,211.146 185.278,215.483 188.527,220.35 C194.186,228.826 194.467,229.085 195.168,226.466 C195.57,224.961 196.152,219.629 196.461,214.615 C196.771,209.602 197.69,194.7 198.504,181.5 C199.319,168.3 200.5,150.75 201.129,142.5 C202.522,124.221 201.761,88.786 199.809,81 L199.809,81 L198.429,75.5 L182.259,75.689 C164.895,75.893 134.711,78.399 130.545,79.983 C129.145,80.515 127.989,81.749 127.976,82.725 C127.935,85.814 123.443,95.609 119.25,101.751 C117.026,105.009 114.236,109.576 113.051,111.901 C111.593,114.759 110.346,116.022 109.197,115.803 C106.601,115.308 106.592,111.333 109.18,107.977 C110.456,106.321 112.535,103.645 113.8,102.03 C118.278,96.311 123,85.986 123,81.914 C123,79.746 123.447,77.191 123.993,76.236 C124.511949,75.3299744 126.123577,71.3403235 127.658885,67.1763137 L127.907,66.5 C129.513,62.1 132.926,53.775 135.491,48 C138.056,42.225 140.56,36.487 141.056,35.25 Z M77.216,2.466 C79.724,-0.418 83.29,-0.492 83.828,2.329 C84.522,5.968 83.101,8.73 80.241,9.302 C78.012,9.748 76.508,11.52 72.707,18.179 C70.095,22.756 66.403,28.75 64.503,31.5 C58.642,39.981 51.653,49.77 48.272,54.236 C46.496,56.581 45.397,58.621 45.83,58.769 C46.748,59.084 64.71,55.504 67.177,54.515 C68.558,53.961 68.982,54.693 69.584,58.671 C70.605,65.422 70.6,78.088 69.566,102.309 L69.566,102.309 L68.679,123.119 L71.339,122.451 C74.259,121.718 74.486,122.322 73.375,127.875 C73.021,129.644 72.123,131 71.306,131 C70.078,131 69.971,133.351 70.593,146.75 C71.538,167.134 71.409,186.321 70.288,192 C69.799,194.475 69.581,198.655 69.804,201.29 L69.804,201.29 L70.208,206.079 L74.163,205.684 C76.339,205.466 79.424,204.323 81.019,203.144 C82.614,201.965 84.387,201 84.96,201 C86.528,201 86.208,203.649 84.425,205.432 C81.592,208.265 74.175,213 72.57,213 C70.688,213 70.651,213.93 72.179,222.841 C73.513,230.62 72.151,236.366 69.11,235.785 C67.819,235.538 67.361,233.523 66.797,225.618 C66.41,220.196 65.923,215.589 65.715,215.381 C65.506,215.173 60.198,215.929 53.918,217.061 C46.692,218.364 38.278,219.117 31,219.112 C24.675,219.108 16.873,219.354 13.662,219.66 C8.299,220.172 7.869,220.391 8.385,222.358 C9.169,225.352 6.922,231.132 5.109,230.782 C4.303,230.627 3.203,229.15 2.664,227.5 C2.069,225.681 1.642,199.114 1.578,160 C1.521,124.525 1.096,89.875 0.634,83 C-0.421,67.296 -0.353,67.179 10.553,65.854 C35.921,62.772 35.119,62.952 38.411,59.586 C40.11,57.848 44.2,52.491 47.5,47.68 C50.8,42.869 56.561,34.561 60.302,29.216 C64.043,23.872 67.382,18.825 67.722,18 C68.062,17.175 69.838,14.129 71.67,11.231 C73.501,8.332 75,5.748 75,5.488 C75,5.228 75.997,3.868 77.216,2.466 Z M64.149,130.131 C63.792,130.203 61.025,130.609 58,131.032 C43.515,133.06 33.863,133.984 27.082,133.992 C23.002,133.996 16.814,134.496 13.332,135.103 L7,136.205 L6.982,140.353 C6.972,142.634 6.497,153.725 5.927,165 C4.708,189.085 5.519,212.378 7.483,209.693 C9.509,206.922 11.283,207.62 10.788,210.994 L10.348,213.987 L25.924,213.912 C40.546,213.841 44.436,213.371 62.595,209.488 C64.531,209.074 64.754,208.075 65.548,196.27 C66.802,177.632 65.79,129.8 64.149,130.131 Z M123,134.468 C123,128.247 129.312,132.963 144.459,150.5 C148.862,155.597 156,168.019 156,170.583 C156,174.56 151.405,170.552 147.659,163.308 C146.751,161.552 140.831,154.9 134.504,148.526 C126.071,140.029 123,136.277 123,134.468 Z M54.5,62.208 C43.234,63.93 41,64.813 41,67.54 C41,70.1575111 38.7475477,70.8887368 37.3910623,68.7941992 L37.3,68.647 C36.637,67.525 34.016,67.688 22,69.599 C14.025,70.867 7.388,71.926 7.25,71.952 C7.112,71.978 7,72.81 7,73.8 C7,74.79 6.487,76.113 5.86,76.74 C5.007,77.593 5.02,82.234 5.91,95.19 C6.565,104.71 7.19,116.325 7.3,121 L7.5,129.5 L11,129.284 C12.925,129.165 19.225,128.841 25,128.564 C35.065,128.081 54.126,126.407 60.564,125.439 L63.628,124.979 L64.705,97.24 C65.298,81.983 65.559,67.588 65.286,65.25 C64.73,60.489 65.086,60.589 54.5,62.208 Z"/>
</svg>

重新试一下

aisong commented 3 years ago

 


重新试一下

你好,用你这个svg测试能生成正常的字体,请问是怎么由我之前原始的svg转换到你这个svg的呢?

谢谢🙏