cocos-creator / font-editor-angular-deprecated

Font Editor
MIT License
1 stars 1 forks source link

有些字体描边不准 #5

Closed jareguo closed 10 years ago

jareguo commented 10 years ago

这是一个跟windows版Chromium有关的bug,参考 http://jsfiddle.net/Pdr7q/11/ https://code.google.com/p/chromium/issues/detail?id=280221

如果最终 nw 或 atom-shell 都没有升级 webkit,考虑自己用 fontpath-render 或 node-canvas 之类的进行绘制。

同时描边较粗时,无法外描边并且描边没阴影,如果没有自己绘制描边,可尝试用这个方式解决 http://jsfiddle.net/Pdr7q/12/

描边较粗时,所有浏览器都会有如下bug: http://jsfiddle.net/Pdr7q/13/

jareguo commented 10 years ago

使用Freetype的API:

  1. 使用FT_Stroker_New创建一个笔触
  2. FT_Stroker_Set设置笔触为描边
  3. 把Load后的glyph通过FT_Glyph_Copy拷贝一份出来
  4. 对这个拷贝出来的glyph使用FT_Glyph_StrokeBorder设置成描边渲染
  5. 使用FT_Outline_Render渲染这个描边的glyph,渲染前要设置FT_Raster_Params参数成: FT_Raster_Params params; memset(&params, 0, sizeof(params)); params.flags = FT_RASTER_FLAG_AA | FT_RASTER_FLAG_DIRECT; params.gray_spans = RasterCallback;
  6. 在回调函数RasterCallback中实现像素化到位图中
  7. 对原来的glyph执行8操作,在回调函数RasterCallback中实现像素化到位图中,像素化过程使用alphablend的方式绘制上去
  8. 把位图渲染到屏幕上或保存到文件中 http://www.freetype.org/freetype2/docs/tutorial/example2.cpp
jareguo commented 10 years ago

FreeType相关 http://wenku.baidu.com/view/1a50c479a26925c52cc5bff6 http://blog.csdn.net/joelyoung/article/details/6113742 http://www.freetype.org/freetype2/docs/tutorial/example3.cpp http://www.freetype.org/freetype2/docs/reference/ft2-outline_processing.html#FT_Outline_New

jareguo commented 10 years ago

暂时使用 fontpath_canvas 这个包来实现描边 限制有: