字体应用于界面中的文本元素。所有字体都位于、也应当放置在/Europa Universalis IV/gfx/fonts/文件夹中。
创建新字体
要创建新字体,你需要下载一个名为 BMFont 的程序,它可以根据字体生成字体图页和描述文件。
安装好 BMFont 后,打开它并导入字体。具体做法是:点击 Options 菜单按钮,然后点击 Font Settings 按钮,在 Font Settings 菜单中添加你的字体文件。
这会让字体画布中出现所选字体支持的全部符号。只有被高亮选中的符号才会被包含在字体文件中,因此你可以通过侧边栏或手动选择,取消高亮某些符号,从而不将其包含在内。除非你需要让字体文件达到特定的大小,否则没有必要这么做。
字体设置
导入字体之后,就该设置字体的外观了。为此,请再次打开 Font Settings 菜单。以下是需要修改的字段:
- Charset:设为 OEM - ANSI。
- Size:字体的字号,设为你想要的大小。
- Match char height:勾选此项,使每个字符的高度一致。
- Font smoothing:如果你的字体在游戏中可能显得过于尖锐,请勾选此项。
- Outline thickness:如果希望字体带有描边,请在此设置所需的粗细。
导出选项
设置好字体之后,就该设置字体的导出方式了。为此,请打开 Export Options 菜单。以下是你可能需要修改的字段:
- Padding:控制字体图片中各字符之间的内边距。仅当你打算手动编辑字体文件、又不希望字符靠得太近时才需要设置。
- Spacing:控制字体图片中字符之间的最小间距。设为 1-1;如果字符之间出现渗色,则设得更高。
- Width:控制字体图片的宽度。如果所有字符无法放进同一张图片,请调高此值。
- Height:控制字体图片的高度。如果所有字符无法放进同一张图片,请调高此值。
- Channels:控制字符的合成方式。全部设为 glyph;如果设置了描边,则将 alpha 通道设为 outline,其余通道仍为 glyph。
- Font descriptor:必须设为 text。
- Textures:应设为 .tga 或 .dds。
保存字体
按照你的需求设置好字体后,点击 Options 菜单中的 Visualize 按钮,检查所有字符是否都能放进同一页。如果放不下,就需要增大字体图片的宽度和高度。
保存字体。
使用新字体
保存新字体后,你应该会得到两个文件:一个字体图片文件(例如 my_font.tga)和一个字体描述文件(例如 my_font.fnt)。请打开字体描述文件,因为需要对其进行编辑才能与《欧陆风云IV》兼容。
打开之后,需要修改以下几行:
- size:将该值改为正数。
- unicode:删除该键和值。
- outline:如果你的字体不使用描边,则删除该键和值。
- pages=1:删除该键和值。
- packed=0:删除该键和值。
- alphaChnl=0:删除该键和值。
- redChnl=0:删除该键和值。
- greenChnl=0:删除该键和值。
- blueChnl=0:删除该键和值。
- page id=0:删除该键和值。
- file="x.tga":删除该键和值。
- chars count=216:删除该键和值。
- chnl=15:对每个字符都删除该键和值。
完成后,保存字体描述文件。它现在就可以在《欧陆风云IV》中使用了。
要让新字体可用,需要在模组文件中为它添加一个 .gfx 定义。示例如下:
bitmapfonts = {
bitmapfont = {
name = "monofonto_tooltip"
path = "gfx/fonts/monofonto_tooltip"
color = 0xffffffff
}
}
注意,你可以在字体中加入 textcolors 作用域,来改变本地化中颜色符号的效果:
bitmapfonts = {
bitmapfont = {
name = "monofonto_tooltip"
path = "gfx/fonts/monofonto_tooltip"
color = 0xffffffff
textcolors = {
G = { 86 172 91 }
R = { 222 86 70 }
Y = { 238 201 35 }
H = { 238 203 35 }
T = { 255 255 255 }
}
}
}
如果想更改地图字体,则需要用你自己的字体覆盖 tahoma_60 字体定义。
字距调整
许多字体导出时,字体描述文件中不会包含字距调整(kerning)信息。这可能导致游戏中出现字符重叠,影响美观。要解决这个问题,需要向字体描述文件中添加字距调整信息。
具体做法是:打开字体描述文件,并为每一组字距对按以下格式添加一行:
kerning first=<symbol position> second=<symbol position> amount=<pixel width>
在 BMFont 中,将鼠标悬停在字体画布中的某个符号上时,查看右下角的状态栏即可看到该符号在字体中的位置。
像素数量(amount)是第一个符号与第二个符号之间的间距。
你可能已经意识到,手动创建每一组字距对并不现实。最好使用某种编程语言(例如 Python)来为你生成这些字距调整行。下面是一个可在 Python 3.6 及以上版本中使用的示例脚本:
file = open( "kerning.txt", "wt" )
# 在此填入空白符号位的符号位置。
exclude = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 , 15, 16, 17, 18, 19, 20, 21, 22, 23, 25, 26,
27, 28, 29, 30, 31, 127, 129, 141, 143, 144, 156, 173, 181]
for x in range( 1, 255 ):
for y in range(1, 255):
if x not in exclude:
if y not in exclude:
file.write(f"kerning first={x} second={y} amount=1\n")
file.close()
| 文档 | 效果 • 触发条件 • 修正列表 • 作用域 • 变量 • 本地化 • 可自定义本地化 • 运行文件 • 事件图片列表 |
| 脚本 | 脚本函数 • 顾问 • 时代 • 开局设定 • 建筑 • 宣战理由 • 殖民区域 • 国家创建 • 文化 • 决议 • Defines • 外交行动 • 灾难 • 中华帝国 • 阶层 • 事件 • 派系 • 政府 • 政府互动 • 伟大工程 • 历史 • 神圣罗马帝国 • 理念组 • 思潮 • 佣兵 • 任务树 • 修正 • On Actions • 议会 • 和约 • 君主性格 • 政策 • 叛军类型 • 宗教 • 附属国类型 • 科技 • 贸易公司 • 商品 • 单位 |
| 地图 | 地图 • 地图修改速查 • 随机新世界 • 贸易节点 |
| 图形 | 3D模型 • 界面 • 贴图库 • 字体 • 单位模型 |
| 音频 | 音乐 • 音效 |
| 其他 | 控制台命令 • 校验和 • 模组结构 • 故障排查 • 运行文件 |
| 工具 | 克劳塞维茨开局编辑器 • EU4模组编辑工具 • JoroDox模组制作工具 • The Validator |
| 指南 | 省份 • 地图修改速查 • 存档编辑 • 脚本教程 |