项目场景:
WSL2是支持GUI应用的,而且页面的适配性也不错,很多大厂出的软件基本都没有错位的问题。但是有些时候会出现中文场景下方框的问题,接下来就协助你们解决方框的问题,简单到极点。
问题描述
以Ubuntu-22.04下面安装QQ音乐为例,打开之后可能出现显示各种方框的问题。
原因分析:
这个问题其实就是字体的问题,实测英文没有这个问题,中文有,可能日文或者韩文也有。由于我不用日文和韩文,所以不在讨论范围内。
Ubuntu默认字体:
ls /usr/share/fonts/
truetype
如果你啥字体也没装过,就只有这个文件夹。
ls /usr/share/fonts/truetype/
dejavu freefont ubuntu
下面有3个文件夹,每个文件夹下各有一些字体。但是,有些汉文软件使用的字体这几个文件夹下不包含。
解决方案:
解决方案其实很简单,缺哪个字体就安装哪个字体,不过这里采用暴力操作,直接把Windows11的字体全部安装上,一次性解决掉以后的问题。
首先,在Ubuntu的/usr/share/fonts
下面建立一个windows11
的文件夹。这个文件夹需要root权限
,直接使用sudo创建即可。
sudo mkdir -p /usr/share/fonts/windows11
其次,将Windows11下的字体复制到这个文件夹下面。Windows11的字体在C:\Windows\Fonts
文件夹下面,如果你的Windows11上运行QQ音乐没有方框的话,那么Ubuntu就没有方框,因为Windows11里面有那个字体,如果Windows11也有方框就无效。这个问题一般不会出现。
运行下面的命令,一般C盘都是/mnt/c,除非你的环境配置不对。那也没关系,手动复制进去就好。
sudo cp /mnt/c/Windows/Fonts/* /usr/share/fonts/windows11
效果展示:
一般不用做任何操作重新打开QQ音乐
Linux版就可以恢复正常了。
ls /usr/share/fonts/
truetype windows11
ls /usr/share/fonts/windows11/
8514fix.fon BOOKOS.TTF Inkfree.ttf YuGothM.ttc cga40852.fon couf1255.fon ega80850.fon malgun.ttf segoepr.ttf seriffr.fon sserifeg.fon vga857.fon
8514fixe.fon BOOKOSB.TTF LeelUIsl.ttf YuGothR.ttc cga40857.fon couf1256.fon ega80852.fon malgunbd.ttf segoeprb.ttf serifft.fon sserifer.fon vga860.fon
8514fixg.fon BOOKOSBI.TTF LeelaUIb.ttf app775.fon cga40866.fon couf1257.fon ega80857.fon malgunsl.ttf segoesc.ttf simfang.ttf sserifet.fon vga861.fon
8514fixr.fon BOOKOSI.TTF LeelawUI.ttf app850.fon cga40869.fon cour.ttf ega80866.fon marlett.ttf segoescb.ttf simhei.ttf sseriff.fon vga863.fon
8514fixt.fon BSSYM7.TTF MTCORSVA.TTF app852.fon cga40woa.fon courbd.ttf ega80869.fon micross.ttf segoeui.ttf simkai.ttf sseriffe.fon vga865.fon
8514oem.fon CENTURY.TTF MTEXTRA.TTF app855.fon cga80737.fon courbi.ttf ega80woa.fon mingliub.ttc segoeuib.ttf simsun.ttc sseriffg.fon vga866.fon
8514oeme.fon Candara.ttf Nirmala.ttf app857.fon cga80850.fon coure.fon fms_metadata.xml mmrtext.ttf segoeuii.ttf simsunb.ttf sseriffr.fon vga869.fon
8514oemg.fon Candarab.ttf NirmalaB.ttf app866.fon cga80852.fon couree.fon framd.ttf mmrtextb.ttf segoeuil.ttf smae1255.fon sserifft.fon vga932.fon
8514oemr.fon Candarai.ttf NirmalaS.ttf app932.fon cga80857.fon coureg.fon framdit.ttf modern.fon segoeuisl.ttf smae1256.fon svgafix.fon vga936.fon
8514oemt.fon Candaral.ttf REFSAN.TTF app936.fon cga80866.fon courer.fon gadugi.ttf monbaiti.ttf segoeuiz.ttf smae1257.fon svgasys.fon vga949.fon
8514sys.fon Candarali.ttf REFSPCL.TTF app949.fon cga80869.fon couret.fon gadugib.ttf msgothic.ttc seguibl.ttf smaf1255.fon sylfaen.ttf vga950.fon
8514syse.fon Candaraz.ttf SIMLI.TTF app950.fon cga80woa.fon courf.fon georgia.ttf msjh.ttc seguibli.ttf smaf1256.fon symbol.ttf vgaf1255.fon
8514sysg.fon DUBAI-BOLD.TTF SIMYOU.TTF arial.ttf comic.ttf courfe.fon georgiab.ttf msjhbd.ttc seguiemj.ttf smaf1257.fon tahoma.ttf vgaf1256.fon
8514sysr.fon DUBAI-LIGHT.TTF STCAIYUN.TTF arialbd.ttf comicbd.ttf courfg.fon georgiai.ttf msjhl.ttc seguihis.ttf smalle.fon tahomabd.ttf vgaf1257.fon
8514syst.fon DUBAI-MEDIUM.TTF STFANGSO.TTF arialbi.ttf comici.ttf courfr.fon georgiaz.ttf msyh.ttc seguili.ttf smallee.fon taile.ttf vgaf874.fon
85775.fon DUBAI-REGULAR.TTF STHUPO.TTF ariali.ttf comicz.ttf courft.fon h8514fix.fon msyhbd.ttc seguisb.ttf smalleg.fon taileb.ttf vgafix.fon
85855.fon DejaVuSansMono-BoldOblique_0.ttf STKAITI.TTF ariblk.ttf consola.ttf couri.ttf h8514oem.fon msyhl.ttc seguisbi.ttf smaller.fon times.ttf vgafixe.fon
85f1255.fon DejaVuSansMono-Bold_0.ttf STLITI.TTF bahnschrift.ttf consolab.ttf cvgafix.fon h8514sys.fon msyi.ttf seguisli.ttf smallet.fon timesbd.ttf vgafixg.fon
85f1256.fon DejaVuSansMono-Oblique_0.ttf STSONG.TTF c8514fix.fon consolai.ttf cvgasys.fon himalaya.ttf mvboli.ttf seguisym.ttf smallf.fon timesbi.ttf vgafixr.fon
85f1257.fon DejaVuSansMono_0.ttf STXIHEI.TTF c8514oem.fon consolaz.ttf desktop.ini holomdl2.ttf ntailu.ttf sere1255.fon smallfe.fon timesi.ttf vgafixt.fon
85f874.fon Deng.ttf STXINGKA.TTF c8514sys.fon constan.ttf dos737.fon hvgafix.fon ntailub.ttf sere1256.fon smallfg.fon trebuc.ttf vgaoem.fon
85s1255.fon Dengb.ttf STXINWEI.TTF calibri.ttf constanb.ttf dos869.fon hvgasys.fon pala.ttf sere1257.fon smallfr.fon trebucbd.ttf vgas1255.fon
85s1256.fon Dengl.ttf STZHONGS.TTF calibrib.ttf constani.ttf dosapp.fon impact.ttf palab.ttf serf1255.fon smallft.fon trebucbi.ttf vgas1256.fon
85s1257.fon FZSTK.TTF SansSerifCollection.ttf calibrii.ttf constanz.ttf ebrima.ttf j8514fix.fon palabi.ttf serf1256.fon ssee1255.fon trebucit.ttf vgas1257.fon
85s874.fon FZYTK.TTF SegUIVar.ttf calibril.ttf corbel.ttf ebrimabd.ttf j8514oem.fon palai.ttf serf1257.fon ssee1256.fon verdana.ttf vgas874.fon
ANTQUAB.TTF GARA.TTF SegoeIcons.ttf calibrili.ttf corbelb.ttf ega40737.fon j8514sys.fon phagspa.ttf serife.fon ssee1257.fon verdanab.ttf vgasys.fon
ANTQUABI.TTF GARABD.TTF SitkaVF-Italic.ttf calibriz.ttf corbeli.ttf ega40850.fon javatext.ttf phagspab.ttf serifee.fon ssee874.fon verdanai.ttf vgasyse.fon
ANTQUAI.TTF GARAIT.TTF SitkaVF.ttf cambria.ttc corbell.ttf ega40852.fon jsmalle.fon roman.fon serifeg.fon ssef1255.fon verdanaz.ttf vgasysg.fon
ARIALN.TTF GOTHIC.TTF StaticCache.dat cambriab.ttf corbelli.ttf ega40857.fon jsmallf.fon s8514fix.fon serifer.fon ssef1256.fon vga737.fon vgasysr.fon
ARIALNB.TTF GOTHICB.TTF WINGDNG2.TTF cambriai.ttf corbelz.ttf ega40866.fon jvgafix.fon s8514oem.fon serifet.fon ssef1257.fon vga775.fon vgasyst.fon
ARIALNBI.TTF GOTHICBI.TTF WINGDNG3.TTF cambriaz.ttf coue1255.fon ega40869.fon jvgasys.fon s8514sys.fon seriff.fon ssef874.fon vga850.fon webdings.ttf
ARIALNI.TTF GOTHICI.TTF YuGothB.ttc cga40737.fon coue1256.fon ega40woa.fon l_10646.ttf script.fon seriffe.fon sserife.fon vga852.fon wingding.ttf
BKANT.TTF Gabriola.ttf YuGothL.ttc cga40850.fon coue1257.fon ega80737.fon lucon.ttf segmdl2.ttf seriffg.fon sserifee.fon vga855.fon
理论上,直接复制进去就可以,不用执行其他操作。我的电脑是这样的,如果你的还没有恢复,试试清除字体缓存
。
总结:
方法很暴力,但是贼好用。