字体修改

字体应用于界面中的文本元素。所有字体都位于、也应当放置在/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
指南 省份 • 地图修改速查 • 存档编辑 • 脚本教程