libreoffice 列表样式出现乱码字符

OOo,TeX,KO,ABI,GIMP,Picasa,ProE,QCAD,Inkscape,Kicad,Eagle
回复
zrqlx126
帖子: 387
注册时间: 2007-06-22 18:52

libreoffice 列表样式出现乱码字符

#1

帖子 zrqlx126 » 2021-03-15 9:30

以前很少用列表样式,从来没有注意过列表样式的问题。今天写文件偶然用到列表样式,发现我的libreoffice默认文档列表样式里有符号列表样式显示乱码。但是经过测试,发现该符号使用的是libreoffice自带的OpenSymbol符号字体,符号列表样式是可以正常在文档显示的,但是无论在样式框中是预览还是不预览,均会出现符号乱码。不知是我的系统这样,还是都这样?
下面是测试截图,注意红框部分的变化。
2021-03-15_09-23.png
2021-03-15_09-24.png
zrqlx126
帖子: 387
注册时间: 2007-06-22 18:52

Re: libreoffice 列表样式出现乱码字符

#2

帖子 zrqlx126 » 2021-03-15 19:15

经过测试,应该是我的系统添加了部分字体造成的字体匹配问题。在我的系统中删除fonts-arphic-uming和fonts-arphic-ukai这两个字体包,同时删除自行添加的細明體和Segoe UI符号字体后,全部显示正常。
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: libreoffice 列表样式出现乱码字符

#3

帖子 astolia » 2021-03-16 9:43

用fontconfig设置调整一下字体匹配优先级应该就可以了
头像
驿窗project
帖子: 228
注册时间: 2019-01-17 12:17
系统: Arch/Debian
联系:

Re: libreoffice 列表样式出现乱码字符

#4

帖子 驿窗project » 2021-03-19 11:01

优先级的概念是指什么?UI使用字体时先用哪个后用哪个?
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: libreoffice 列表样式出现乱码字符

#5

帖子 astolia » 2021-03-19 13:00

驿窗project 写了: 2021-03-19 11:01 优先级的概念是指什么?UI使用字体时先用哪个后用哪个?
差不多吧,就是当你指定用某个字体名字时,fontconfig会按自己的匹配规则按匹配度从高到低生成一个列表,需要用到具体的字符时,会逐个检查选用包含这个字符的字体文件。用fc-match可以查看这个列表。在fontconfig的配置里可以手动将指定的一些字体放到列表最前方
头像
驿窗project
帖子: 228
注册时间: 2019-01-17 12:17
系统: Arch/Debian
联系:

Re: libreoffice 列表样式出现乱码字符

#6

帖子 驿窗project » 2021-03-19 20:52

我试了一下,运行fc-match 会显示NotoSansCJKsc-Regular.otf: " Noto Sans CJK SC" "Regular"

不过,打开 /etc/fonts/fonts.conf 文件后,找不到 <string>zh</string> 这样的参数~

我参考了这个:
https://wiki.archlinux.org/index.php/Fo ... D.E7.BD.AE

http://www.jinbuguo.com/gui/fonts.conf.xml

是不是我缺少了什么步骤?

Debian/buster gnome
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: libreoffice 列表样式出现乱码字符

#7

帖子 astolia » 2021-03-19 23:44

驿窗project 写了: 2021-03-19 20:52 我试了一下,运行fc-match 会显示NotoSansCJKsc-Regular.otf: " Noto Sans CJK SC" "Regular"
你都不看一下fc-match有哪些参数的吗?不带参数运行只会输出不指定字体名时最先匹配的字体
驿窗project 写了: 2021-03-19 20:52 不过,打开 /etc/fonts/fonts.conf 文件后,找不到 <string>zh</string> 这样的参数~
默认的基础配置里本来就不会有针对特点语言特定字体的设定,要么是特定字体自带的设定会放到/etc/fonts/conf.d/下面,要么根据自己的实际情况自己动手写
arch的那篇wiki年久失修,充斥着大量错误,fontconfig早就对一个test里多个string的写法报warning了。随便从里面的示例抓段来解释

代码: 全选

  <match>
    <test qual="any" name="family">
      <string>serif</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Serif</string>
    </edit>
  </match>
这段的大致意思是,如果程序指定了要用serif字体,fontconfig会把Noto Serif放到匹配列表的最前面。可以用fc-match -s serif来看,如果当前系统上安装了Noto Serif字体,那么在没有其他设定的情况下,Noto Serif肯定是排第一位的
头像
驿窗project
帖子: 228
注册时间: 2019-01-17 12:17
系统: Arch/Debian
联系:

Re: libreoffice 列表样式出现乱码字符

#8

帖子 驿窗project » 2021-03-22 9:20

我花点时间研究一下,之前没遇到过问题;对于某些用户来说,fontconfig肯定会用到~
zrqlx126
帖子: 387
注册时间: 2007-06-22 18:52

Re: libreoffice 列表样式出现乱码字符

#9

帖子 zrqlx126 » 2021-03-22 13:37

此问题就是字体匹配的问题。在原版ubuntu中首选字体,查看/conf.d/69-language-selector-zh-cn.conf字体配置文件,你会发现sans首选字体为Noto Sans CJK SC字体,属于noto字体家族中的简体中文字符,由于google在思源字体的基础上进行了修改,字符编码非常正规,没有出现覆盖其他字符编码的情况,所以这样是没有问题的。但是libreoffice自带的OpenSymbol符号字体,与文鼎的字体的部分字符编码却出现了重复的情况。仔细查看了文鼎字体的编码覆盖发现,文鼎的字体在港台字符区域(AR PL UMing HK)与libreoffice在带OpenSymbol符号字体出现了重复,按照字体匹配规则,在首选字体无法索引的情况下,会寻找下一个字体文件,就找到了AR PL UMing HK字体,从而在简体中文环境下就将“”显示为“玘”字。
fontconfig 字体匹配可以查看金步国的作品http://www.jinbuguo.com/gui/fonts.conf.html
我的匹配办法简单粗暴,将首选字体选为需要的英文字体,如DejaVu Sans,次选Noto Sans CJK SC字体,再次字体为OpenSymbol符号字体。这样就解决了这问题。
下面是代码和匹配过程。

代码: 全选

mkdir -p ~/.config/fontconfig
cat > ~/.config/fontconfig/fonts.conf << 'EOF'
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
	<match target="pattern">
		<test name="lang">
			<string>zh-cn</string>
		</test>
		<test qual="any" name="family">
			<string>sans-serif</string>
		</test>
		<edit name="family" mode="prepend" binding="strong">
			<string>DejaVu Sans</string>
			<string>Noto Sans CJK SC</string>
			<string>OpenSymbol</string>
		</edit>
	</match>
</fontconfig>
EOF

代码: 全选

$ fc-match -s 
DejaVuSans.ttf: "DejaVu Sans" "Book"
DejaVuSans-Bold.ttf: "DejaVu Sans" "Bold"
NotoSansCJK-Regular.ttc: "Noto Sans CJK SC" "Regular"
opens___.ttf: "OpenSymbol" "Regular"
......
头像
Ping-Wu
帖子: 1822
注册时间: 2012-11-14 9:34
系统: Debian 12

Re: libreoffice 列表样式出现乱码字符

#10

帖子 Ping-Wu » 2021-03-22 14:27

太复杂(太偏了),这么重要的问题为什么不赵规矩在 /etc/fonts/conf.d 里修改呢?

有时间再聊一下,不过我在 Debian 11 的预设环境值下没有发现这个问题:
2021-03-21 20-15-59屏幕截图.png
倒是有其他的问题,有时间再谈。

在 Debian 11 里,有关繁体,简体,日,韩文的 fontconfig 档案已全部合并为 70-fonts-noto-cjk.conf,越简单越好!Ubuntu (20.04)里,有关中文的fontconfig 档案就有5个,包括简体(zh_cn,“69-language-selector-zh-cn.conf”),繁体(zh_tw),香港(zh_hk),澳门(zh_mo),星加坡(zh_sg)(想搞中国分裂啊?),里面的内容也是乱七八糟,这是好几年来累积下来的垃圾,没有人去处理。我不知道 Ubuntu 21.04 的状况如何,不过 Ubuntu 是 Debian 的衍生版,应该也会照着做吧?
上次由 Ping-Wu 在 2021-03-23 10:09,总共编辑 1 次。
头像
驿窗project
帖子: 228
注册时间: 2019-01-17 12:17
系统: Arch/Debian
联系:

Re: libreoffice 列表样式出现乱码字符

#11

帖子 驿窗project » 2021-03-23 10:03

/etc/fonts/conf.d ?

我一直以为fontconf才是正确的设置入口~
头像
astolia
论坛版主
帖子: 6703
注册时间: 2008-09-18 13:11

Re: libreoffice 列表样式出现乱码字符

#12

帖子 astolia » 2021-03-23 10:59

驿窗project 写了: 2021-03-23 10:03 /etc/fonts/conf.d ?

我一直以为fontconf才是正确的设置入口~
man fonts.conf中SYNOPSIS和FILES小节中有说明的
头像
Ping-Wu
帖子: 1822
注册时间: 2012-11-14 9:34
系统: Debian 12

Re: libreoffice 列表样式出现乱码字符

#13

帖子 Ping-Wu » 2021-03-24 2:41

我玩了一下今天刚刚出炉的 Fedora 34 beta,处理LZ这个问题的程度没有 Debian 11 那么彻底:
Screenshot from 2021-03-23 08-37-31.jpg
相比之下,Debian 11 就显得较 professional 了:

图片

下面是 Ubuntu 21.04 的截图,还是没有弄干净:
Screenshot from 2021-03-23 17-20-27.jpg
头像
驿窗project
帖子: 228
注册时间: 2019-01-17 12:17
系统: Arch/Debian
联系:

Re: libreoffice 列表样式出现乱码字符

#14

帖子 驿窗project » 2021-03-24 13:07

Fedora好像主要面向开发人员,不像Debian那样面向普通用户~
回复