<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Cccc_的小站</title><description>兴趣使然</description><link>https://blog.iscccc.cc/</link><language>zh_CN</language><item><title>记录</title><link>https://blog.iscccc.cc/posts/pin/</link><guid isPermaLink="true">https://blog.iscccc.cc/posts/pin/</guid><pubDate>Thu, 01 Jan 1970 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;你在看什么呢(*/ω＼*)？&lt;/p&gt;
&lt;p&gt;&amp;lt;!-- more --&amp;gt;&lt;/p&gt;
</content:encoded></item><item><title>EU4的Bitmap font字体贴图制作</title><link>https://blog.iscccc.cc/posts/font-bitmap-for-euiv/</link><guid isPermaLink="true">https://blog.iscccc.cc/posts/font-bitmap-for-euiv/</guid><description>在EU4的游玩过程中，你是否会感觉汉化自带的地图字体不够美观？</description><pubDate>Tue, 23 Aug 2022 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;在EU4的游玩过程中，你是否会感觉汉化自带的地图字体不够美观？&lt;/p&gt;
&lt;p&gt;本文就来分享我制作EU4地图字体的经验。可以&lt;a href=&quot;https://paratranz.cn/blog?category=document&quot;&gt;ParaTranz&lt;/a&gt;所给出的文档作为补充，有冲突时请以本文为准&lt;/p&gt;
&lt;h2&gt;字体选择？&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;ParaTranz站长的小贴士：&lt;/p&gt;
&lt;p&gt;建议选择 GBK 字符集的字体，可以从&lt;a href=&quot;http://www.foundertype.com/&quot;&gt;方正字体&lt;/a&gt;的官网上选择一款你喜欢的字体&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;生成地图字体文件&lt;/h2&gt;
&lt;p&gt;下载&lt;a href=&quot;http://www.angelcode.com/products/bmfont/bmfont64_1.14b_beta.zip&quot;&gt;Bitmap font generator&lt;/a&gt;（后文简称bmfont）&lt;/p&gt;
&lt;p&gt;首先打开bmfont，先看到左上角菜单栏的两个选项，我们将依次解释。&lt;/p&gt;
&lt;p&gt;点击Options，会显示出如下选项：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Options&lt;/th&gt;
&lt;th&gt;中文对照&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Font settings&lt;/td&gt;
&lt;td&gt;字体设置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Export option&lt;/td&gt;
&lt;td&gt;导出选项&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visualize&lt;/td&gt;
&lt;td&gt;可视化&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Save bitmap font as...&lt;/td&gt;
&lt;td&gt;保存字体位图为……&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;===&lt;/td&gt;
&lt;td&gt;===&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Abort generation&lt;/td&gt;
&lt;td&gt;停止生成&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;===&lt;/td&gt;
&lt;td&gt;===&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Load configuration&lt;/td&gt;
&lt;td&gt;加载配置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Save configuration as...&lt;/td&gt;
&lt;td&gt;保存配置为……&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;===&lt;/td&gt;
&lt;td&gt;===&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;About...&lt;/td&gt;
&lt;td&gt;关于&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exit&lt;/td&gt;
&lt;td&gt;退出&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;选项解释&lt;/h3&gt;
&lt;h4&gt;Font settings 字体设置&lt;/h4&gt;
&lt;p&gt;首先看到&lt;code&gt;Font settings&lt;/code&gt;：&lt;/p&gt;
&lt;p&gt;在&lt;code&gt;Font graphics&lt;/code&gt;中，&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Font&lt;/code&gt;栏用于指定用于生成贴图的字体，而&lt;code&gt;Add font file&lt;/code&gt;指定用于生成贴图的字体ttf文件，一般而言，我们使用上面这个Font栏指定字体即可，只要是系统安装的字体都在其中&lt;/p&gt;
&lt;p&gt;接着看到&lt;code&gt;Charset&lt;/code&gt;，即字符集，我们选择&lt;code&gt;Unicode&lt;/code&gt;，不用管下面的OEM字符集&lt;/p&gt;
&lt;p&gt;再到&lt;code&gt;Size(px)&lt;/code&gt;，即字符大小。对于地图字体，由于常常需要显示得比较大，因此不建议将这个值设置得太小，在(80,100)之间是我个人比较推荐的，我的系列字体即88px大小。右方有一个&lt;code&gt;Match char height&lt;/code&gt;选项，不必勾选&lt;/p&gt;
&lt;p&gt;下面有一些关于&lt;code&gt;Autofit pages&lt;/code&gt;的选项，我们不需要这个，因为EU4的字符贴图文件似乎只能有一个，因此我们应该尽量使全部字符在一页内生成，所以保留&lt;code&gt;Autofit pages:0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;对于&lt;code&gt;Height %&lt;/code&gt;，我们也是采用默认的100即可（如有需求可以稍微改小一点），右方有&lt;code&gt;Bold&lt;/code&gt;（机器加粗）和&lt;code&gt;Italic&lt;/code&gt;（斜体），均不需勾选&lt;/p&gt;
&lt;p&gt;下面还有两个选项，分别是&lt;code&gt;Output invalid char glyph&lt;/code&gt;和&lt;code&gt;Do not include kerning pairs&lt;/code&gt;，也不需勾选。&lt;/p&gt;
&lt;p&gt;再看到下面的&lt;code&gt;Rasterization&lt;/code&gt;，我们勾选&lt;code&gt;Render from TrueType outline&lt;/code&gt;，&lt;code&gt;TrueType hinting&lt;/code&gt;，&lt;code&gt;Font smoothing&lt;/code&gt;，三项，至于&lt;code&gt;Super sampling&lt;/code&gt;（超级采样），属于可选项，似乎能提高清晰度，但是效果好像不太明显，而且会减慢生成速度，这个就自己看着选择吧，我个人一般不开。&lt;/p&gt;
&lt;p&gt;还有最下方的&lt;code&gt;Effects&lt;/code&gt;，对于&lt;code&gt;Outline thickness&lt;/code&gt;（描边厚度），我这里填0，可以方便后续使用专业工具进行进一步处理。&lt;/p&gt;
&lt;p&gt;完成此页面设置，点击&lt;code&gt;OK&lt;/code&gt;保存。&lt;/p&gt;
&lt;h4&gt;Export Options 导出选项&lt;/h4&gt;
&lt;p&gt;到了&lt;code&gt;Export Options&lt;/code&gt;，我们会发现这个设置就比较复杂了。还是先看到&lt;code&gt;-Layout-&lt;/code&gt;一栏：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Padding&lt;/code&gt;，即字符之间的间距，建议为0到4之间，如果不需要后期处理，那么采用0即可；而如果希望进行一些后期处理（如阴影等），建议调为2~4，注意这个数值可能会影响字体文件理论最小大小。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Spacing&lt;/code&gt;，游戏中体现出来的文字间隔，由于P社有自己的显示方法，这里我们都设为0即可。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Equalize the cell heights&lt;/code&gt;选项，应该是使字符高度相同的意思，没必要勾选。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Force offsets to zero&lt;/code&gt;选项，强制设定偏移量为零，不知道有什么用，我一般不勾。&lt;/p&gt;
&lt;p&gt;再来到下面的&lt;code&gt;-Texture-&lt;/code&gt;栏：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Width&lt;/code&gt;，&lt;code&gt;Height&lt;/code&gt;即输出文件的宽和高，这两个值应为4的整数倍，至于大小则应该视你生成的字符贴图而定，一般来说，我们追求的是让字符在一张贴图中显示的同时尽可能使文件更小一点，这可能就需要几次尝试了（&lt;strong&gt;如要进行后期处理&lt;/strong&gt;，可以考虑将宽设置为&lt;code&gt;6000&lt;/code&gt;，然后将高设置为&lt;code&gt;8000&lt;/code&gt;，在后期进行贴图大小的裁剪）。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Bit depth&lt;/code&gt;，即位深，可以理解为值越大，图像越清晰，这里我们选择32。&lt;/p&gt;
&lt;p&gt;选择&lt;code&gt;Bit depth&lt;/code&gt;为32后，可以看到&lt;code&gt;Pack chars in multiple channels&lt;/code&gt;这个选项，不要勾选这个，接着再往下看。&lt;/p&gt;
&lt;p&gt;下面就是比较重要的设置——ARGB通道的输出。这里我们只浅浅地介绍一下（因为我也不太懂）。&lt;code&gt;Chnl&lt;/code&gt;表示通道，&lt;code&gt;Value&lt;/code&gt;表示输出类型，&lt;code&gt;Invert&lt;/code&gt;可以理解为反色。我们直接看到下面的&lt;code&gt;Presets&lt;/code&gt;，有两种建议的预设，&lt;code&gt;White text with alpha&lt;/code&gt;是带透明的白色字体，而&lt;code&gt;Black text with alpha&lt;/code&gt;则是带透明的黑色字体，一般我们只需要这两种设定就可以了。&lt;/p&gt;
&lt;p&gt;最后，&lt;code&gt;-File format-&lt;/code&gt;：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Font descriptor&lt;/code&gt;选择&lt;code&gt;Text&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Textures&lt;/code&gt;选择&lt;code&gt;dds - DirectDraw Surface&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Compression&lt;/code&gt;建议选择&lt;code&gt;None&lt;/code&gt;，&lt;strong&gt;这是为了后期处理不丢失图像质量&lt;/strong&gt;，但是如果你&lt;strong&gt;并不打算进行任何后期处理&lt;/strong&gt;，那么就请选择&lt;code&gt;DXT3&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;设置完毕后，点击OK保存设置。&lt;/p&gt;
&lt;h4&gt;Visualize 可视化&lt;/h4&gt;
&lt;p&gt;这个其实没什么必要，点击之后会生成图像预览，不如直接导出图像更好。&lt;/p&gt;
&lt;h4&gt;剩余几项……&lt;/h4&gt;
&lt;p&gt;不必多说，看懂中文大概也懂个什么意思了。&lt;/p&gt;
&lt;h3&gt;Edit 编辑&lt;/h3&gt;
&lt;p&gt;这里是关于选择字符的设定。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Edit&lt;/th&gt;
&lt;th&gt;翻译&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;(Un)Select all chars&lt;/td&gt;
&lt;td&gt;（取消）选择全部字符（当前页内的）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Select marked subset(s)&lt;/td&gt;
&lt;td&gt;选择标记的子集&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unselect marked subset(s)&lt;/td&gt;
&lt;td&gt;取消选择标记的子集&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clear all chars in font&lt;/td&gt;
&lt;td&gt;清除字体中所有字符（已选中的）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;===&lt;/td&gt;
&lt;td&gt;===&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Select chars from file&lt;/td&gt;
&lt;td&gt;从文件中选择字符&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;===&lt;/td&gt;
&lt;td&gt;===&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Find next failed character&lt;/td&gt;
&lt;td&gt;查找下一个失败的字符&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clear failed characters&lt;/td&gt;
&lt;td&gt;清除失败的字符&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;===&lt;/td&gt;
&lt;td&gt;===&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open Image Manager&lt;/td&gt;
&lt;td&gt;打开图像管理器（用处似乎不大？）&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;比较重要的选项有：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Select chars from file&lt;/code&gt;可以从一个文本文件（txt）中选中其中的字符，这样就不用手动地一个个选了。注意这个文件的编码应该是 UTF8 with BOM 格式的，否则会识别错乱。可以多次叠加从文件中选中的字符。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Clear all chars in font&lt;/code&gt;清除字体中所有已选中的字符，用于重置已选择的字符。&lt;/p&gt;
&lt;p&gt;其他不多解释。&lt;/p&gt;
&lt;h3&gt;生成字体贴图&lt;/h3&gt;
&lt;p&gt;仔细阅读完以上解释后，确保设置无误，并选中所有你所希望包括的字符。现在请转到菜单栏中&lt;code&gt;Options&lt;/code&gt;的&lt;code&gt;Save bitmap font as..&lt;/code&gt;，我们可以导出字体贴图了。生成文件名请写为&lt;code&gt;zh-hans-map&lt;/code&gt;，以替换汉化文件中的地图字体贴图。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;注意！&lt;/strong&gt;，如果你不打算进行后期处理，或者&lt;code&gt;Export settings&lt;/code&gt;中的&lt;code&gt;Compression&lt;/code&gt;选项不是&lt;code&gt;None&lt;/code&gt;的话，则要控制dds文件的大小，&lt;strong&gt;过大（大约64MB左右）则可能会导致无法显示文字&lt;/strong&gt;。压缩这一步被我放在了后期处理的最后（防止图像丢失过多精度），我们只需要继续跟着下面的步骤。&lt;/p&gt;
&lt;h3&gt;字体图像的后期处理&lt;/h3&gt;
&lt;p&gt;带*号的标题意思是如果你在&lt;code&gt;Export settings&lt;/code&gt;中的&lt;code&gt;Compression&lt;/code&gt;选项不是&lt;code&gt;None&lt;/code&gt;的话，不太建议进行这些操作，因为会损失图像质量。&lt;/p&gt;
&lt;p&gt;这里我们使用 PhotoShop(2023) 进行处理。&lt;/p&gt;
&lt;h4&gt;*阴影&lt;/h4&gt;
&lt;p&gt;使用 PS 打开生成的 zh-hans-map_0.dds 图像，复制一份当前的字体图层，然后右键点击处于下面的图层，打开「混合选项」，勾选「投影」并调整效果。&lt;/p&gt;
&lt;p&gt;推荐基于以下参数进行微调：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在默认参数的基础上：
投影颜色改为灰色（可以在 #444444 的基础上调整）
不透明度改为 60% 以上
距离改为 0
扩展调为 40% 左右
大小调为 2 像素左右&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;注意以上设置仅供参考，可以自己继续研究如何效果更好。&lt;/p&gt;
&lt;p&gt;参数调好之后，确认更改，接下来再观察一下字符之间的阴影是否会重叠，若重叠则会影响字体在游戏中的显示效果，要重新调整阴影参数，或者考虑调整生成字体时的&lt;code&gt;Padding&lt;/code&gt;。达到期望中能接受的效果后，我们在导航栏「文件」-&amp;gt;「导出」-&amp;gt;「快速导出为PNG」中导出字体贴图。&lt;/p&gt;
&lt;h4&gt;*不透明度&lt;/h4&gt;
&lt;p&gt;100%不透明度可能视觉效果上过于突出了，有时候稍微带一点透明的感觉会更好，个人建议设置不透明度为75~85%，这可以在 PS 中操作，但也可以在 GIMP 中操作，看个人习惯了，如有多个图层，记得将图层合并后调整透明度。&lt;/p&gt;
&lt;h4&gt;调整贴图大小&lt;/h4&gt;
&lt;p&gt;我们应该使贴图尽可能的小，个人实践得出的贴图最大大小大概在 64MB 左右，过大则会导致无法显示字体之类的问题。&lt;/p&gt;
&lt;p&gt;调整图像大小的步骤比较简单，这里略去不提，唯一要注意的就是图像宽和高必须是 4 的整数倍。&lt;/p&gt;
&lt;h4&gt;*压缩贴图&lt;/h4&gt;
&lt;p&gt;推荐使用&lt;a href=&quot;https://developer.nvidia.cn/texture-tools-exporter&quot;&gt;NVIDIA Texture Tools Exporter&lt;/a&gt;，导出带Mipmap的压缩dds效果更好。&lt;/p&gt;
&lt;p&gt;我们打开 NVIDIA Texture Tools Exporter，导入所需处理的dds 文件（PS 导出的 png 文件亦可接受），保持其他选项不变，只改动以下提到的选项：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Format&lt;/code&gt;改为&lt;code&gt;BC2&lt;/code&gt;，&lt;code&gt;Mipmap Options&lt;/code&gt;中，&lt;code&gt;Filter Type&lt;/code&gt;可以任选，我个人不太清楚其中差异。&lt;/p&gt;
&lt;p&gt;设置完成后，点击右下角的&lt;code&gt;Save As...&lt;/code&gt;，文件名存为&lt;code&gt;zh-hans-map.dds&lt;/code&gt;，到此，大功即将告成。&lt;/p&gt;
&lt;h4&gt;修改文件名&lt;/h4&gt;
&lt;p&gt;一般来说，bmfont生成的字体贴图dds文件名是 *******_0.dds（*******表示你在bmfont中导出字体贴图所填的文件名），我们将其修改为 zh-hans-map.dds，即去掉&lt;code&gt;_0&lt;/code&gt;，以与汉化文件的文件名保持一致。&lt;/p&gt;
&lt;h3&gt;处理字体描述符文件&lt;/h3&gt;
&lt;p&gt;找到 zh-hans-map.fnt，用功能完备的文本编辑器（如Notepad4，VS Code等，注意&lt;strong&gt;不要使用记事本！&lt;/strong&gt;）打开，&lt;/p&gt;
&lt;p&gt;首先，删除第3、第4行（page 及 chars 定义），以及第2行的&lt;code&gt;packed=0 alphaChnl=0 redChnl=3 greenChnl=3 blueChnl=3&lt;/code&gt;这一段，还有删除第1行的&lt;code&gt;unicode=1&lt;/code&gt;。删除之后每行结尾的&lt;code&gt;chnl=15&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;保存即可。&lt;/p&gt;
&lt;h2&gt;使用&lt;/h2&gt;
&lt;p&gt;直接替换汉化mod中的对应文件，相对位置在 gfx/fonts/zh-hans-map.***(dds/fnt) 中，进入游戏即可生效。&lt;/p&gt;
&lt;p&gt;如果要实现 sub mod 的效果，可以参考我的字体mod的描述符文件。&lt;/p&gt;
&lt;p&gt;感谢你看到这里，欢迎在评论区中交流！&lt;/p&gt;
&lt;h2&gt;附一些字符文件&lt;/h2&gt;
&lt;p&gt;供各位撷取，其中&lt;em&gt;古籍印刷标准字&lt;/em&gt;应该视情况导入（因为包含字符太多，可能导致文件体积过大而无法加载）。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://static.paratranz.cn/media/chars.txt&quot;&gt;ParaTranz所提供的字符文件&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/posts/font-bitmap-for-euiv/1gb_t_12345.txt&quot;&gt;gb_t_12345标准&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/posts/font-bitmap-for-euiv/1gbk.txt&quot;&gt;gbk标准&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/posts/font-bitmap-for-euiv/1gujiyinshua.txt&quot;&gt;古籍印刷标准字&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/posts/font-bitmap-for-euiv/1hanyi_jianfan.txt&quot;&gt;汉仪字库使用字&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/posts/font-bitmap-for-euiv/1tongyong_guifan.txt&quot;&gt;国家通用规范字&lt;/a&gt;&lt;/p&gt;
</content:encoded></item></channel></rss>