科学工具
科学工具让世界更美好
让世界更美好

FontForge 跨平台字体编辑器FontForge 跨平台字体编辑器

FontForge 是一款跨平台的开源字体编辑工具,支持在 Windows、Mac OS X和GNU+Linux系统上进行免费的字体编辑,支持创建、编辑和转换多种格式的字体,支持OpenType、TrueType、UFO、CID-keyed、Multiple Master等格式。

• FontForge 官网:fontforge.org

• FontForge 字体创建手册:designwithfontforge.com

Ubuntu系统安装 FontForge

若使用Ubuntu,执行以下命令即可下载所有依赖项:

sudo apt-get install libjpeg-dev libtiff5-dev libpng-dev libfreetype-dev libgif-dev libgtk-3-dev libxml2-dev libpango1.0-dev libcairo2-dev libspiro-dev libwoff-dev python3-dev ninja-build cmake build-essential gettext;

依赖项安装完成后,运行构建和安装脚本:

cd fontforge
mkdir build
cd build
cmake -GNinja ..
ninja
sudo ninja install

macOS常见问题解决方案

macOS下缺失的包可通过Homebrew安装,示例命令如下:

brew install cmake glib pango gtk+3

若使用Homebrew时提示找不到msgfmt,执行以下命令:

brew install gettext
brew link gettext

可执行文件

如果需要对字符图像进行自动描边,还需下载以下任意一个工具:

• Peter Selinger开发的potrace

• Martin Weber开发的autotrace程序

库文件

若系统带有包管理器,建议使用包管理器安装库文件,这样操作更方便。大部分库文件并非FontForge编译或运行的必需项,缺少这些库文件时,FontForge不会调用它们。但如果编译FontForge可执行文件的机器原本就没有这些库文件,那么不仅要安装库文件,还需重新从源码构建FontForge。若你的机器没有这些库文件且需要使用,可通过以下途径获取:

1、图像库:用于支持FontForge导入各类图像格式(通常作为自动描边的背景图),包括libpng(及所需的辅助库zlib)、libtiff、libungif、libjpeg。

2、libxml2:用于解析SVG文件和字体。

3、libspiro:包含Raph Levien开发的从滑线到贝塞尔曲线的转换程序。安装该库后,FontForge支持使用滑线(spiro)进行编辑。

4、libiconv:仅对没有内置iconv()的系统重要。缺少该库时,FontForge会自带一个简化版库保证运行,但如果需要使用完整的libiconv,必须在配置时加上--enable-extra-encodings参数,因为FontForge需要Shift-JIS编码支持。

5、freetype:用于优化位图光栅化效果,并启用TrueType调试器。FontForge的部分命令需要编译freetype时启用字节码解释器。过去因苹果公司相关专利限制,该功能默认关闭,如今专利已过期,无需再担心此问题。但如果使用的是旧版本库,需在构建库之前,在*.../include/freetype/config/ftoption.h*中设置相应宏(可参考freetype发行版顶层目录下的README.UNX文件)。要启用TrueType调试器,构建FontForge时需确保能访问freetype源码目录(FontForge依赖该目录下的部分头文件)。

6、libintl:多数类Unix系统默认自带该库,macOS下可通过fink包安装,主要用于处理界面国际化。

7、libpython:编译FontForge时若存在该库,用户能在FontForge中执行Python脚本,也可配置FontForge使其一键导入Python(即FontForge既支持扩展Python,也支持嵌入Python)。

8、libX:通常FontForge依赖X11窗口系统,但如果仅需脚本引擎(无需图形界面),也可在无X11的系统上构建(配置脚本会自动检测并适配)。

9、libcairo:负责在轮廓字形视图中绘制抗锯齿曲线,依赖libfontconfig、libXft及其他可能的库。

10、libpango:用于绘制复杂脚本文本,依赖glib-2.0、libfontconfig、libfreetype、libXft及其他可能的库。

11、Unifont:包含所有Unicode码点的字形,安装后FontForge会自动调用。