綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[作業系統] 用 DOSBox-X 製作的完美 WIN 3.1 中文版,懷舊收藏用 130MB

  [複製連結] 查看: 34123|回覆: 383|好評: 0
121
Wengier | 收聽TA | 只看該作者
發表於 2021-11-6 04:08
本帖最後由 Wengier 於 2021-11-6 04:22 編輯
happygo88 發表於 2021-11-5 16:41
感謝詳細的說明.

試了網上的神器 FontCreator 多個版本,

关于你的问题,原因其实很简单,就是wt028.ttf等字形并非等宽字型(monospaced font),而DOSBox-X对等宽字形的支持最好。其实之前DOSBox-X Wiki中也提到过建议使用等宽TTF字型,这是由于作为DOS模拟器的特性造成的。非等宽字形并非不支持,但会出现某些反效果比如你说的宽度拉长。非等宽字形由于每个字元所占用的宽度未必一致,而DOS屏幕在标准的80x25模式下固定为每行80个字元,这样基本上不可能做到每行整齐排列80个字元。你说的Notepad显示正常,是因为Notepad中并没有强制每行必须多少个字元的限制,所以是否等宽可以说无所谓。但DOS则不同,每行的字元数是固定的,如果使用非等宽字形的话,显示难度可想而知。所以还是强烈建议使用等宽TTF字形。

关于当前视窗大小,可以用config -get windowheight和config -get windowwidth命令分别得到目前的DOS屏幕高度和宽度,以及用config -get screenheight和config -get screenwidth命令分别得到电脑屏幕的高度和宽度。前两者的乘积除以后两者的乘积并向上取整就是winperc选项的值所需要的百分比。可以建个批次档自动得到,存入配置档即可。见图:

評分

參與人數 3碎鑽 +2 幫助 +3 收起 理由
donation12 + 1 偶像,看完你的內容,讓我找到了活著的意義.
luelue666 + 1 + 1 非常讃
happygo88 + 1 + 1 讚一個!

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

122
happygo88 | 收聽TA | 只看該作者
發表於 2021-11-6 13:44
Wengier 發表於 2021-11-6 04:08
关于你的问题,原因其实很简单,就是wt028.ttf等字形并非等宽字型(monospaced font),而DOSBox-X对等宽字 ...

1.
原來是 等寬字型 的原因.

看 DosBox-X 是否能如我前面所說,
當視窗變成奇怪的長方形,
程式內部自動修改視窗高度讓視窗接近正方形.
(仍然是 80x25 而忽略字高)

2.
依你的批次檔結果,
我再去設定 winperc 確實有效.

如果 config -set winperc=N 能立刻生效就完美了.

例:
A.TTF 已先用批次檔求出最佳 winperc A 值
B.TTF 已先用批次檔求出最佳 winperc B 值
C.TTF 已先用批次檔求出最佳 winperc C 值

A.bat
config -set font=A.TTF
config -set winperc=A

B.bat
config -set font=B.TTF
config -set winperc=B

C.bat
config -set font=C.TTF
config -set winperc=C

如果 winperc 能立刻生效,
就能立刻切換 TTF 且 有合適的視窗大小,
如果 DosBox-X 能將前面的問題 1. 解決,
就不用這麼麻煩了.


用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

123
Wengier | 收聽TA | 只看該作者
發表於 2021-11-6 15:05
本帖最後由 Wengier 於 2021-11-6 15:27 編輯
happygo88 發表於 2021-11-6 13:44
1.
原來是 等寬字型 的原因.

对于你的问题1,对于非等宽字型再调整,这个非常困难,接近不可能,唯一的办法是特意做padding,这样的话其实设置成全屏幕模式就好了,用padding方式填充整个屏幕,而且config -set fullscreen=true命令是可以立刻生效的。

对于你的问题2 ,解决方法其实非常简单,即使是用现有版本,虽然config -set winperc=不立刻生效,但是交换一下两条命令,先config -set winperc=A然后再config -set font=A.TTF,这样后一条命令可以强制让前一个命令亦立刻生效!见图:

(当然下一个版本会直接让ptsize/winperc亦立即生效)

評分

參與人數 3碎鑽 +2 幫助 +3 收起 理由
donation12 + 1 偶像,看完你的內容,讓我找到了活著的意義.
luelue666 + 1 + 1 非常讃
happygo88 + 1 + 1 讚一個!

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

124
happygo88 | 收聽TA | 只看該作者
發表於 2021-11-6 15:54
Wengier 發表於 2021-11-6 15:05
对于你的问题1,对于非等宽字型再调整,这个非常困难,接近不可能,唯一的办法是特意做padding,这样的话 ...

Wengier>對於非等寬字型再調整,這個非常困難,接近不可能,
Wengier>config -set fullscreen=true 命令是可以立刻生效的。

全螢幕就不了,
失去了 Windows 的優點.

Wengier>對於你的問題2 ,解決方法其實非常簡單

還真的可以.

這表示設定 font,程式還會變更其它的設定,而不是只單純設定 font.
這樣就可以有自動化的切換,這個就很實用.

Wengier>當然下一個版本會直接讓 ptsize/winperc 亦立即生效)

這樣就可暫解 非等寬字型 問題.

另外:

1.
通常 DosBox-X 的更新週期是多久有更新 ?
我到時再去檢視.

2.
由於 Setup.exe 預設為 SDL1,
我想一般人也是安裝 SDL1,
還是建議 F11+上 及 F11+下 能改的好按.

應該是 按住 F11 不放再按 上上上上上上,這樣能連續調整,
應該是 按住 F11 不放再按 下下下下下下,這樣能連續調整.

大概沒其它的問題了.

非常的感謝.


用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

125
happygo88 | 收聽TA | 只看該作者
發表於 2021-11-6 16:42
本帖最後由 happygo88 於 2021-11-6 16:48 編輯
Wengier 發表於 2021-11-6 15:05
对于你的问题1,对于非等宽字型再调整,这个非常困难,接近不可能,唯一的办法是特意做padding,这样的话 ...

剛試了下:

手打 沒問題.

config -set WinPerc=28
再打
config -set font=Font01.ttf
視窗大小會變 也會 變換字型.

直接執行批次檔:

@echo off
config -set WinPerc=28
config -set font=Font01.ttf

指令 WinPerc 無效,執行時無法改變

視窗大小不會變 但會 變換字型.

>This property cannot be changed at runtime.




用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

126
Wengier | 收聽TA | 只看該作者
發表於 2021-11-7 04:04
本帖最後由 Wengier 於 2021-11-7 06:14 編輯
happygo88 發表於 2021-11-6 16:42
剛試了下:

用 手打 沒問題.

我看了一下,并不是手打可以放批次档中就不行,而是选项的大小写问题。注意你打的是config -set WinPerc=...,这个我试了无论是手打还是在批次档中都不行(见图),解决方法很简单,就是把WinPerc改为winperc,或者把-set改为-setf即强制设置即可。任何"此属性不能在执行时变更"这样的提示只要用-setf都不会出现,所以-setf是万能设置法,但跟-set一样仍然并非所有选项都会立即生效。

DOSBox-X正常情况下是每个月的1号出新版本,所以下个版本应该在12月1日。但是如果你等不及的话可以直接下载允许config -set winperc=命令立即生效的新版本(该版本亦允许config -set WinPerc=这样的大小写区分),把我之前发的更新包(在第5页)中的dosbox-x-update改为dosbox-x-sdl2-update即可,因为是SDL2版本。SDL1版本的话处理F11这样的连续按键是有些不灵活,这可能要改SDL1库本身才行。

評分

參與人數 3碎鑽 +2 幫助 +3 收起 理由
donation12 + 1 偶像,看完你的內容,讓我找到了活著的意義.
luelue666 + 1 + 1 非常讃
happygo88 + 1 + 1 讚一個!

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

127
happygo88 | 收聽TA | 只看該作者
發表於 2021-11-7 16:04
Wengier 發表於 2021-11-7 04:04
我看了一下,并不是手打可以放批次档中就不行,而是选项的大小写问题。注意你打的是config -set WinPerc=. ...

1.
我已下載 V0.83.20 SDL2 測試,
已解決上述所有問題.

發現一個問題,

[sdl]
output            = surface

執行 ET3/ET24 時,視窗不會置中,會偏一邊,特別是 ET24,
但若
output            = ttf 視窗就會置中.

V0.83.19 SDL1 設為 surface/ttf 都沒問題,
但 V0.83.20 SDL2 有問題.

2.
Wengier>并不是手打可以放批次档中就不行,而是选项的大小写问题。

哇,這很不好.
以 DOS 的使用習慣是不分大小寫的.

另外 Config 中的

windowresolution
usesystemcursor

這種寫法不易讀,
改成如下就易讀.

WindowResolution
UseSystemCursor

而 Config 中的

clip_mouse_button
mouse_wheel_key

這種寫法也是易讀,也可以.

而手打是因為加快打字速度,所以一律用小寫.

所以我建議 DosBox-X

A.
官方的 Config 中的所有設定,都改為 WindowResolution 之類的易讀,
或 clip_mouse_button 之類的也可以.

B.
所有指令及設定不區分大小寫,
因這是 DOS 使用習慣.

C.
我覺的區分 -set 及 -setf 有點多餘,
何不就一個 -set 取代


用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

128
Wengier | 收聽TA | 只看該作者
發表於 2021-11-7 17:09
本帖最後由 Wengier 於 2021-11-7 17:13 編輯
happygo88 發表於 2021-11-7 16:04
1.
我已下載 V0.83.20 SDL2 測試,
已解決上述所有問題.

首先,很高兴看到你说已解决上述所有问题。

关于output=surface,我想说,我自己从来不用surface,也不推荐别人使用。在所有的output选项中,surface是档次最低的一个,自己也确实没有时间去认真研究这种很不常见的问题,也许其他开发人员有兴趣可以去研究。如果实在要居中屏幕,任何时候(不管是TTF还是别的输出选项)打config -set windowposition=即可(见图)。但个人仍然不推荐使用surface选项。

关于选项大小写,我给你发的新版本中用config -set WinPerc=是可以的。但是DOSBox-X现有的配置选项极多,现在已经不太可能将以前的选项一一更名,反正config -set现在已不区别大小写,在启动DOSBox-X时的dosbox-x -set也一样,你想打WinPerc之类的都是可以的。关于-set及-setf,因为部分选项根本就不可能在运行时改变,所以当不能改变时有个提示还是比没有提示好(虽然目前有些没有提示的选项亦无法立即生效,但这是应该以后慢慢修正的)。你说何不就一个-set取代,你的意思是打该选项后不管是否生效都不要有提示,那你打-setf就可以了,正可以实现你所说的功能。

另外我看到本版块中有人发了很多OTF字型,DOSBox-X的TTF输出是支持OTF字型的,所以也不妨试试看。

評分

參與人數 3碎鑽 +2 幫助 +3 收起 理由
donation12 + 1 偶像,看完你的內容,讓我找到了活著的意義.
luelue666 + 1 + 1 非常讃
happygo88 + 1 + 1 讚一個!

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

129
happygo88 | 收聽TA | 只看該作者
發表於 2021-11-7 18:31
本帖最後由 happygo88 於 2021-11-7 18:38 編輯
Wengier 發表於 2021-11-7 17:09
首先,很高兴看到你说已解决上述所有问题。

关于output=surface,我想说,我自己从来不用surface,也不推 ...

Wengier>关于output=surface,我想说,我自己从来不用surface,也不推荐别人使用。

在 7-8 年前使用 DOSBox SVN Daum 沒問題就一直延用.

在我 12 年老 PC 上,
CPU: Intel Q8400 2.6GHz 4 核
RAM: 12 GB
OS : Windows 7 X64

DOSBox-X 執行 ET24

output=ttf     畫面會閃且較慢
output=surface 畫面不會閃且較快

所以我的 DOSBox-X 有 2 個批次檔

output=surface
K:DOSBOX-XDosBox-X_ET24.bat

output=ttf
K:DOSBOX-XDosBox-X_ET24_TTF.bat

Wengier>如果实在要居中屏幕,任何时候(不管是TTF还是别的输出选项)
Wengier>打 config -set windowposition= 即可

我的 Config 已經是 windowposition=
V0.83.19 SDL1 設為 surface/ttf 都沒問題,
所以表示 V0.83.20 SDL2 並沒有讓 Config 中的 windowposition= 有作用,
手打 config -set windowposition= 是可以有作用

Wengier>但是 DOSBox-X 现有的配置选项极多,现在已经不太可能将以前的选项一一更名

你誤會了,
我指的是 官方的 3 個檔案的內容:
dosbox-x.conf 和 dosbox-x.reference.conf 和 dosbox-x.reference.full.conf
fullresolution    改為 FullResolution
windowresolution  改為 WindowResolution
.....
.....
.....
不是更名,
而是增加檔案的易讀性.

Wengier>关于-set及-setf,因为部分选项根本就不可能在运行时改变
Wengier>你说何不就一个-set取代,你的意思是打该选项后不管是否生效都不要有提示,
Wengier>那你打-setf就可以了,正可以实现你所说的功能。

簡單說:

-set 程式碼刪除
-setf 程式碼改名為 -set

另外,
我前面所說的:
所有指令及設定不區分大小寫,
因這是 DOS 使用習慣.
我指的是
由於你有更新 setsize winperc 等,
會不會只改到 setsize winperc 這 2 個而以,
其它所有指令及設定會不會也有這種情況 ?




用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

130
Wengier | 收聽TA | 只看該作者
發表於 2021-11-8 09:13
happygo88 發表於 2021-11-7 18:31
Wengier>关于output=surface,我想说,我自己从来不用surface,也不推荐别人使用。

在 7-8 年前使用 DOSB ...

我想你大概误解我的意思了,我是说DOSBox-X支持很多输出选项,除了TTF外还有direct3d、opengl、openglpp等(openglpp即pixel-perfect的OpenGL模式),而surface是档次最低的一个。比方说direct3d、opengl输出选项均支持不同的shaders(D3D shaders或GLSL shaders等),而surface什么也不支持。即使在DOSBox SVN Daum中,surface也同样是档次最低的,相比direct3d之类的输出选项而言。不知道你为何使用surface输出选项。如果你说的问题仅仅在surface输出时才出现,我就不想改了,但我后来自己研究了下SDL2版中在非TTF的其它输出选项下同样也出现,于是决定修正。你重新下载dosbox-x-sdl2-update包即可。
你说用TTF开启ET24时画面会短暂闪烁,这是由于输出模式自动改变形成的,是正常现象。如果你不希望出现这个过程的话,在TTF批次档中加一行config -set output=...(=号后留空也可以)即可,毕竟output选项是可以在命令行上修改的。至于你说的选项易读性问题,这个可以慢慢改,但目前还没有其他人提出该问题,所以你自己在配置档中改也行。我给你发的新版的config -set对于任何配置选项都不区分大小写,而不光是ptsize或winperc。

关于-set及-setf,我觉得将-set程式码完全删除不好,但我修改了一下,改成当提示“此屬性不能在執行時變更”时,下行继续询问“是否要立即重開以套用設定 [Y/N]?”(见图)。这样的话使用者就明白该选项是不可能立刻生效的,但DOSBox-X允许自动重开以套用新的设定。如果你不希望询问这个而是只设置不生效,那就用-setf,毕竟感觉-set这种方式更加user-friendly。上面的新版已包括此修改。

評分

參與人數 3碎鑽 +2 幫助 +3 收起 理由
donation12 + 1 偶像,看完你的內容,讓我找到了活著的意義.
luelue666 + 1 + 1 非常讃
happygo88 + 1 + 1 讚一個!

查看全部評分

用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則