Noto Sans CJK otf格式的问题
-
- 帖子: 1
- 注册时间: 2017-05-21 19:38
- 系统: Debian
Noto Sans CJK otf格式的问题
OS: Debian Testing
DE: Mate 1.16
没有用官方源中的TTC格式的字体,而是从Google官方下载的NotoSansCJKcs.OTF,结果发现字体无法加载。有没有人遇到过类似的问题?
使用官方OTF的目的有两个,一个是我发现OTF的渲染效果更好一点,其次是源中的TTC格式需要fontconfig中重新排定优先级,否则根据字母排序jp日本汉字先出来。
DE: Mate 1.16
没有用官方源中的TTC格式的字体,而是从Google官方下载的NotoSansCJKcs.OTF,结果发现字体无法加载。有没有人遇到过类似的问题?
使用官方OTF的目的有两个,一个是我发现OTF的渲染效果更好一点,其次是源中的TTC格式需要fontconfig中重新排定优先级,否则根据字母排序jp日本汉字先出来。
- AutoXBC
- 帖子: 1744
- 注册时间: 2007-10-23 12:54
Re: Noto Sans CJK otf格式的问题
用 Kubuntu 17.04 测试了一下,Google 官方下载版没有问题,可以正常使用。注意自行添加字体后,应该手动刷新字体缓存
https://packages.debian.org/sid/all/fon ... k/filelist
其中明确说明安装目录是 /usr/share/fonts/opentype/noto/
如下命令的输出
如上,下载版和仓库版并无实质不同。从 noto 开发的初衷看,应该用其覆盖所有文字,才能达成无豆腐块。所以,推荐继续用仓库中的版本,并调节 fontconfig 将 Noto Sans CJK SC 置于优先位置。
代码: 全选
fc-cache -fv
ttc 是一种字体容器格式,并不是字体本身的格式。字体本身分为 TrueType 和 OpenType,Noto 的 otf 下载版是 OpenType 格式,同时 Debian 源中的 ttc 容器包含的字体也是 OpenType 格式。以下可以佐证:我发现OTF的渲染效果更好一点
https://packages.debian.org/sid/all/fon ... k/filelist
其中明确说明安装目录是 /usr/share/fonts/opentype/noto/
如下命令的输出
CFF 是基于 OpenType 的压缩字体。我觉得所谓 otf 效果更好应该是错觉,希望你贴图证明。$fc-match -v 'Microsoft Yahei' | grep format
fontformat: "TrueType"(w)
$fc-match -v 'Noto Sans CJK SC' | grep format
fontformat: "CFF"(w)
Google 的官方下载版文件 NotoSansCJKsc-hinted.zip 如其文件名说言,仅仅包含 Noto Sans CJK SC 和 Noto Sans Mono CJK SC 两个简体中文字体,如此才不需要调节 fontconfig 中的字体顺序;而 Debian 源中的 fonts-noto-cjk_1.004+repack2-2_all.deb 同时包含了 CJK 国际区中的简体中文,繁体中文,韩文,日文。所以,所谓下载版不需要调节字体顺序,是以无法使用繁体中文,韩文,日文字体为代价的,并不是下载版有什么魔法。源中的TTC格式需要fontconfig中重新排定优先级,否则根据字母排序jp日本汉字先出来
如上,下载版和仓库版并无实质不同。从 noto 开发的初衷看,应该用其覆盖所有文字,才能达成无豆腐块。所以,推荐继续用仓库中的版本,并调节 fontconfig 将 Noto Sans CJK SC 置于优先位置。
- Ping-Wu
- 帖子: 1822
- 注册时间: 2012-11-14 9:34
- 系统: Debian 12
Re: Noto Sans CJK otf格式的问题
我看了一下Ubuntu Mate 17.04里的 69-language-selector-zh-cn.conf 档案,发现还是有点乱,而且也没有考虑到noto serif字体: 是否有好的建议让我们试试去改善?AutoXBC 写了:用 Kubuntu 17.04 测试了一下,Google 官方下载版没有问题,可以正常使用。注意自行添加字体后,应该手动刷新字体缓存代码: 全选
fc-cache -fv
ttc 是一种字体容器格式,并不是字体本身的格式。字体本身分为 TrueType 和 OpenType,Noto 的 otf 下载版是 OpenType 格式,同时 Debian 源中的 ttc 容器包含的字体也是 OpenType 格式。以下可以佐证:我发现OTF的渲染效果更好一点
https://packages.debian.org/sid/all/fon ... k/filelist
其中明确说明安装目录是 /usr/share/fonts/opentype/noto/
如下命令的输出CFF 是基于 OpenType 的压缩字体。我觉得所谓 otf 效果更好应该是错觉,希望你贴图证明。$fc-match -v 'Microsoft Yahei' | grep format
fontformat: "TrueType"(w)
$fc-match -v 'Noto Sans CJK SC' | grep format
fontformat: "CFF"(w)
Google 的官方下载版文件 NotoSansCJKsc-hinted.zip 如其文件名说言,仅仅包含 Noto Sans CJK SC 和 Noto Sans Mono CJK SC 两个简体中文字体,如此才不需要调节 fontconfig 中的字体顺序;而 Debian 源中的 fonts-noto-cjk_1.004+repack2-2_all.deb 同时包含了 CJK 国际区中的简体中文,繁体中文,韩文,日文。所以,所谓下载版不需要调节字体顺序,是以无法使用繁体中文,韩文,日文字体为代价的,并不是下载版有什么魔法。源中的TTC格式需要fontconfig中重新排定优先级,否则根据字母排序jp日本汉字先出来
如上,下载版和仓库版并无实质不同。从 noto 开发的初衷看,应该用其覆盖所有文字,才能达成无豆腐块。所以,推荐继续用仓库中的版本,并调节 fontconfig 将 Noto Sans CJK SC 置于优先位置。
上次由 Ping-Wu 在 2017-05-22 7:27,总共编辑 1 次。
- AutoXBC
- 帖子: 1744
- 注册时间: 2007-10-23 12:54
Re: Noto Sans CJK otf格式的问题
如果可以修改上游项目 fontconfig,改进 69-language-selector-zh-cn.conf 的内容,我建议写成这个顺序,其他字体一律不写Ping-Wu 写了:我看了一下Ubuntu Mate 17.04里的 69-language-selector-zh-cn.conf 档案,发现还是有点乱,而且也没有考虑到noto sans-serif字体,是否有好的建议让我们试试去改善?
动不了 fontconfig,我希望某个桌面套件或者发行版出个前端工具,让用户选择首选西文字体,首选中文字体,然后生成配置文件,可以迅速解决绝大多数用户的疑问。DejaVu
Noto
什么都动不了的话,只能自行写 ~/.fonts.conf,衬线非衬线等宽一共就需要写 6 行,其他删除。这个位置优先级最高,升级也不会覆盖,写完一劳永逸。
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<match target="pattern">
<test name="family" qual="any">
<string>serif</string>
</test>
<edit name="family" binding="strong" mode="prepend">
<string>DejaVu Serif</string>
<string>Microsoft YaHei</string>
</edit>
</match>
<match target="pattern">
<test name="family" qual="any">
<string>sans-serif</string>
</test>
<edit name="family" binding="strong" mode="prepend">
<string>DejaVu Sans</string>
<string>Microsoft YaHei</string>
</edit>
</match>
<match target="pattern">
<test name="family" qual="any">
<string>monospace</string>
</test>
<edit name="family" binding="strong" mode="prepend">
<string>DejaVu Sans Mono</string>
<string>Microsoft YaHei</string>
</edit>
</match>
<dir>~/.fonts</dir>
<match target="font">
<edit name="rgba" mode="assign">
<const>rgb</const>
</edit>
</match>
<match target="font">
<edit name="hinting" mode="assign">
<bool>true</bool>
</edit>
</match>
<match target="font">
<edit name="hintstyle" mode="assign">
<const>hintfull</const>
</edit>
</match>
<match target="font">
<edit name="antialias" mode="assign">
<bool>true</bool>
</edit>
</match>
</fontconfig>
- Ping-Wu
- 帖子: 1822
- 注册时间: 2012-11-14 9:34
- 系统: Debian 12
Re: Noto Sans CJK otf格式的问题
我第一次把话讲错了,真的是太对不起Ubuntu的中文开发亲们!AutoXBC 写了:如果可以修改上游项目 fontconfig,改进 69-language-selector-zh-cn.conf 的内容,我建议写成这个顺序,其他字体一律不写Ping-Wu 写了:我看了一下Ubuntu Mate 17.04里的 69-language-selector-zh-cn.conf 档案,发现还是有点乱,而且也没有考虑到noto sans-serif字体,是否有好的建议让我们试试去改善?动不了 fontconfig,我希望某个桌面套件或者发行版出个前端工具,让用户选择首选西文字体,首选中文字体,然后生成配置文件,可以迅速解决绝大多数用户的疑问。DejaVu
Noto
什么都动不了的话,只能自行写 ~/.fonts.conf,衬线非衬线等宽一共就需要写 6 行,其他删除。这个位置优先级最高,升级也不会覆盖,写完一劳永逸。
在69-language-selector-xx-xx.conf 之后,有一个 70-fonts-noto-cjk.conf 档案,专门处理 noto 字体。
在Ubuntu Mate 17.04里,所有的中文衬线(serif)字体,都由非衬线(sans-serif)Noto字体取代:
代码: 全选
<match target="pattern">
<test name="lang">
<string>zh-cn</string>
</test>
<test name="family">
<string>serif</string>
</test>
<edit name="family" mode="prepend">
<string>Noto Sans CJK SC</string>
</edit>
</match>
71-fonts-noto-cjk-serif.conf
代码: 全选
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="pattern">
<test name="lang">
<string>zh-cn</string>
</test>
<test name="family">
<string>serif</string>
</test>
<edit name="family" mode="prepend">
<string>Noto Serif CJK SC</string>
</edit>
</match>
<match target="pattern">
<test name="lang">
<string>zh-tw</string>
</test>
<test name="family">
<string>serif</string>
</test>
<edit name="family" mode="prepend">
<string>Noto Serif CJK TC</string>
</edit>
</match>
</fontconfig>
衬线(serif): 非衬线(sans-serif): 对我个人来讲,因为看惯了手机里的非衬线字型,衬线字型读起来很不习惯。
因此,Ubuntu的做法,把衬线中文字型用非衬线NotoCJK字型显示,是正确的。
- AutoXBC
- 帖子: 1744
- 注册时间: 2007-10-23 12:54
Re: Noto Sans CJK otf格式的问题
Debian 系中没有打包 Noto Serif CJK 分支,写这个配置的话,要手动去 Google 的页面下载衬线字体。Ping-Wu 写了:如果我们一定要使用serif字体的话,可以在 /etc/fonts/conf.d 里,加一个像下面这么一个档案
- Ping-Wu
- 帖子: 1822
- 注册时间: 2012-11-14 9:34
- 系统: Debian 12
Re: Noto Sans CJK otf格式的问题
另外讲一个我们自己的经验。浏览网页,用非衬线字体,但是在办公室做文书处理时,却必须使用到衬线字体。下面是两种字体,在LibreOffice(5.3.0 可携带版)里做比较: 别的不说,打印非衬线字体的文件时,墨水没有几天就用完了。这是像我这种做老板的人最关心的事,但一般Linux支持者(Linux enthusiasts)根本不会去注意这些非技术上的事。Ping-Wu 写了:衬线(serif)跟非衬线(sans-serif)的比较,可以由底下所附的两个截图参考:
衬线(serif):
非衬线(sans-serif):
对我个人来讲,因为看惯了手机里的非衬线字型,衬线字型读起来很不习惯。
因此,Ubuntu的做法,把衬线中文字型用非衬线NotoCJK字型显示,是正确的。
-
- 帖子: 14
- 注册时间: 2011-04-10 21:08
Re: Noto Sans CJK otf格式的问题
Debian 9 源中的ttc格式似乎没有 hint 信息? 我用下来也感觉不如 google 官方的美观。Ubuntu有没有重新打过包不清楚。
-
- 帖子: 14
- 注册时间: 2011-04-10 21:08
Re: Noto Sans CJK otf格式的问题
我相信这些问题楼主应该都明白,他也说了为什么用官方字体的原因,一个有hint,另一个是省去做 fontconfig 配置,字体体积也较小吧。楼主的问题重点其实应该是:Mate桌面环境下为什么 google 官方的 otf 都是 blank box,桌面上无法显示字体,而源中的ttc格式却是正常的。阁下是否知道其中缘由呢?AutoXBC 写了:用 Kubuntu 17.04 测试了一下,Google 官方下载版没有问题,可以正常使用。注意自行添加字体后,应该手动刷新字体缓存代码: 全选
fc-cache -fv
ttc 是一种字体容器格式,并不是字体本身的格式。字体本身分为 TrueType 和 OpenType,Noto 的 otf 下载版是 OpenType 格式,同时 Debian 源中的 ttc 容器包含的字体也是 OpenType 格式。以下可以佐证:我发现OTF的渲染效果更好一点
https://packages.debian.org/sid/all/fon ... k/filelist
其中明确说明安装目录是 /usr/share/fonts/opentype/noto/
如下命令的输出CFF 是基于 OpenType 的压缩字体。我觉得所谓 otf 效果更好应该是错觉,希望你贴图证明。$fc-match -v 'Microsoft Yahei' | grep format
fontformat: "TrueType"(w)
$fc-match -v 'Noto Sans CJK SC' | grep format
fontformat: "CFF"(w)
Google 的官方下载版文件 NotoSansCJKsc-hinted.zip 如其文件名说言,仅仅包含 Noto Sans CJK SC 和 Noto Sans Mono CJK SC 两个简体中文字体,如此才不需要调节 fontconfig 中的字体顺序;而 Debian 源中的 fonts-noto-cjk_1.004+repack2-2_all.deb 同时包含了 CJK 国际区中的简体中文,繁体中文,韩文,日文。所以,所谓下载版不需要调节字体顺序,是以无法使用繁体中文,韩文,日文字体为代价的,并不是下载版有什么魔法。源中的TTC格式需要fontconfig中重新排定优先级,否则根据字母排序jp日本汉字先出来
如上,下载版和仓库版并无实质不同。从 noto 开发的初衷看,应该用其覆盖所有文字,才能达成无豆腐块。所以,推荐继续用仓库中的版本,并调节 fontconfig 将 Noto Sans CJK SC 置于优先位置。
-
- 帖子: 14
- 注册时间: 2011-04-10 21:08
Re: Noto Sans CJK otf格式的问题
我也遇到这样的问题了,你是直接从 Google 的下载的 Super OTC 格式的文件吧?解压到 /usr/share/fonts/opentype/noto/ 后,请确认下字体文件的 permission,很可能是 other 用户没有设置 read 权限,这样非 root 就无法访问这个字体文件了。`sudo chmod o+r *.ttc` 就搞定了。