railmapgen / rmp

Design your own rail map by freely dragging stations from different cities and connecting them with 135-degree rounded corners or perpendicular lines!
https://railmapgen.github.io/?app=rmp
GNU General Public License v3.0
85 stars 16 forks source link

对于JR风格车站,对中文简体字符提供同等的字体支持 #577

Closed harry-xi closed 6 months ago

harry-xi commented 6 months ago

image 我理解我或许应该使用繁體字或者日语字符,但是让简体字能正常使用会带来不小的便利

或完全支持自定义字体,这是另一个可接受的解决方案。 事实上,我在想,该项目能否提供一些更高阶的自定义功能,比如自行添加线条和站点样式。

thekingofcity commented 6 months ago

嗨,只要您的操作系统中有简体字字体,那么应该会在提供的日语字体不存在某一字符时自动使用。关于自定义字体的更多信息,参见 #575。关于自行添加车站和线段样式,欢迎参考新建车站教程新建线段样式教程 :)

harry-xi commented 6 months ago

1.本issus是在期待简体中文字符能和其他日文/繁体字符在同一字体下渲染。

2.关于自定义字体,我们事实上期待项目支持使用“由用户提供或指定”的字体进行渲染。支持从CDN引入一个字体,并应用于样式似乎不存在太大的挑战。

thekingofcity commented 6 months ago

嗨,目前的对策仍然是仅提供车站所展示语言之字体。毕竟无法满足所有语言用户的需求,不可能为任何一种车站预先准备好各种语言的字体。例如如果泰国用户需要在车站名称中输入泰文,那么一定是回落到他/她系统中的泰文字体上。

对于这一特定汉字,可以使用这个异体字来替换,这可能需要您有一定的日语知识,亦或是向大语言模型求助。

另外,支持使用“由用户提供或指定”的字体进行渲染这或许具有一定实现的吸引力,不过在正式打算实现之前,仍有一些开放问题仍待讨论。比如说用户指定的CDN链接是否保存在作品中?如果不保存的话,在分享作品的时候,其他用户将无法看到作者所想展示正确样式。如果保存的话,如何保证此链接指向的文件一直存在?如何保证不同地区的用户都能访问并正确的加载此字体资源?另外,或许仅从类名到字体家族名再到字体资源这一条单向指定字体可能相对简单,如果用户需要对指定节点中的制定某几个字符设置特定的字体又如何?需要支持这一层级的自定义字体似乎不存在太小的努力即可实现。

我认为,如果一个普通用户可以正确并轻松地找到一个CDN的合法可被正确加载的字体,那么简单地在浏览器开发者工具中替换页面中字体家族名所指向的资源应该也不存在太大的挑战。亦或是可以在导出的svg文件中批量替换字体家族名后再使用第三方工具加载svg和字体后生成图片应该也不存在太大的挑战。

总之,即使从CDN引入一个字体,并应用于样式不存在太大的挑战。这仍然是一个需要仔细思考的功能,并需要广泛的讨论和充足的时间。这恰恰是当前核心贡献者所力所不能及或缺少的。不过幸运的是,这是一个开源项目,任何有想法并有能力实现此功能的贡献者都可以提交他/她所希望的合并请求,我想这会大大促进这一功能进入主线分支的进展 :)

harry-xi commented 6 months ago

0.感谢分享直接通过开发者工具替换字体的思路,于我而言,该issue所指的具体问题已经解决。谢谢。 1.为什么我期待扩展日文字体支持:日文和中文具有不小范围的重叠,会造成部分字符回退部分字符未回退的状态,这是我提出该问题缘由。尤其是考虑到本项目有相当数量的简体中文用户。 2.提供一个全局选项,指导完全使用浏览器默认字体渲染是否可能如果可能,该功能事实上对我的具体问题的解决一样有很大帮助。

harry-xi commented 6 months ago

0.感谢分享直接通过开发者工具替换字体的思路,于我而言,该issue所指的具体问题已经解决。谢谢。 1.为什么我期待扩展日文字体支持:日文和中文具有不小范围的重叠,会造成部分字符回退部分字符未回退的状态,这是我提出该问题缘由。尤其是考虑到本项目有相当数量的简体中文用户。 2.提供一个全局选项,指导完全使用浏览器默认字体渲染是否可能如果可能,该功能事实上对我的具体问题的解决一样有很大帮助。

补充一点,我发现导出的SVG似乎并没有正确使用RMG项目的字体,而在使用浏览器默认字体进行渲染

thekingofcity commented 6 months ago

嗨,很高兴看到问题被解决了。您提到的导出svg及图片时未正确使用日文字体的问题已在 #583 中被解决,顺带这一更新也切换了字体为M+,它为更接近JR东所使用的新ゴ字体。如此一来,简体中文字符提供同等支持即为不太可能的事情了,毕竟日文字体并不会为简体中文字符绘制。有关新ゴ及其类似字体,可参考这几篇内容 1 3。如果您有更好的免费字体推荐,也欢迎回复。

另外,完全使用操作系统所提供的字体渲染是完全有可能的。您可以在开发者工具中删去css中的字体家族名即可,之后我们也会提供不携带字体的导出方式 :)