详解利用ShoeBox制作位图字体
http://childhood.logdown.com/posts/190580/-details-using-shoebox-produce-bitmap-fonts?utm_source=tuicool
1 ShoeBox 简介

ShoeBox是一个基于AdobeAIR实现的免费跨平台的工具。这个工具使用拖放、剪切板的工作流程方式,能够很方便的处理游戏图片、创建位图字体等。
- 支持引擎

2 功能概括介绍
ShoeBox虽小,五脏俱全。作者做这个工具足见是用了心,如果各位想捐款,官网右上角:)。写这篇文字的时候,笔者用的版本是最新版3.4.2。官网的一些图片说明不少是老版本的,注意下就可以了。
Sprites
- 打包位图(Sprite Sheet)
![]()
这个功能非常强大。我们在游戏制作中,经常利用TexturePacker等工具,将一些碎图图片合成一个精灵表单(spritesheet),好处不言而喻。ShoeBox的这个功能,在一些方面并没有TP工具那么强大,但却有自己的特色功能。TA可以将多个图片,SWF(AS1,AS2,AS3版本)动画或者GIF动画合成到一个纹理图上,强大吧,支持SWF/GIF哦。
- 读取精灵(Read Sprites)
![]()
读取一个精灵表单或者位图字体集,并将他们单独导出为精灵图片。要求图片文件和查找索引文本文件(即图片描述数据文件)。
- 提取精灵(Extract Sprites)
![]()
上图是我拿FlappyBird的精灵表单做的试验。
检测具有alpha通道的图片的精灵图片并一次标上序号导出。这个功能可以在你丢失了图片描述文件的情况下,用作精灵表单反向导出精灵图片。同一个物体如果在图片上有透明间隙,会被表上多个序号,这里不是很理想,朋友们如果要用这个功能的话注意下。
- 设定锚点(Sprite Pivots)
![]()
这个我们在Cocos2D里面用的不多,starling里面倒是有设置pivot的。
GUI
- 位图字体(Bitmap Font)

这个就是我们今天介绍的重点了。见后面的详细介绍。
- 拆分PSD文件(Split PSD)

这个功能绝对是美术人员的福利。强烈建议朋友们推荐给自己公司的MM们,给她们介绍下这个ShoeBox,并握着她们的小手手,手把手教她们如何使用这个功能。如果美术是GG,不管了。我不知道其他美术是怎么做的,作为非美术的我,但经常使用Photoshop,我在导出图片的时候,如果图层过多,通过隐藏其他图层,将图层的图片一个个单独导出,其中还要涉及裁剪或者新建文档导出。麻烦不?当然了。所以,这个功能能高效的导出PSD中的图片。
- Slice 9

顾名思义,这个功能处理的是九宫格图片。因为在Cocos2D中有自己的九宫图类,这里就不介绍了。
Animation
- 动画帧(Ani Frames)


将GIF或者SWF动画导出为帧序列图。异常强大!将上面的GIF动画图片拖放到AniFrames上后,保存会导出该动画的序列帧。SWF同理。这个功能通常用来解析资源。
- 帧表单(FrameSheet)

这个功能集合了动画帧序列导出(AniFrames)以及打包精灵图片(Pack Sprites)功能,将GIF或者SWF动画文件拖放到上面后,可以保存为一个精灵表单,内容包含了动画的帧序列图。
Bitmaps
- JPNG位图(JPNG Bitmap)

将32位RGBA位图转成24位的JPG格式图,附带一个alpha通道组。引擎解析需要加载JPG图片,然后通过复制右边的alpha通道并应用到左侧的颜色区域来重新组成32位的RGBA图。貌似这种做法现在很少用了。
- Mask Image


将JPG图片进行遮罩和羽化,合成了一张复杂的图。还不清楚这个具体怎么使用。
Misc
- Flickr Upload
- Clean Up Text
- Mac to PC url
这三个游戏基本用不到。就不介绍了。想要进一步了解的,可以深入官网探个究竟。
3 言归正传 创建位图字体
通常情况下,Windows下我们可以使用免费的Bitmap Font Generator,mac下可以使用付费的Glyph Designer。有了这款跨平台的ShoeBox,美术人员可以完全按照自己的设计,做出一套位图字体,支持中文。
工作流程

1.右键打开设置面板,在Txt Chars输入你要制作的字体,如我这里输入abcdefghijklmnopqrstuvwxyz这些字体,最后给大家呈现一个cocos quick的美术效果。FollowMe!

2.按住BitmapFont图标2s左右,会复制我们的字符集到剪切板上,这时候打开Photoshop,新建一个文件,用文本输入工具或者热键T点击画布,然后粘帖剪切板上的字符到画布上。如下图所示

字体毫无美感可言,不是么?
3.下面是发挥设计能力的时候了。让美术尽情设计字体吧。我随便给文字加了个描边、外发光、投影,如下图

4.保存刚才的设计,导出为PNG图片。这里需要注意下,在设计的时候字体的间距不要太靠近,否则ShoeBox在后面识别的过程,会将太过于靠近的字体识别为一个字体。
5.拖放上步保存的图片到BitmapFont图标上,这时候会有流动的虚线表示可以拖放有效。如果你拖个JPG图片的,是无效的。

6.见证奇迹的时刻到了!

在设置面板的 Message 一栏里面,我们输入cocos quick,设定字符间距(KerningValue)为合适的值比如-2,空格宽度(TxtSpaceWidth)为5,然后apply应用确定,可以看到文字的预览效果。

7.参数调整合适后,保存字体(SaveFont),会在原始图片目录下生成一个PNG图片和FNT数据文件。这时候引擎就可以直接使用这两个文件了。
如果大家觉得看着文字麻烦,可以先看下视频。
Happy Designing!
Posted by ChildhoodAndy March 26, 2014 ShoeBox BMFont 位图字体 Bitmap Font Generator Glyph Designer
Comments
详解利用ShoeBox制作位图字体的更多相关文章
- 详解用CSS3制作圆形滚动进度条动画效果
主 题 今天手把手教大家用CSS3制作圆形滚动进度条动画,想不会都难!那么,到底是什么东东呢?先不急,之前我分享了一个css实现进度条效果的博客<CSS实现进度条和订单进度条>,但是呢, ...
- 详解利用ELK搭建Docker容器化应用日志中心
概述 应用一旦容器化以后,需要考虑的就是如何采集位于Docker容器中的应用程序的打印日志供运维分析.典型的比如SpringBoot应用的日志 收集.本文即将阐述如何利用ELK日志中心来收集容器化应用 ...
- 详解利用Dockerfile构建mysql镜像并实现数据的初始化及权限设置
本文提要 本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动MySQL服务接受外部连接,主要是通过Docker ...
- 前端跨域问题相关知识详解(原生js和jquery两种方法实现jsonp跨域)
1.同源策略 同源策略(Same origin policy),它是由Netscape提出的一个著名的安全策略.同源策略是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正 ...
- Dockerfile详解
Dockerfile详解 利用Dockerfile文件,可以构建docker的image镜像 命令使用 通过-f参数指定Dockerfile路径,进行构建image docker build -f / ...
- 【咸鱼教程】BitmapLabel位图字体使用
引擎版本3.2.6 教程目录一 为什么要使用位图字体二 如何使用位图字体2.1 TextureMerger制作位图字体2.2 exml中使用位图字体三 Demo源码 一 为什么要使用位图字体egre ...
- 转载 JS组件Bootstrap Select2使用方法详解
JS组件Bootstrap Select2使用方法详解 作者:懒得安分 字体:[增加 减小] 类型:转载 时间:2016-01-26我要评论 这篇文章主要为大家介绍了JS组件Bootstrap Sel ...
- EUI组件之BitmapLabel 位图字体
一.制作文图字体文件 使用TextureMerger制作位图字体,具体查看 官方教程. 我们这里制作了一组位图字体. 二.导入位图字体 位图字体素材放入资源配置文件default.res.json 三 ...
- JS hashMap实例详解
链接:http://www.jb51.net/article/85111.htm JS hashMap实例详解 作者:囧侠 字体:[增加 减小] 类型:转载 时间:2016-05-26我要评论 这篇文 ...
随机推荐
- idea debug启动项目慢或者启动不了
使用debug无法启动项目但是使用run就可以启动程序,而且启动比以前的debug模式快的多 原因: 启动不了的原因是在项目中的方法上打了断点,导致项目无法继续编译 取消方法断点就可以了 在idea官 ...
- 实时查询引擎 - Facebook Presto 介绍与应用
1. Presto 是什么 Facebook presto是什么,继Facebook创建了HIVE神器后的又一以SQL语言作为接口的分布式实时查询引擎,可以对PB级的数据进行快速的交互式查询.它支 ...
- android MotionEvent
getAction() 获取事件的类型,这是一个组合值,由pointer的index值和事件类型值组合而成的 getActionMasked() 获取事件的类型,不具有其他信息 参考: http:// ...
- 路由vue-router基础
目录 1. 基本例子 2. 动态路由匹配 3. 嵌套路由 4. 编程式导航 5. 命名路由 6. 命名视图 7. 重定向和别名 8. 向路由组件传递props 9. HTML5 History模式 官 ...
- 为什么i=i++后,i的值不变(深入解析)
在Java中,运行以下代码: int i=10; i=i++; System.out.println(i); 得到的结果仍然为10,为什么呢?理论上,运算的过程不应该是i首先把10取出来,赋值给i,然 ...
- [转]如何像Python高手(Pythonista)一样编程
本文转自:http://xianglong.me/article/how-to-code-like-a-pythonista-idiomatic-python 最近在网上看到一篇介绍Pythonic编 ...
- 用Python实现基于Hadoop Stream的mapreduce任务
用Python实现基于Hadoop Stream的mapreduce任务 因为Hadoop Stream的存在,使得任何支持读写标准数据流的编程语言实现map和reduce操作成为了可能. 为了方便测 ...
- leetcode 211. 添加与搜索单词 - 数据结构设计 解题报告
设计一个支持以下两种操作的数据结构: void addWord(word) bool search(word) search(word) 可以搜索文字或正则表达式字符串,字符串只包含字母 . 或 a- ...
- KMP算法-Python版
KMP算法-Python版 传统法: 从左到右一个个匹配,如果这个过程中有某个字符不匹配,就跳回去,将模式串向右移动一位.这有什么难的? 我们可以 ...
- Android 开发中Service完全解析
定义:服务,是Android四大组件之一,属于计算型组件 作用:提供 需在后台长期运行的服务 生命周期: 在Service的生命周期里,常用的有: (1) 4个手动调用的方法 手动调 ...